diff --git a/textproc/yq/Makefile b/textproc/yq/Makefile index dcd786e51fb6..cda38e4a9d4a 100644 --- a/textproc/yq/Makefile +++ b/textproc/yq/Makefile @@ -1,42 +1,43 @@ PORTNAME= yq -DISTVERSION= 3.4.3 +DISTVERSION= 4.1.1 CATEGORIES= textproc python MASTER_SITES= PYPI MAINTAINER= yuri@FreeBSD.org COMMENT= Command-line YAML and XML processor, jq wrapper for YAML/XML documents WWW= https://kislyuk.github.io/yq/ \ https://github.com/kislyuk/yq LICENSE= APACHE20 LICENSE_FILE= ${WRKSRC}/LICENSE -BUILD_DEPENDS= ${PY_SETUPTOOLS} \ - ${PYTHON_PKGNAMEPREFIX}setuptools-scm>=7:devel/py-setuptools-scm@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR} -RUN_DEPENDS= jq:textproc/jq \ - ${PYTHON_PKGNAMEPREFIX}argcomplete>=1.8.1:devel/py-argcomplete@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}pyaml>=5.3.1:textproc/py-pyaml@${PY_FLAVOR} \ +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatch-vcs>=0:devel/py-hatch-vcs@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}hatchling>=0:devel/py-hatchling@${PY_FLAVOR} +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}argcomplete>=1.8.1:devel/py-argcomplete@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyyaml>=5.3.1:devel/py-pyyaml@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}tomlkit>=0.11.6:textproc/py-tomlkit@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}xmltodict>=0.11.0:devel/py-xmltodict@${PY_FLAVOR} + ${PYTHON_PKGNAMEPREFIX}xmltodict>=0.11.0:devel/py-xmltodict@${PY_FLAVOR} \ + jq:textproc/jq TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}build>0:devel/py-build@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}coverage>0:devel/py-coverage@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}mypy>0:devel/py-mypy@${PY_FLAVOR} \ - ruff:devel/ruff \ - ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR} + ${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR} \ + ruff:devel/ruff USES= python shebangfix USE_PYTHON= pep517 noflavors autoplist SHEBANG_FILES= test/test.py TEST_ENV= ${MAKE_ENV} PATH=${STAGEDIR}${PREFIX}/bin:${PATH} PYTHONPATH=${STAGEDIR}${PYTHONPREFIX_SITELIBDIR} CONFLICTS_INSTALL= go-yq NO_ARCH= yes -do-test: # tests fail: https://github.com/mikefarah/yq/issues/2016 +do-test: @cd ${WRKSRC}/test && ${SETENV} ${TEST_ENV} ./test.py +# tests as of 4.1.1: Ran 27 tests in 0.576s OK + .include diff --git a/textproc/yq/distinfo b/textproc/yq/distinfo index 477f0e2bb980..0759b7d804ab 100644 --- a/textproc/yq/distinfo +++ b/textproc/yq/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1714532096 -SHA256 (yq-3.4.3.tar.gz) = ba586a1a6f30cf705b2f92206712df2281cd320280210e7b7b80adcb8f256e3b -SIZE (yq-3.4.3.tar.gz) = 33214 +TIMESTAMP = 1783414220 +SHA256 (yq-4.1.1.tar.gz) = ab3fc344dc4a39d833d328f080a6e794c1cb7243b05c0076ac1edce3d22caabd +SIZE (yq-4.1.1.tar.gz) = 32987 diff --git a/textproc/yq/files/patch-test_test.py b/textproc/yq/files/patch-test_test.py new file mode 100644 index 000000000000..efa28fd25a2d --- /dev/null +++ b/textproc/yq/files/patch-test_test.py @@ -0,0 +1,27 @@ +-- Add builtins.open wrapper to support /dev/fd/N paths on FreeBSD when fdescfs is not mounted. +-- This ensures that unit tests can run successfully in environments where /dev/fd is unavailable. + +--- test/test.py.orig 2026-07-07 08:53:12 UTC ++++ test/test.py +@@ -11,6 +11,21 @@ from yq import cli, yq # noqa + sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) + from yq import cli, yq # noqa + ++import builtins ++original_open = builtins.open ++def patched_open(file, *args, **kwargs): ++ if isinstance(file, str) and file.startswith('/dev/fd/'): ++ try: ++ fd = int(file.split('/')[-1]) ++ dup_fd = os.dup(fd) ++ mode = args[0] if args else kwargs.get('mode', 'r') ++ return os.fdopen(dup_fd, mode, *args[1:], **{k: v for k, v in kwargs.items() if k != 'mode'}) ++ except Exception: ++ pass ++ return original_open(file, *args, **kwargs) ++builtins.open = patched_open ++ ++ + USING_PYPY = True if platform.python_implementation() == "PyPy" else False + + yaml_with_tags = """