From 4074d4ad98fb41093c492e5e57492ef65caf1d13 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Fri, 13 Nov 2020 14:09:57 -0600 Subject: [PATCH] yq: fix path to jq yq requires jq at runtime, so that the package is broken unless the path to jq is patched in. --- .../development/python-modules/yq/default.nix | 9 ++++++- .../python-modules/yq/jq-path.patch | 26 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/python-modules/yq/jq-path.patch diff --git a/pkgs/development/python-modules/yq/default.nix b/pkgs/development/python-modules/yq/default.nix index b3e651fd2b0e..dc586b4f9085 100644 --- a/pkgs/development/python-modules/yq/default.nix +++ b/pkgs/development/python-modules/yq/default.nix @@ -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 ]; diff --git a/pkgs/development/python-modules/yq/jq-path.patch b/pkgs/development/python-modules/yq/jq-path.patch new file mode 100644 index 000000000000..784a28feaf18 --- /dev/null +++ b/pkgs/development/python-modules/yq/jq-path.patch @@ -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)