From a05a338df5f42676a64347122d9fe94e05e92f79 Mon Sep 17 00:00:00 2001 From: Ted Reed Date: Tue, 19 Jul 2022 14:46:09 -0700 Subject: [PATCH] barman: patch out subprocess wrapper This patches the command wrapper to prevent it from executing subprocesses via sys.executable. This is intended to ensure that the subprocess is using the same Python interpreter as the superprocess. However, in this case the barman script has been wrapped as a shell script, which is not executable as Python. Since our wrapper script already ensures a consistent version of Python, this internal wrapping is unnecessary, and so we patch it to execute the command directly. Fixes #135238 --- pkgs/tools/misc/barman/default.nix | 4 +++ .../tools/misc/barman/unwrap-subprocess.patch | 30 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 pkgs/tools/misc/barman/unwrap-subprocess.patch diff --git a/pkgs/tools/misc/barman/default.nix b/pkgs/tools/misc/barman/default.nix index 4ad66a98ad5a..f3329e4f1fc5 100644 --- a/pkgs/tools/misc/barman/default.nix +++ b/pkgs/tools/misc/barman/default.nix @@ -13,6 +13,10 @@ python3Packages.buildPythonApplication rec { sha256 = "sha256-WLKtra1kNxvm4iO3NEhMNCSioHL9I8GIgkbtu95IyTQ="; }; + patches = [ + ./unwrap-subprocess.patch + ]; + checkInputs = with python3Packages; [ mock python-snappy diff --git a/pkgs/tools/misc/barman/unwrap-subprocess.patch b/pkgs/tools/misc/barman/unwrap-subprocess.patch new file mode 100644 index 000000000000..7dfd6529a293 --- /dev/null +++ b/pkgs/tools/misc/barman/unwrap-subprocess.patch @@ -0,0 +1,30 @@ +--- a/barman/command_wrappers.py ++++ b/barman/command_wrappers.py +@@ -1144,5 +1144,5 @@ + # * pass the current configuration file with -c + # * set it quiet with -q +- self.command = [sys.executable, command, "-c", config, "-q", subcommand] ++ self.command = [command, "-c", config, "-q", subcommand] + self.keep_descriptors = keep_descriptors + # Handle args for the sub-command (like the server name) + +--- a/tests/test_command_wrappers.py ++++ a/tests/test_command_wrappers.py +@@ -1595,5 +1595,4 @@ + ) + assert subprocess.command == [ +- sys.executable, + sys.argv[0], + "-c", +@@ -1622,5 +1621,4 @@ + ) + assert subprocess.command == [ +- sys.executable, + "path/to/barman", + "-c", +@@ -1644,5 +1642,4 @@ + + command = [ +- sys.executable, + "path/to/barman", + "-c",