1273c26a3SBaptiste Daroussintry: 2273c26a3SBaptiste Daroussin from setuptools import setup, Extension 3*a0409676SBaptiste Daroussin # setuptools doesn't support template param for MANIFEST.in 4*a0409676SBaptiste Daroussin from setuptools.command.egg_info import manifest_maker 5*a0409676SBaptiste 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*a0409676SBaptiste DaroussinLIB_ROOT = os.path.abspath(os.path.join(__file__, os.pardir, os.pardir)) 13*a0409676SBaptiste Daroussinif os.getcwd() != LIB_ROOT: 14*a0409676SBaptiste Daroussin os.chdir(LIB_ROOT) 15*a0409676SBaptiste Daroussinif LIB_ROOT not in sys.path: 16*a0409676SBaptiste Daroussin sys.path.append(LIB_ROOT) 17*a0409676SBaptiste 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*a0409676SBaptiste Daroussin libraries=['ucl', 'curl'], 26*a0409676SBaptiste Daroussin sources=['python/src/uclmodule.c'], 27*a0409676SBaptiste Daroussin include_dirs=['include'], 28*a0409676SBaptiste Daroussin language='c', 29273c26a3SBaptiste Daroussin) 3039ee7a7aSBaptiste Daroussin 31*a0409676SBaptiste Daroussinucl_lib = { 32*a0409676SBaptiste Daroussin 'sources': ['src/' + fn for fn in os.listdir('src') if fn.endswith('.c')], 33*a0409676SBaptiste Daroussin 'include_dirs': ['include', 'src', 'uthash', 'klib'], 34*a0409676SBaptiste Daroussin 'macros': [('CURL_FOUND', '1')], 35*a0409676SBaptiste Daroussin} 36*a0409676SBaptiste Daroussin 37*a0409676SBaptiste Daroussin# sdist setup() will pull in the *.c files automatically, but not headers 38*a0409676SBaptiste Daroussin# MANIFEST.in will include the headers for sdist only 39*a0409676SBaptiste Daroussintemplate = 'python/MANIFEST.in' 40*a0409676SBaptiste Daroussin 41*a0409676SBaptiste Daroussin# distutils assume setup.py is in the root of the project 42*a0409676SBaptiste Daroussin# we need to include C source from the parent so trick it 43*a0409676SBaptiste Daroussinin_ucl_root = 'setup.py' in os.listdir('python') 44*a0409676SBaptiste Daroussinif in_ucl_root: 45*a0409676SBaptiste Daroussin os.link('python/setup.py', 'setup.py') 46*a0409676SBaptiste Daroussin 47273c26a3SBaptiste Daroussinsetup( 48273c26a3SBaptiste Daroussin name = 'ucl', 49*a0409676SBaptiste Daroussin version = '0.8.1', 50*a0409676SBaptiste Daroussin description = 'ucl parser and emitter', 5139ee7a7aSBaptiste Daroussin ext_modules = [uclmodule], 52*a0409676SBaptiste Daroussin template=template, # no longer supported with setuptools but doesn't hurt 53*a0409676SBaptiste 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 = "lists@eitanadler.com", 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*a0409676SBaptiste Daroussin 73*a0409676SBaptiste Daroussin# clean up the trick after the build 74*a0409676SBaptiste Daroussinif in_ucl_root: 75*a0409676SBaptiste Daroussin os.unlink("setup.py") 76