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 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..d1c45edccf06 --- /dev/null +++ b/devel/py-jsonnet/pkg-descr @@ -0,0 +1,7 @@ +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. The example below illustrates a few features -- referring to another part +of the structure, overriding object fields, and string operations. + +WWW: https://github.com/google/jsonnet