diff options
Diffstat (limited to 'etc')
-rw-r--r-- | etc/portage/patches/sys-apps/portage/command-substitution.patch | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/etc/portage/patches/sys-apps/portage/command-substitution.patch b/etc/portage/patches/sys-apps/portage/command-substitution.patch new file mode 100644 index 0000000..30edeae --- /dev/null +++ b/etc/portage/patches/sys-apps/portage/command-substitution.patch @@ -0,0 +1,25 @@ +diff --git a/lib/portage/util/__init__.py b/lib/portage/util/__init__.py +index 285bf66..74e3232 100644 +--- a/lib/portage/util/__init__.py ++++ b/lib/portage/util/__init__.py +@@ -992,6 +992,20 @@ def varexpand(mystring, mydict=None, error_leader=None): + newstring.append(current) + continue + ++ if mystring[pos] == "(": ++ # print(f"[šijanec.eu] debug0 {mystring}"); ++ end = mystring[pos:].find(")") ++ if end == -1: ++ msg = error_leader() + "[šijanec.eu] missing closing ) in shell command substitution variable" ++ writemsg(msg + "\n", noiselevel=-1) ++ return "" ++ cmd = mystring[pos+1:pos+end] ++ out = subprocess.run(["sh", "-c", cmd], stdout=subprocess.PIPE).stdout.decode("utf-8") ++ newstring.append(out.strip()) ++ pos += end+1 ++ # print(f"[šijanec.eu] debug {cmd} {newstring}") ++ continue ++ + if mystring[pos] == "{": + pos += 1 + if pos == length: |