Add basic Index object based on libgit2.
[jelmer/dulwich-libgit2.git] / setup.py
1 #!/usr/bin/python
2 # Setup file for dulwich
3 # Copyright (C) 2008-2010 Jelmer Vernooij <jelmer@samba.org>
4
5 try:
6     from setuptools import setup, Extension
7 except ImportError:
8     from distutils.core import setup, Extension
9 from distutils.core import Distribution
10 import commands
11
12 dulwich_version_string = '0.7.0'
13
14 include_dirs = []
15 # Windows MSVC support
16 import sys
17 if sys.platform == 'win32':
18     include_dirs.append('dulwich')
19
20
21 def pkgconfig(*packages, **kw):
22     flag_map = {'-I': 'include_dirs', '-L': 'library_dirs', '-l': 'libraries'}
23     (exitstatus, text) = commands.getstatusoutput("pkg-config --libs --cflags %s" % ' '.join(packages))
24     if exitstatus != 0:
25         raise Exception("Unable to find %s" % " ".join(packages))
26     for token in text.split():
27         kw.setdefault(flag_map.get(token[:2]), []).append(token[2:])
28     assert isinstance(kw, dict)
29     return kw
30
31
32 class DulwichDistribution(Distribution):
33
34     def is_pure(self):
35         if self.pure:
36             return True
37
38     def has_ext_modules(self):
39         return not self.pure
40
41     global_options = Distribution.global_options + [
42         ('pure', None, 
43             "use pure (slower) Python code instead of C extensions")]
44
45     pure = False
46
47
48 setup(name='dulwich',
49       description='Pure-Python Git Library',
50       keywords='git',
51       version=dulwich_version_string,
52       url='http://samba.org/~jelmer/dulwich',
53       download_url='http://samba.org/~jelmer/dulwich/dulwich-%s.tar.gz' % dulwich_version_string,
54       license='GPLv2 or later',
55       author='Jelmer Vernooij',
56       author_email='jelmer@samba.org',
57       long_description="""
58       Simple Pure-Python implementation of the Git file formats and
59       protocols. Dulwich is the place where Mr. and Mrs. Git live
60       in one of the Monty Python sketches.
61       """,
62       packages=['dulwich', 'dulwich.tests'],
63       scripts=['bin/dulwich', 'bin/dul-daemon', 'bin/dul-web'],
64       ext_modules = [
65           Extension('dulwich._index', ['dulwich/_index.c'],
66                     **pkgconfig("libgit2", include_dirs=include_dirs)),
67           Extension('dulwich._objects', ['dulwich/_objects.c'],
68                     **pkgconfig("libgit2", include_dirs=include_dirs)),
69           Extension('dulwich._pack', ['dulwich/_pack.c'],
70                    **pkgconfig("libgit2", include_dirs=include_dirs)),
71           ],
72       distclass=DulwichDistribution,
73       )