summaryrefslogtreecommitdiff
path: root/sys-boot/os-prober/files/os-prober-linux-distro-parse-os-release.patch
diff options
context:
space:
mode:
Diffstat (limited to 'sys-boot/os-prober/files/os-prober-linux-distro-parse-os-release.patch')
-rw-r--r--sys-boot/os-prober/files/os-prober-linux-distro-parse-os-release.patch24
1 files changed, 24 insertions, 0 deletions
diff --git a/sys-boot/os-prober/files/os-prober-linux-distro-parse-os-release.patch b/sys-boot/os-prober/files/os-prober-linux-distro-parse-os-release.patch
new file mode 100644
index 00000000..2aa2b316
--- /dev/null
+++ b/sys-boot/os-prober/files/os-prober-linux-distro-parse-os-release.patch
@@ -0,0 +1,24 @@
+Index: os-prober/os-probes/mounted/common/90linux-distro
+===================================================================
+--- os-prober.orig/os-probes/mounted/common/90linux-distro
++++ os-prober/os-probes/mounted/common/90linux-distro
+@@ -10,7 +10,18 @@ type="$3"
+ uuid="$4"
+ subvol="$5"
+
+-if [ -e "$dir/etc/os-release" ]; then
++if [ -L "$dir/etc/os-release" ]; then
++ RELPATH=$(readlink -f "$dir/etc/os-release")
++ if readlink "$dir/etc/os-release" | grep -q '^/'; then
++ RELPATH="$dir$RELPATH"
++ fi
++ if [ -f "$RELPATH" ]; then
++ short="$(grep ^NAME= "$RELPATH" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g; s/[[:space:]].*//')"
++ long="$(grep ^PRETTY_NAME= "$RELPATH" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g')"
++ else
++ exit 1
++ fi
++elif [ -e "$dir/etc/os-release" ]; then
+ short="$(grep ^NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g; s/[[:space:]].*//')"
+ long="$(grep ^PRETTY_NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g')"
+ elif [ -e "$dir/etc/debian_version" ]; then