xref: /freebsd/contrib/libucl/python/setup.py (revision a0409676120c1e558d0ade943019934e0f15118d)
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