about summary refs log tree commit diff
path: root/pkgs/tools/misc/barman
diff options
context:
space:
mode:
authorTed Reed <ted.reed@gmail.com>2022-07-19 14:46:09 -0700
committerTed Reed <ted.reed@gmail.com>2022-07-19 14:46:09 -0700
commita05a338df5f42676a64347122d9fe94e05e92f79 (patch)
tree24626a5870ac2bf09de02d0be94c801992c8419a /pkgs/tools/misc/barman
parent08e93dbc3765047da5cef623ca98150e2e6ebd82 (diff)
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
Diffstat (limited to 'pkgs/tools/misc/barman')
-rw-r--r--pkgs/tools/misc/barman/default.nix4
-rw-r--r--pkgs/tools/misc/barman/unwrap-subprocess.patch30
2 files changed, 34 insertions, 0 deletions
diff --git a/pkgs/tools/misc/barman/default.nix b/pkgs/tools/misc/barman/default.nix
index 4ad66a98ad5a0..f3329e4f1fc50 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 0000000000000..7dfd6529a2935
--- /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",