You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.1 KiB
101 lines
3.1 KiB
|
11 months ago
|
#!/usr/bin/env python
|
||
|
|
|
||
|
|
import os, sys, glob
|
||
|
|
from distutils.core import setup, Extension
|
||
|
|
from distutils.command.build_ext import build_ext
|
||
|
|
|
||
|
|
root = os.path.abspath(os.path.dirname(__file__))
|
||
|
|
platform = os.getenv("TRAX_PYTHON_PLATFORM", sys.platform)
|
||
|
|
|
||
|
|
if platform.startswith('linux'):
|
||
|
|
library_prefix = 'lib'
|
||
|
|
library_suffix = '.so'
|
||
|
|
elif platform in ['darwin']:
|
||
|
|
library_prefix = 'lib'
|
||
|
|
library_suffix = '.dylib'
|
||
|
|
elif platform.startswith('win'):
|
||
|
|
library_prefix = ''
|
||
|
|
library_suffix = '.dll'
|
||
|
|
|
||
|
|
class build_ext_ctypes(build_ext):
|
||
|
|
|
||
|
|
def build_extension(self, ext):
|
||
|
|
self._ctypes = isinstance(ext, CTypes)
|
||
|
|
return super().build_extension(ext)
|
||
|
|
|
||
|
|
def get_export_symbols(self, ext):
|
||
|
|
if self._ctypes:
|
||
|
|
return ext.export_symbols
|
||
|
|
return super().get_export_symbols(ext)
|
||
|
|
|
||
|
|
def get_ext_filename(self, ext_name):
|
||
|
|
if self._ctypes:
|
||
|
|
return library_prefix + ext_name + library_suffix
|
||
|
|
return super().get_ext_filename(ext_name)
|
||
|
|
|
||
|
|
class CTypes(Extension):
|
||
|
|
pass
|
||
|
|
|
||
|
|
try:
|
||
|
|
from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
|
||
|
|
|
||
|
|
class bdist_wheel(_bdist_wheel):
|
||
|
|
|
||
|
|
def finalize_options(self):
|
||
|
|
_bdist_wheel.finalize_options(self)
|
||
|
|
# Mark us as not a pure python package
|
||
|
|
self.root_is_pure = False
|
||
|
|
|
||
|
|
def get_tag(self):
|
||
|
|
python, abi, plat = _bdist_wheel.get_tag(self)
|
||
|
|
# We don't contain any python source
|
||
|
|
python, abi = 'py2.py3', 'none'
|
||
|
|
return python, abi, plat
|
||
|
|
|
||
|
|
except ImportError:
|
||
|
|
bdist_wheel = None
|
||
|
|
|
||
|
|
try:
|
||
|
|
with open(os.path.join(root, "VERSION"), encoding='utf-8') as fp:
|
||
|
|
VERSION = fp.readline().strip()
|
||
|
|
|
||
|
|
except IOError:
|
||
|
|
VERSION = os.getenv("TRAX_VERSION", "unknown")
|
||
|
|
|
||
|
|
try:
|
||
|
|
with open(os.path.join(root, 'README.md'), encoding='utf-8') as f:
|
||
|
|
long_description = f.read()
|
||
|
|
|
||
|
|
except IOError:
|
||
|
|
long_description = ""
|
||
|
|
|
||
|
|
|
||
|
|
varargs = dict()
|
||
|
|
|
||
|
|
if os.path.isfile(os.path.join("trax", library_prefix + "trax" + library_suffix)):
|
||
|
|
varargs["package_data"] = {"trax" : [library_prefix + "trax" + library_suffix]}
|
||
|
|
varargs["cmdclass"] = {'bdist_wheel': bdist_wheel}
|
||
|
|
varargs["setup_requires"] = ['wheel']
|
||
|
|
elif os.path.isfile(os.path.join("trax", "trax.c")):
|
||
|
|
sources = glob.glob("trax/*.c") + glob.glob("trax/*.cpp")
|
||
|
|
varargs["ext_modules"] = [CTypes("trax.trax", sources=sources, define_macros=[("trax_EXPORTS", "1")])]
|
||
|
|
varargs["cmdclass"] = {'build_ext': build_ext_ctypes}
|
||
|
|
|
||
|
|
setup(name='vot-trax',
|
||
|
|
version=VERSION,
|
||
|
|
description='TraX protocol reference implementation wrapper for Python',
|
||
|
|
author='Luka Cehovin Zajc',
|
||
|
|
author_email='luka.cehovin@gmail.com',
|
||
|
|
long_description=long_description,
|
||
|
|
long_description_content_type='text/markdown',
|
||
|
|
url='https://github.com/votchallenge/trax/',
|
||
|
|
packages=['trax'],
|
||
|
|
install_requires=["numpy>=1.16", "six"],
|
||
|
|
classifiers=[
|
||
|
|
"Programming Language :: Python :: 3",
|
||
|
|
"License :: OSI Approved :: BSD License",
|
||
|
|
"Development Status :: 5 - Production/Stable",
|
||
|
|
"Intended Audience :: Science/Research",
|
||
|
|
],
|
||
|
|
**varargs
|
||
|
|
)
|