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