at 24.05-pre 3.6 kB view raw
1diff --git a/setup.py b/setup.py 2index 01cc813..15e9048 100644 3--- a/setup.py 4+++ b/setup.py 5@@ -1,97 +1,18 @@ 6 #!/usr/bin/env python 7 8 import os 9-import subprocess 10-import tarfile 11-import shutil 12-import sysconfig 13 14 from setuptools import setup 15-from setuptools.command.build_ext import build_ext 16 from setuptools.extension import Extension 17 18- 19-def _path_in_dir(relative_path): 20- return os.path.abspath(os.path.join(os.path.dirname(__file__), relative_path)) 21- 22-def _dep_source_path(relative_path): 23- return os.path.join(_path_in_dir("deps"), relative_path) 24- 25-def _dep_build_path(relative_path): 26- return os.path.join(_path_in_dir("_deps/build"), relative_path) 27- 28 def _read(fname): 29 return open(os.path.join(os.path.dirname(__file__), fname)).read() 30 31 32-jq_lib_tarball_path = _dep_source_path("jq-1.6.tar.gz") 33-jq_lib_dir = _dep_build_path("jq-1.6") 34- 35-oniguruma_version = "6.9.4" 36-oniguruma_lib_tarball_path = _dep_source_path("onig-{}.tar.gz".format(oniguruma_version)) 37-oniguruma_lib_build_dir = _dep_build_path("onig-{}".format(oniguruma_version)) 38-oniguruma_lib_install_dir = _dep_build_path("onig-install-{}".format(oniguruma_version)) 39- 40-class jq_build_ext(build_ext): 41- def run(self): 42- if not os.path.exists(_dep_build_path(".")): 43- os.makedirs(_dep_build_path(".")) 44- self._build_oniguruma() 45- self._build_libjq() 46- build_ext.run(self) 47- 48- def _build_oniguruma(self): 49- self._build_lib( 50- tarball_path=oniguruma_lib_tarball_path, 51- lib_dir=oniguruma_lib_build_dir, 52- commands=[ 53- ["./configure", "CFLAGS=-fPIC", "--prefix=" + oniguruma_lib_install_dir], 54- ["make"], 55- ["make", "install"], 56- ]) 57- 58- 59- def _build_libjq(self): 60- self._build_lib( 61- tarball_path=jq_lib_tarball_path, 62- lib_dir=jq_lib_dir, 63- commands=[ 64- ["./configure", "CFLAGS=-fPIC -pthread", "--disable-maintainer-mode", "--with-oniguruma=" + oniguruma_lib_install_dir], 65- ["make"], 66- ]) 67- 68- def _build_lib(self, tarball_path, lib_dir, commands): 69- self._extract_tarball( 70- tarball_path=tarball_path, 71- lib_dir=lib_dir, 72- ) 73- 74- macosx_deployment_target = sysconfig.get_config_var("MACOSX_DEPLOYMENT_TARGET") 75- if macosx_deployment_target: 76- os.environ['MACOSX_DEPLOYMENT_TARGET'] = str(macosx_deployment_target) 77- 78- def run_command(args): 79- print("Executing: %s" % ' '.join(args)) 80- subprocess.check_call(args, cwd=lib_dir) 81- 82- for command in commands: 83- run_command(command) 84- 85- def _extract_tarball(self, tarball_path, lib_dir): 86- if os.path.exists(lib_dir): 87- shutil.rmtree(lib_dir) 88- tarfile.open(tarball_path, "r:gz").extractall(_dep_build_path(".")) 89- 90- 91 jq_extension = Extension( 92 "jq", 93 sources=["jq.c"], 94- include_dirs=[os.path.join(jq_lib_dir, "src")], 95- extra_link_args=["-lm"], 96- extra_objects=[ 97- os.path.join(jq_lib_dir, ".libs/libjq.a"), 98- os.path.join(oniguruma_lib_install_dir, "lib/libonig.a"), 99- ], 100+ libraries=["jq"] 101 ) 102 103 setup( 104@@ -104,7 +25,6 @@ def _extract_tarball(self, tarball_path, lib_dir): 105 python_requires='>=3.5', 106 license='BSD 2-Clause', 107 ext_modules = [jq_extension], 108- cmdclass={"build_ext": jq_build_ext}, 109 classifiers=[ 110 'Development Status :: 5 - Production/Stable', 111 'Intended Audience :: Developers',