3 # Setup file for dulwich
4 # Copyright (C) 2008-2016 Jelmer Vernooij <jelmer@jelmer.uk>
7 from setuptools import setup, Extension
9 from distutils.core import setup, Extension
10 has_setuptools = False
13 from distutils.core import Distribution
17 dulwich_version_string = '0.19.6'
20 # Windows MSVC support
21 if sys.platform == 'win32' and sys.version_info[:2] < (3, 6):
22 # Include dulwich/ for fallback stdint.h
23 include_dirs.append('dulwich')
26 class DulwichDistribution(Distribution):
32 def has_ext_modules(self):
35 global_options = Distribution.global_options + [
36 ('pure', None, "use pure Python code instead of C "
37 "extensions (slower on CPython)")]
42 if sys.platform == 'darwin' and os.path.exists('/usr/bin/xcodebuild'):
43 # XCode 4.0 dropped support for ppc architecture, which is hardcoded in
47 ['/usr/bin/xcodebuild', '-version'], stdout=subprocess.PIPE,
48 stderr=subprocess.PIPE, env={})
49 out, err = p.communicate()
50 for line in out.splitlines():
51 line = line.decode("utf8")
52 # Also parse only first digit, because 3.2.1 can't be parsed nicely
53 if (line.startswith('Xcode') and
54 int(line.split()[1].split('.')[0]) >= 4):
55 os.environ['ARCHFLAGS'] = ''
57 tests_require = ['fastimport']
60 if '__pypy__' not in sys.modules and not sys.platform == 'win32':
61 tests_require.extend([
62 'gevent', 'geventhttpclient', 'mock', 'setuptools>=17.1'])
66 Extension('dulwich._objects', ['dulwich/_objects.c'],
67 include_dirs=include_dirs),
68 Extension('dulwich._pack', ['dulwich/_pack.c'],
69 include_dirs=include_dirs),
70 Extension('dulwich._diff_tree', ['dulwich/_diff_tree.c'],
71 include_dirs=include_dirs),
77 setup_kwargs['extras_require'] = {
78 'fastimport': ['fastimport'],
79 'https': ['urllib3[secure]>=1.21'],
81 setup_kwargs['install_requires'] = ['urllib3>=1.21', 'certifi']
82 setup_kwargs['include_package_data'] = True
83 setup_kwargs['test_suite'] = 'dulwich.tests.test_suite'
84 setup_kwargs['tests_require'] = tests_require
88 version=dulwich_version_string,
89 license='Apachev2 or later or GPLv2',
90 packages=['dulwich', 'dulwich.tests', 'dulwich.tests.compat',
92 package_data={'': ['../docs/tutorial/*.txt']},
93 scripts=['bin/dulwich', 'bin/dul-receive-pack', 'bin/dul-upload-pack'],
94 ext_modules=ext_modules,
95 distclass=DulwichDistribution,