1273c26a3SBaptiste Daroussintry: 2273c26a3SBaptiste Daroussin from setuptools import setup, Extension 3*2cd8c2e5SBaptiste Daroussin # setuptools doesn't support template param for MANIFEST.in 4*2cd8c2e5SBaptiste Daroussin from setuptools.command.egg_info import manifest_maker 5*2cd8c2e5SBaptiste Daroussin manifest_maker.template = 'python/MANIFEST.in' 6273c26a3SBaptiste Daroussinexcept ImportError: 739ee7a7aSBaptiste Daroussin from distutils.core import setup, Extension 8273c26a3SBaptiste Daroussin 939ee7a7aSBaptiste Daroussinimport os 10273c26a3SBaptiste Daroussinimport sys 1139ee7a7aSBaptiste Daroussin 12*2cd8c2e5SBaptiste DaroussinLIB_ROOT = os.path.abspath(os.path.join(__file__, os.pardir, os.pardir)) 13*2cd8c2e5SBaptiste Daroussinif os.getcwd() != LIB_ROOT: 14*2cd8c2e5SBaptiste Daroussin os.chdir(LIB_ROOT) 15*2cd8c2e5SBaptiste Daroussinif LIB_ROOT not in sys.path: 16*2cd8c2e5SBaptiste Daroussin sys.path.append(LIB_ROOT) 17*2cd8c2e5SBaptiste Daroussin 18273c26a3SBaptiste Daroussintests_require = [] 1939ee7a7aSBaptiste Daroussin 20273c26a3SBaptiste Daroussinif sys.version < '2.7': 21273c26a3SBaptiste Daroussin tests_require.append('unittest2') 2239ee7a7aSBaptiste Daroussin 23273c26a3SBaptiste Daroussinuclmodule = Extension( 24273c26a3SBaptiste Daroussin 'ucl', 25*2cd8c2e5SBaptiste Daroussin libraries=['ucl', 'curl'], 26*2cd8c2e5SBaptiste Daroussin sources=['python/src/uclmodule.c'], 27*2cd8c2e5SBaptiste Daroussin include_dirs=['include'], 28*2cd8c2e5SBaptiste Daroussin language='c', 29273c26a3SBaptiste Daroussin) 3039ee7a7aSBaptiste Daroussin 31*2cd8c2e5SBaptiste Daroussinucl_lib = { 32*2cd8c2e5SBaptiste Daroussin 'sources': ['src/' + fn for fn in os.listdir('src') if fn.endswith('.c')], 33*2cd8c2e5SBaptiste Daroussin 'include_dirs': ['include', 'src', 'uthash', 'klib'], 34*2cd8c2e5SBaptiste Daroussin 'macros': [('CURL_FOUND', '1')], 35*2cd8c2e5SBaptiste Daroussin} 36*2cd8c2e5SBaptiste Daroussin 37*2cd8c2e5SBaptiste Daroussin# sdist setup() will pull in the *.c files automatically, but not headers 38*2cd8c2e5SBaptiste Daroussin# MANIFEST.in will include the headers for sdist only 39*2cd8c2e5SBaptiste Daroussintemplate = 'python/MANIFEST.in' 40*2cd8c2e5SBaptiste Daroussin 41*2cd8c2e5SBaptiste Daroussin# distutils assume setup.py is in the root of the project 42*2cd8c2e5SBaptiste Daroussin# we need to include C source from the parent so trick it 43*2cd8c2e5SBaptiste Daroussinin_ucl_root = 'setup.py' in os.listdir('python') 44*2cd8c2e5SBaptiste Daroussinif in_ucl_root: 45*2cd8c2e5SBaptiste Daroussin os.link('python/setup.py', 'setup.py') 46*2cd8c2e5SBaptiste Daroussin 47273c26a3SBaptiste Daroussinsetup( 48273c26a3SBaptiste Daroussin name = 'ucl', 49*2cd8c2e5SBaptiste Daroussin version = '0.8.1', 50*2cd8c2e5SBaptiste Daroussin description = 'ucl parser and emitter', 5139ee7a7aSBaptiste Daroussin ext_modules = [uclmodule], 52*2cd8c2e5SBaptiste Daroussin template=template, # no longer supported with setuptools but doesn't hurt 53*2cd8c2e5SBaptiste Daroussin libraries = [('ucl', ucl_lib)], 54273c26a3SBaptiste Daroussin test_suite = 'tests', 55273c26a3SBaptiste Daroussin tests_require = tests_require, 56273c26a3SBaptiste Daroussin author = "Eitan Adler, Denis Volpato Martins", 5739ee7a7aSBaptiste Daroussin author_email = "[email protected]", 5839ee7a7aSBaptiste Daroussin url = "https://github.com/vstakhov/libucl/", 5939ee7a7aSBaptiste Daroussin license = "MIT", 60273c26a3SBaptiste Daroussin classifiers = [ 61273c26a3SBaptiste Daroussin "Development Status :: 3 - Alpha", 6239ee7a7aSBaptiste Daroussin "Intended Audience :: Developers", 6339ee7a7aSBaptiste Daroussin "License :: DFSG approved", 6439ee7a7aSBaptiste Daroussin "License :: OSI Approved :: MIT License", 6539ee7a7aSBaptiste Daroussin "Programming Language :: C", 66273c26a3SBaptiste Daroussin "Programming Language :: Python :: 2", 6739ee7a7aSBaptiste Daroussin "Programming Language :: Python :: 3", 6839ee7a7aSBaptiste Daroussin "Programming Language :: Python :: Implementation :: CPython", 6939ee7a7aSBaptiste Daroussin "Topic :: Software Development :: Libraries", 7039ee7a7aSBaptiste Daroussin ] 7139ee7a7aSBaptiste Daroussin) 72*2cd8c2e5SBaptiste Daroussin 73*2cd8c2e5SBaptiste Daroussin# clean up the trick after the build 74*2cd8c2e5SBaptiste Daroussinif in_ucl_root: 75*2cd8c2e5SBaptiste Daroussin os.unlink("setup.py") 76