#!/usr/bin/python
+# encoding: utf-8
# Setup file for dulwich
-# Copyright (C) 2008-2011 Jelmer Vernooij <jelmer@samba.org>
+# Copyright (C) 2008-2016 Jelmer Vernooij <jelmer@jelmer.uk>
try:
from setuptools import setup, Extension
except ImportError:
from distutils.core import setup, Extension
+ has_setuptools = False
+else:
+ has_setuptools = True
from distutils.core import Distribution
+import os
+import sys
-dulwich_version_string = '0.9.8'
+dulwich_version_string = '0.19.6'
include_dirs = []
# Windows MSVC support
-import os
-import sys
-if sys.platform == 'win32':
+if sys.platform == 'win32' and sys.version_info[:2] < (3, 6):
+ # Include dulwich/ for fallback stdint.h
include_dirs.append('dulwich')
return True
def has_ext_modules(self):
- return not self.pure and not '__pypy__' in sys.modules
+ return not self.pure
global_options = Distribution.global_options + [
('pure', None, "use pure Python code instead of C "
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
['/usr/bin/xcodebuild', '-version'], stdout=subprocess.PIPE,
stderr=subprocess.PIPE, env={})
out, err = p.communicate()
- for l in out.splitlines():
- l = l.decode("utf8")
+ for line in out.splitlines():
+ line = line.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:
+ if (line.startswith('Xcode') and
+ int(line.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_kwargs = {}
+
+if has_setuptools:
+ setup_kwargs['extras_require'] = {
+ 'fastimport': ['fastimport'],
+ 'https': ['urllib3[secure]>=1.21'],
+ }
+ setup_kwargs['install_requires'] = ['urllib3>=1.21', 'certifi']
+ setup_kwargs['include_package_data'] = True
+ setup_kwargs['test_suite'] = 'dulwich.tests.test_suite'
+ setup_kwargs['tests_require'] = tests_require
+
setup(name='dulwich',
- description='Python Git Library',
- keywords='git',
version=dulwich_version_string,
- url='https://samba.org/~jelmer/dulwich',
- license='GPLv2 or later',
- author='Jelmer Vernooij',
- author_email='jelmer@samba.org',
- 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'],
+ license='Apachev2 or later or GPLv2',
+ 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 :: GNU General Public License v2 or later (GPLv2+)',
- 'Programming Language :: Python :: 2.7',
- 'Operating System :: POSIX',
- 'Topic :: Software Development :: Version Control',
- ],
- 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),
- ],
- test_suite='dulwich.tests.test_suite',
- tests_require=['fastimport', 'mock', 'gevent', 'geventhttpclient'],
+ ext_modules=ext_modules,
distclass=DulwichDistribution,
- include_package_data=True,
- use_2to3=True,
- convert_2to3_doctests=['../docs/*', '../docs/tutorial/*', ],
+ **setup_kwargs
)