yq: fix path to jq

yq requires jq at runtime, so that the package is broken unless the path to jq
is patched in.
This commit is contained in:
Thomas Tuegel 2020-11-13 14:09:57 -06:00 committed by Thomas Tuegel
parent 204f52ce65
commit 4074d4ad98
No known key found for this signature in database
GPG key ID: 22CBF5249D4B4D59
2 changed files with 34 additions and 1 deletions

View file

@ -1,6 +1,7 @@
{ lib
, buildPythonPackage
, fetchPypi
, substituteAll
, pkgs
, argcomplete
, pyyaml
@ -22,6 +23,13 @@ buildPythonPackage rec {
sha256 = "1q4rky0a6n4izmq7slb91a54g8swry1xrbfqxwc8lkd3hhvlxxkl";
};
patches = [
(substituteAll {
src = ./jq-path.patch;
jq = "${lib.getBin pkgs.jq}/bin/jq";
})
];
postPatch = ''
substituteInPlace test/test.py --replace "expect_exit_codes={0} if sys.stdin.isatty() else {2}" "expect_exit_codes={0}"
'';
@ -38,7 +46,6 @@ buildPythonPackage rec {
pytest
coverage
flake8
pkgs.jq
toml
];

View file

@ -0,0 +1,26 @@
diff --git a/test/test.py b/test/test.py
index a81f41b..9e80f04 100755
--- a/test/test.py
+++ b/test/test.py
@@ -112,7 +112,7 @@ class TestYq(unittest.TestCase):
tf2.seek(0)
self.assertEqual(self.run_yq("", ["-y", arg, tf.name, self.fd_path(tf2)]), '1\n...\n')
- @unittest.skipIf(subprocess.check_output(["jq", "--version"]) < b"jq-1.6", "Test options introduced in jq 1.6")
+ @unittest.skipIf(subprocess.check_output(["@jq@", "--version"]) < b"jq-1.6", "Test options introduced in jq 1.6")
def test_jq16_arg_passthrough(self):
self.assertEqual(self.run_yq("{}", ["--indentless", "-y", ".a=$ARGS.positional", "--args", "a", "b"]),
"a:\n- a\n- b\n")
diff --git a/yq/__init__.py b/yq/__init__.py
index afeb42c..a0d7970 100755
--- a/yq/__init__.py
+++ b/yq/__init__.py
@@ -146,7 +146,7 @@ def yq(input_streams=None, output_stream=None, input_format="yaml", output_forma
try:
# Note: universal_newlines is just a way to induce subprocess to make stdin a text buffer and encode it for us
- jq = subprocess.Popen(["jq"] + list(jq_args),
+ jq = subprocess.Popen(["@jq@"] + list(jq_args),
stdin=subprocess.PIPE,
stdout=subprocess.PIPE if converting_output else None,
universal_newlines=True)