summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--etc/portage/patches/sys-apps/portage/command-substitution.patch25
-rwxr-xr-xroot/posodobi.sh8
2 files changed, 33 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:
diff --git a/root/posodobi.sh b/root/posodobi.sh
new file mode 100755
index 0000000..3d0cdf6
--- /dev/null
+++ b/root/posodobi.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -e
+f=
+grep "--no-sync" <<<"@$" || emaint sync --auto
+grep "--no-ask" <<<"@$" || f=--ask
+emerge --verbose --update $f --newuse --changed-use --backtrack 30 --deep @world
+emerge @preserved-rebuild
+emerge --depclean