Get PyAFS to build on Linux.
authorEvan Broder <broder@mit.edu>
Sun, 4 Jan 2009 03:34:43 +0000 (22:34 -0500)
committerEvan Broder <broder@mit.edu>
Sun, 15 Mar 2009 06:30:45 +0000 (02:30 -0400)
I'm...not even entirely sure what all I had to do here.

Signed-off-by: Evan Broder <broder@mit.edu>

setup.py

index b0dbe5b..2a66b67 100755 (executable)
--- a/setup.py
+++ b/setup.py
@@ -17,8 +17,22 @@ include_dirs = [os.path.join(os.path.dirname(__file__), 'afs'),
                 '%s/include' % root]
 library_dirs = ['%s/lib' % root,
                 '%s/lib/afs' % root]
-libraries = ['bos', 'volser', 'vldb', 'afsrpc', 'afsauthent', 'cmd',
-             'usd', 'audit', 'resolv', 'com_err']
+libraries = ['bos', 'volser', 'vldb', 'afsrpc', 'afsauthent', 'cmd', 'usd',
+             'audit', 'util',
+             'util', 'afsrpc', 'util',
+             'util', 'afsauthent', 'util',
+             'resolv']
+extra_objects = []
+define_macros = [('AfS_PTHREAD_ENV', None)]
+
+for i, l in enumerate(libraries):
+    if l in ('util', 'vlib') and \
+            not os.path.exists('%s/lib/afs/lib%s.a' % (root, l)):
+        libraries.pop(i)
+        extra_objects.append('%s/lib/afs/%s.a' % (root, l))
+    elif l == 'com_err':
+        libraries.pop(i)
+        extra_objects.append('%s/lib/afs/libcom_err.a')
 
 setup(
     name="PyAFS",
@@ -34,7 +48,9 @@ setup(
                   ["afs/_pts.pyx"],
                   libraries=libraries,
                   include_dirs=include_dirs,
-                  library_dirs=library_dirs)
+                  library_dirs=library_dirs,
+                  extra_objects=extra_objects,
+                  define_macros=define_macros)
         ],
     cmdclass= {"build_ext": build_ext}
 )