Get PyAFS to build on Linux.
[invirt/packages/python-afs.git] / setup.py
1 #!/usr/bin/python
2
3 from setuptools import setup, find_packages
4 from distutils.extension import Extension
5 from Cython.Distutils import build_ext
6 import sys
7 import os
8
9 for root in ['/Library/OpenAFS/Tools',
10              '/usr/local',
11              '/usr/afsws',
12              '/usr']:
13     if os.path.exists('%s/include/afs/afs.h' % root):
14         break
15
16 include_dirs = [os.path.join(os.path.dirname(__file__), 'afs'),
17                 '%s/include' % root]
18 library_dirs = ['%s/lib' % root,
19                 '%s/lib/afs' % root]
20 libraries = ['bos', 'volser', 'vldb', 'afsrpc', 'afsauthent', 'cmd', 'usd',
21              'audit', 'util',
22              'util', 'afsrpc', 'util',
23              'util', 'afsauthent', 'util',
24              'resolv']
25 extra_objects = []
26 define_macros = [('AfS_PTHREAD_ENV', None)]
27
28 for i, l in enumerate(libraries):
29     if l in ('util', 'vlib') and \
30             not os.path.exists('%s/lib/afs/lib%s.a' % (root, l)):
31         libraries.pop(i)
32         extra_objects.append('%s/lib/afs/%s.a' % (root, l))
33     elif l == 'com_err':
34         libraries.pop(i)
35         extra_objects.append('%s/lib/afs/libcom_err.a')
36
37 setup(
38     name="PyAFS",
39     version="0.0.0",
40     description="PyAFS - Python bindings for AFS",
41     author="Evan Broder",
42     author_email="broder@mit.edu",
43     license="GPL",
44     requires=['Cython'],
45     packages=find_packages(),
46     ext_modules=[
47         Extension("afs._pts",
48                   ["afs/_pts.pyx"],
49                   libraries=libraries,
50                   include_dirs=include_dirs,
51                   library_dirs=library_dirs,
52                   extra_objects=extra_objects,
53                   define_macros=define_macros)
54         ],
55     cmdclass= {"build_ext": build_ext}
56 )