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
This commit is contained in:
Ted Reed 2022-07-19 14:46:09 -07:00
parent 08e93dbc37
commit a05a338df5
2 changed files with 34 additions and 0 deletions

View File

@ -13,6 +13,10 @@ python3Packages.buildPythonApplication rec {
sha256 = "sha256-WLKtra1kNxvm4iO3NEhMNCSioHL9I8GIgkbtu95IyTQ=";
};
patches = [
./unwrap-subprocess.patch
];
checkInputs = with python3Packages; [
mock
python-snappy

View File

@ -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",