Date: Thu, 7 Nov 2019 20:29:42 +0000 (UTC) From: Dan Langille <dvl@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r517010 - in head/devel: . py-pyjq py-pyjq/files Message-ID: <201911072029.xA7KTg1h060465@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dvl Date: Thu Nov 7 20:29:42 2019 New Revision: 517010 URL: https://svnweb.freebsd.org/changeset/ports/517010 Log: Add pyjq: Binding for jq JSON Processor My thanks to swills# for his help in this. Submitted by: Gilbert Morgan <gmm@tutanota.com> Differential Revision: https://reviews.freebsd.org/D22278 Added: head/devel/py-pyjq/ head/devel/py-pyjq/Makefile (contents, props changed) head/devel/py-pyjq/distinfo (contents, props changed) head/devel/py-pyjq/files/ head/devel/py-pyjq/files/patch-setup.py (contents, props changed) head/devel/py-pyjq/pkg-descr (contents, props changed) Modified: head/devel/Makefile Modified: head/devel/Makefile ============================================================================== --- head/devel/Makefile Thu Nov 7 20:25:08 2019 (r517009) +++ head/devel/Makefile Thu Nov 7 20:29:42 2019 (r517010) @@ -4866,6 +4866,7 @@ SUBDIR += py-pyinotify SUBDIR += py-pyinstaller SUBDIR += py-pyjsparser + SUBDIR += py-pyjq SUBDIR += py-pyke SUBDIR += py-pylama SUBDIR += py-pylibsrtp Added: head/devel/py-pyjq/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/devel/py-pyjq/Makefile Thu Nov 7 20:29:42 2019 (r517010) @@ -0,0 +1,27 @@ +# $FreeBSD$ + +PORTNAME= pyjq +PORTVERSION= 2.4.0 +CATEGORIES= devel python +MASTER_SITES= CHEESESHOP +PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} + +MAINTAINER= gmm@tutanota.com +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 <bsd.port.mk> Added: head/devel/py-pyjq/distinfo ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/devel/py-pyjq/distinfo Thu Nov 7 20:29:42 2019 (r517010) @@ -0,0 +1,3 @@ +TIMESTAMP = 1573147120 +SHA256 (pyjq-2.4.0.tar.gz) = 651f7a3ab2087e7c69cf00f1ba5433d7afe7b72f4ff499dcaf9c86cb1c2ae3c1 +SIZE (pyjq-2.4.0.tar.gz) = 2033014 Added: head/devel/py-pyjq/files/patch-setup.py ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/devel/py-pyjq/files/patch-setup.py Thu Nov 7 20:29:42 2019 (r517010) @@ -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]}, + ) Added: head/devel/py-pyjq/pkg-descr ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/devel/py-pyjq/pkg-descr Thu Nov 7 20:29:42 2019 (r517010) @@ -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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201911072029.xA7KTg1h060465>