forked from jelmer/dulwich
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup.py
executable file
·111 lines (92 loc) · 3.71 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/usr/bin/python
# encoding: utf-8
# Setup file for dulwich
# Copyright (C) 2008-2016 Jelmer Vernooij <[email protected]>
try:
from setuptools import setup, Extension
except ImportError:
from distutils.core import setup, Extension
from distutils.core import Distribution
import os
import sys
dulwich_version_string = '0.17.4'
include_dirs = []
# Windows MSVC support
if sys.platform == 'win32' and sys.version_info[:2] < (3, 6):
# Include dulwich/ for fallback stdint.h
include_dirs.append('dulwich')
class DulwichDistribution(Distribution):
def is_pure(self):
if self.pure:
return True
def has_ext_modules(self):
return not self.pure
global_options = Distribution.global_options + [
('pure', None, "use pure Python code instead of C "
"extensions (slower on CPython)")]
pure = False
if sys.platform == 'darwin' and os.path.exists('/usr/bin/xcodebuild'):
# XCode 4.0 dropped support for ppc architecture, which is hardcoded in
# distutils.sysconfig
import subprocess
p = subprocess.Popen(
['/usr/bin/xcodebuild', '-version'], stdout=subprocess.PIPE,
stderr=subprocess.PIPE, env={})
out, err = p.communicate()
for l in out.splitlines():
l = l.decode("utf8")
# Also parse only first digit, because 3.2.1 can't be parsed nicely
if l.startswith('Xcode') and int(l.split()[1].split('.')[0]) >= 4:
os.environ['ARCHFLAGS'] = ''
tests_require = ['fastimport']
if '__pypy__' not in sys.modules and not sys.platform == 'win32':
tests_require.extend([
'gevent', 'geventhttpclient', 'mock', 'setuptools>=17.1'])
ext_modules = [
Extension('dulwich._objects', ['dulwich/_objects.c'],
include_dirs=include_dirs),
Extension('dulwich._pack', ['dulwich/_pack.c'],
include_dirs=include_dirs),
Extension('dulwich._diff_tree', ['dulwich/_diff_tree.c'],
include_dirs=include_dirs),
]
setup(name='dulwich',
description='Python Git Library',
keywords='git',
version=dulwich_version_string,
url='https://www.dulwich.io/',
license='Apachev2 or later or GPLv2',
author='Jelmer Vernooij',
author_email='[email protected]',
long_description="""
Python implementation of the Git file formats and protocols,
without the need to have git installed.
All functionality is available in pure Python. Optional
C extensions can be built for improved performance.
The project is named after the part of London that Mr. and Mrs. Git live
in in the particular Monty Python sketch.
""",
packages=['dulwich', 'dulwich.tests', 'dulwich.tests.compat',
'dulwich.contrib'],
package_data={'': ['../docs/tutorial/*.txt']},
scripts=['bin/dulwich', 'bin/dul-receive-pack', 'bin/dul-upload-pack'],
classifiers=[
'Development Status :: 4 - Beta',
'License :: OSI Approved :: Apache Software License',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy',
'Operating System :: POSIX',
'Operating System :: Microsoft :: Windows',
'Topic :: Software Development :: Version Control',
],
ext_modules=ext_modules,
test_suite='dulwich.tests.test_suite',
tests_require=tests_require,
distclass=DulwichDistribution,
include_package_data=True,
)