svn commit: r517010 - in head/devel: . py-pyjq py-pyjq/files

Dan Langille dvl at FreeBSD.org
Thu Nov 7 20:29:44 UTC 2019


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 at 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 at 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


More information about the svn-ports-head mailing list