aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Timofeev <timp87@gmail.com>2021-06-26 06:22:32 +0000
committerKevin Bowling <kbowling@FreeBSD.org>2021-06-26 06:32:53 +0000
commitf091166687409804b91a1a041fb715d24f25c028 (patch)
treec634de5377c4f7015b40a0f033975e34f17b72c8
parentc3fb094f67c14e498e039fccb7d38944fd5e99e4 (diff)
downloadports-f091166687409804b91a1a041fb715d24f25c028.tar.gz
ports-f091166687409804b91a1a041fb715d24f25c028.zip
devel/py-jsonnet: Python bindings for Jsonnet
Jsonnet lets you compute fragments of JSON within the structure, bringing the same benefit to structured data that templating languages bring to plain text. WWW: https://github.com/google/jsonnet PR: 256705 Reviewed by: koobs Approved by: new maintainer
-rw-r--r--devel/Makefile1
-rw-r--r--devel/py-jsonnet/Makefile31
-rw-r--r--devel/py-jsonnet/distinfo3
-rw-r--r--devel/py-jsonnet/files/patch-case__studies_kubernetes_test__same.py35
-rw-r--r--devel/py-jsonnet/files/patch-setup.py52
-rw-r--r--devel/py-jsonnet/pkg-descr6
6 files changed, 128 insertions, 0 deletions
diff --git a/devel/Makefile b/devel/Makefile
index 50de76449f46..88b20d931a18 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -4580,6 +4580,7 @@
SUBDIR += py-jsondiff
SUBDIR += py-jsonform
SUBDIR += py-jsonlines
+ SUBDIR += py-jsonnet
SUBDIR += py-jsonpatch
SUBDIR += py-jsonpath-rw
SUBDIR += py-jsonpickle
diff --git a/devel/py-jsonnet/Makefile b/devel/py-jsonnet/Makefile
new file mode 100644
index 000000000000..ec2e80a7380a
--- /dev/null
+++ b/devel/py-jsonnet/Makefile
@@ -0,0 +1,31 @@
+PORTNAME= jsonnet
+DISTVERSIONPREFIX= v
+DISTVERSION= 0.17.0
+CATEGORIES= devel python
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= timp87@FreeBSD.org
+COMMENT= Python bindings for Jsonnet - The data templating language
+
+LICENSE= APACHE20
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+LIB_DEPENDS= libjsonnet.so:devel/jsonnet
+
+TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytest>0:devel/py-pytest@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}yaml>0:devel/py-yaml@${PY_FLAVOR}
+
+USES= compiler:c++11-lang python:3.6+ localbase
+
+USE_GITHUB= yes
+GH_ACCOUNT= google
+
+USE_PYTHON= distutils autoplist
+
+post-install:
+ ${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/_jsonnet${PYTHON_EXT_SUFFIX}.so
+
+do-test:
+ @cd ${WRKSRC} && ${PYTHON_CMD} -m pytest -v -rs
+
+.include <bsd.port.mk>
diff --git a/devel/py-jsonnet/distinfo b/devel/py-jsonnet/distinfo
new file mode 100644
index 000000000000..7c119ac87f8a
--- /dev/null
+++ b/devel/py-jsonnet/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1624332274
+SHA256 (google-jsonnet-v0.17.0_GH0.tar.gz) = 076b52edf888c01097010ad4299e3b2e7a72b60a41abbc65af364af1ed3c8dbe
+SIZE (google-jsonnet-v0.17.0_GH0.tar.gz) = 21854054
diff --git a/devel/py-jsonnet/files/patch-case__studies_kubernetes_test__same.py b/devel/py-jsonnet/files/patch-case__studies_kubernetes_test__same.py
new file mode 100644
index 000000000000..0365b2ee1740
--- /dev/null
+++ b/devel/py-jsonnet/files/patch-case__studies_kubernetes_test__same.py
@@ -0,0 +1,35 @@
+--- case_studies/kubernetes/test_same.py.orig 2020-11-22 14:19:41 UTC
++++ case_studies/kubernetes/test_same.py
+@@ -15,7 +15,11 @@
+ import yaml
+ import json
+ import sys
++import os
+
++os.chdir(os.path.dirname(os.path.abspath(__file__)))
++os.system("jsonnet -m ./ example.jsonnet")
++
+ files = [
+ 'bigquery-controller',
+ 'redis-master',
+@@ -50,10 +54,10 @@ def canonicalize(doc):
+
+ for filename in files:
+ with open(filename + '.old.yaml', 'r') as f:
+- yaml_doc = canonicalize(yaml.load(f))
++ yaml_doc = canonicalize(yaml.load(f, Loader=yaml.SafeLoader))
+
+ with open(filename + '.new.yaml', 'r') as f:
+- jsonnet_doc = yaml.load(f)
++ jsonnet_doc = yaml.load(f, Loader=yaml.SafeLoader)
+
+ if jsonstr(yaml_doc) == jsonstr(jsonnet_doc):
+ print('Identical: %s' % filename)
+@@ -65,6 +69,6 @@ for filename in files:
+ with open(filename + '.new.yaml.out', 'w') as f:
+ f.write(jsonstr(jsonnet_doc))
+
+-
++ os.remove(filename + '.new.yaml')
+
+
diff --git a/devel/py-jsonnet/files/patch-setup.py b/devel/py-jsonnet/files/patch-setup.py
new file mode 100644
index 000000000000..41665ee85474
--- /dev/null
+++ b/devel/py-jsonnet/files/patch-setup.py
@@ -0,0 +1,52 @@
+--- setup.py.orig 2020-11-22 14:19:41 UTC
++++ setup.py
+@@ -19,18 +19,6 @@ from setuptools.command.build_ext import build_ext as
+ from subprocess import Popen
+
+ DIR = os.path.abspath(os.path.dirname(__file__))
+-LIB_OBJECTS = [
+- 'core/desugarer.o',
+- 'core/formatter.o',
+- 'core/libjsonnet.o',
+- 'core/lexer.o',
+- 'core/parser.o',
+- 'core/pass.o',
+- 'core/static_analysis.o',
+- 'core/string_utils.o',
+- 'core/vm.o',
+- 'third_party/md5/md5.o'
+-]
+
+ MODULE_SOURCES = ['python/_jsonnet.c']
+
+@@ -46,19 +34,10 @@ def get_version():
+ v_code = v_code[1:]
+ return v_code
+
+-class BuildJsonnetExt(BuildExt):
+- def run(self):
+- p = Popen(['make'] + LIB_OBJECTS, cwd=DIR)
+- p.wait()
+- if p.returncode != 0:
+- raise Exception('Could not build %s' % (', '.join(LIB_OBJECTS)))
+- BuildExt.run(self)
+-
+ jsonnet_ext = Extension(
+ '_jsonnet',
+ sources=MODULE_SOURCES,
+- extra_objects=LIB_OBJECTS,
+- include_dirs = ['include', 'third_party/md5', 'third_party/json'],
++ libraries = ['jsonnet'],
+ language='c++'
+ )
+
+@@ -68,9 +47,6 @@ setup(name='jsonnet',
+ author='David Cunningham',
+ author_email='dcunnin@google.com',
+ version=get_version(),
+- cmdclass={
+- 'build_ext': BuildJsonnetExt,
+- },
+ ext_modules=[jsonnet_ext],
+ test_suite="python._jsonnet_test",
+ )
diff --git a/devel/py-jsonnet/pkg-descr b/devel/py-jsonnet/pkg-descr
new file mode 100644
index 000000000000..30a6d0c6c195
--- /dev/null
+++ b/devel/py-jsonnet/pkg-descr
@@ -0,0 +1,6 @@
+Python bindings for Jsonnet - The data templating language.
+Jsonnet lets you compute fragments of JSON within the structure, bringing
+the same benefit to structured data that templating languages bring to plain
+text.
+
+WWW: https://github.com/google/jsonnet