Add basic Index object based on libgit2.
[jelmer/dulwich-libgit2.git] / setup.py
index bd037394ff4a0cb7ea9d59bfd05f222a2cdf22e1..fb5dd0fc36ccd78eb2e3d2632bee9ce14f67feef 100755 (executable)
--- a/setup.py
+++ b/setup.py
@@ -7,6 +7,7 @@ try:
 except ImportError:
     from distutils.core import setup, Extension
 from distutils.core import Distribution
+import commands
 
 dulwich_version_string = '0.7.0'
 
@@ -17,6 +18,17 @@ if sys.platform == 'win32':
     include_dirs.append('dulwich')
 
 
+def pkgconfig(*packages, **kw):
+    flag_map = {'-I': 'include_dirs', '-L': 'library_dirs', '-l': 'libraries'}
+    (exitstatus, text) = commands.getstatusoutput("pkg-config --libs --cflags %s" % ' '.join(packages))
+    if exitstatus != 0:
+        raise Exception("Unable to find %s" % " ".join(packages))
+    for token in text.split():
+        kw.setdefault(flag_map.get(token[:2]), []).append(token[2:])
+    assert isinstance(kw, dict)
+    return kw
+
+
 class DulwichDistribution(Distribution):
 
     def is_pure(self):
@@ -32,7 +44,7 @@ class DulwichDistribution(Distribution):
 
     pure = False
 
-        
+
 setup(name='dulwich',
       description='Pure-Python Git Library',
       keywords='git',
@@ -50,10 +62,12 @@ setup(name='dulwich',
       packages=['dulwich', 'dulwich.tests'],
       scripts=['bin/dulwich', 'bin/dul-daemon', 'bin/dul-web'],
       ext_modules = [
+          Extension('dulwich._index', ['dulwich/_index.c'],
+                    **pkgconfig("libgit2", include_dirs=include_dirs)),
           Extension('dulwich._objects', ['dulwich/_objects.c'],
-                    include_dirs=include_dirs),
+                    **pkgconfig("libgit2", include_dirs=include_dirs)),
           Extension('dulwich._pack', ['dulwich/_pack.c'],
-              include_dirs=include_dirs),
+                   **pkgconfig("libgit2", include_dirs=include_dirs)),
           ],
       distclass=DulwichDistribution,
       )