Index: devel/py-pyjq/Makefile =================================================================== --- /dev/null +++ devel/py-pyjq/Makefile @@ -0,0 +1,27 @@ +# $FreeBSD$ + +PORTNAME= pyjq +PORTVERSION= 2.4.0 +CATEGORIES= devel python +MASTER_SITES= CHEESESHOP +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= dvl@FreeBSD.org +COMMENT= Python binding for jq + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +LIB_DEPENDS= libjq.so:textproc/jq \ + libonig.so:devel/oniguruma + +USES= localbase python +USE_PYTHON= autoplist distutils + +post-patch: + @${RM} -r ${WRKSRC}/dependencies + +post-install: + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/python3.6/site-packages/_pyjq.so + +.include Index: devel/py-pyjq/distinfo =================================================================== --- /dev/null +++ devel/py-pyjq/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1573147120 +SHA256 (pyjq-2.4.0.tar.gz) = 651f7a3ab2087e7c69cf00f1ba5433d7afe7b72f4ff499dcaf9c86cb1c2ae3c1 +SIZE (pyjq-2.4.0.tar.gz) = 2033014 Index: devel/py-pyjq/files/patch-setup.py =================================================================== --- /dev/null +++ devel/py-pyjq/files/patch-setup.py @@ -0,0 +1,89 @@ +--- setup.py.orig 2019-09-18 06:52:51 UTC ++++ setup.py +@@ -12,86 +12,20 @@ from setuptools import setup + from setuptools.extension import Extension + from setuptools.command.build_ext import _build_ext + +- +-dependencies_dir_path = join(abspath(dirname(__file__)), "dependencies") +- +-onig_tarball_path = join(dependencies_dir_path, "onig-6.9.0.tar.gz") +-onig_install_path = join(dependencies_dir_path, "onig_install") +-onig_source_path = join(dependencies_dir_path, "onig-6.9.0") +- +-jq_tarball_path = join(dependencies_dir_path, "jq-1.5.tar.gz") +-jq_install_path = join(dependencies_dir_path, "jq_install") +-jq_source_path = join(dependencies_dir_path, "jq-jq-1.5") +- +- + class build_ext(_build_ext): + def run(self): +- self._build_oniguruma() +- self._build_libjq() + _build_ext.run(self) + +- def _build_oniguruma(self): +- self._safe_rmtree(onig_install_path) +- self._safe_rmtree(onig_source_path) +- +- self._extract_tarball(onig_tarball_path, dependencies_dir_path) +- self._build_lib( +- lib_dir=onig_source_path, +- commands=[ +- ["./configure", "CFLAGS=-fPIC", "--disable-shared", "--prefix", onig_install_path], +- ["make"], +- ["make", "install"], +- ] +- ) +- +- def _build_libjq(self): +- self._safe_rmtree(jq_install_path) +- self._safe_rmtree(jq_source_path) +- +- self._extract_tarball(jq_tarball_path, dependencies_dir_path) +- self._build_lib( +- lib_dir=jq_source_path, +- commands=[ +- ["autoreconf", "-i"], +- ["./configure", "CFLAGS=-fPIC", "--disable-maintainer-mode", +- "--enable-all-static", "--disable-shared", +- "--with-oniguruma=" + onig_install_path, "--prefix", jq_install_path], +- ["make", "install-libLTLIBRARIES", "install-includeHEADERS"], +- ] +- ) +- +- def _build_lib(self, lib_dir, commands): +- macosx_deployment_target = sysconfig.get_config_var("MACOSX_DEPLOYMENT_TARGET") +- if macosx_deployment_target: +- os.environ['MACOSX_DEPLOYMENT_TARGET'] = macosx_deployment_target +- +- for command in commands: +- subprocess.check_call(command, cwd=lib_dir) +- +- def _extract_tarball(self, tarball_path, workdir_path): +- tarfile.open(tarball_path, "r:gz").extractall(workdir_path) +- +- def _safe_rmtree(self, d): +- try: +- shutil.rmtree(d) +- except OSError: +- pass +- + libraries = ["jq", "onig"] +-if platform.architecture()[1] == 'WindowsPE': +- libraries.append("shlwapi") + + pyjq = Extension( + "_pyjq", + sources=["_pyjq.c"], +- include_dirs=["dependencies/jq_install/include"], + libraries=libraries, +- library_dirs=["dependencies/jq_install/lib", "dependencies/onig_install/lib"] + ) + + setup( + test_suite='test_pyjq', + ext_modules=[pyjq], + cmdclass={"build_ext": build_ext}, +- package_data={'': [onig_tarball_path, jq_tarball_path]}, + ) Index: devel/py-pyjq/pkg-descr =================================================================== --- /dev/null +++ devel/py-pyjq/pkg-descr @@ -0,0 +1,15 @@ +pyjq is a Python bindings for jq (http://stedolan.github.io/jq/). + + jq is like sed for JSON data - you can use it to slice and filter and map + and transform structured data with the same ease that sed, awk, grep and + friends let you play with text. + + http://stedolan.github.io/jq/ + +You can seamlessly call jq script (like regular expression) and process a plain +python data structure. + +For your information, https://pypi.python.org/pypi/jq is a also jq bindings but +different and incompatible with pyjq. + +WWW: https://github.com/doloopwhile/pyjq