diff --git a/os-prober-linux-distro-avoid-expensive-ld-file-test.patch b/os-prober-linux-distro-avoid-expensive-ld-file-test.patch index facb6c6..639acb7 100644 --- a/os-prober-linux-distro-avoid-expensive-ld-file-test.patch +++ b/os-prober-linux-distro-avoid-expensive-ld-file-test.patch @@ -2,124 +2,19 @@ Index: os-prober-1.70/os-probes/mounted/common/90linux-distro =================================================================== --- os-prober-1.70.orig/os-probes/mounted/common/90linux-distro +++ os-prober-1.70/os-probes/mounted/common/90linux-distro -@@ -10,6 +10,113 @@ type="$3" +@@ -10,135 +10,121 @@ type="$3" uuid="$4" subvol="$5" -+if [ -e "$dir/etc/debian_version" ]; then -+ short="Debian" -+ long="$(printf "Debian GNU/Linux (%s)\n" "$(cat "$dir/etc/debian_version")")" -+# RPM derived distributions may also have a redhat-release or -+# mandrake-release, so check their files first. -+elif [ -e "$dir/etc/altlinux-release" ]; then -+ short="ALTLinux" -+ long="$(cat "$dir/etc/altlinux-release")" -+elif [ -e "$dir/etc/magic-release" ]; then -+ short="Magic" -+ long="$(cat "$dir/etc/magic-release")" -+elif [ -e "$dir/etc/blackPanther-release" ]; then -+ short="blackPanther" -+ long="$(cat "$dir/etc/blackPanther-release")" -+elif [ -e "$dir/etc/ark-release" ]; then -+ short="Ark" -+ long="$(cat "$dir/etc/ark-release")" -+elif [ -e "$dir/etc/arch-release" ]; then -+ short="Arch" -+ long="$(cat "$dir/etc/arch-release")" -+elif [ -e "$dir/etc/asplinux-release" ]; then -+ short="ASPLinux" -+ long="$(cat "$dir/etc/asplinux-release")" -+elif [ -e "$dir/etc/lvr-release" ]; then -+ short="LvR" -+ long="$(cat "$dir/etc/lvr-release")" -+elif [ -e "$dir/etc/caos-release" ]; then -+ short="cAos" -+ long="$(cat "$dir/etc/caos-release")" -+elif [ -e "$dir/etc/aurox-release" ]; then -+ short="Aurox" -+ long="$(cat "$dir/etc/aurox-release")" -+elif [ -e "$dir/etc/engarde-release" ]; then -+ short="EnGarde" -+ long="$(cat "$dir/etc/engarde-release")" -+elif [ -e "$dir/etc/vine-release" ]; then -+ short="Vine" -+ long="$(cat "$dir/etc/vine-release")" -+elif [ -e "$dir/etc/whitebox-release" ]; then -+ short="WhiteBox" -+ long="$(cat "$dir/etc/whitebox-release")" -+elif [ -e "$dir/etc/pld-release" ]; then -+ short="PLD" -+ long="$(cat "$dir/etc/pld-release")" -+elif [ -e "$dir/etc/startcom-release" ]; then -+ short="StartCom" -+ long="$(cat "$dir/etc/startcom-release")" -+elif [ -e "$dir/etc/trustix-release" ]; then -+ short="Trustix" -+ long="$(cat "$dir/etc/trustix-release")" -+elif [ -e "$dir/etc/openna-release" ]; then -+ short="OpenNA" -+ long="$(cat "$dir/etc/openna-release")" -+elif [ -e "$dir/etc/conectiva-release" ]; then -+ short="Conectiva" -+ long="$(cat "$dir/etc/conectiva-release")" -+elif [ -e "$dir/etc/mandrake-release" ]; then -+ short="Mandrake" -+ long="$(cat "$dir/etc/mandrake-release")" -+elif [ -e "$dir/etc/fedora-release" ]; then -+ short="Fedora" -+ long="$(cat "$dir/etc/fedora-release")" -+elif [ -e "$dir/etc/redhat-release" ]; then -+ short="RedHat" -+ long="$(cat "$dir/etc/redhat-release")" -+elif [ -e "$dir/etc/SuSE-release" ]; then -+ short="SUSE" -+ long="$(head -n 1 "$dir/etc/SuSE-release")" -+elif [ -e "$dir/etc/gentoo-release" ]; then -+ short="Gentoo" -+ long="$(cat "$dir/etc/gentoo-release")" -+elif [ -e "$dir/etc/cobalt-release" ]; then -+ short="Cobalt" -+ long="$(cat "$dir/etc/cobalt-release")" -+elif [ -e "$dir/etc/yellowdog-release" ]; then -+ short="YellowDog" -+ long="$(cat "$dir/etc/yellowdog-release")" -+elif [ -e "$dir/etc/turbolinux-release" ]; then -+ short="Turbolinux" -+ long="$(cat "$dir/etc/turbolinux-release")" -+elif [ -e "$dir/etc/pardus-release" ]; then -+ short="Pardus" -+ long="$(cat "$dir/etc/pardus-release")" -+elif [ -e "$dir/etc/kanotix-version" ]; then -+ short="Kanotix" -+ long="$(cat "$dir/etc/kanotix-version")" -+elif [ -e "$dir/etc/slackware-version" ]; then -+ short="Slackware" -+ long="$(printf "Slackware Linux (%s)\n" "$(cat "$dir/etc/slackware-version")")" -+elif [ -e "$dir/sbin/pkgtool" ]; then -+ short="Slackware" -+ long="Slackware Linux" -+elif grep -qs OpenLinux "$dir/etc/issue"; then -+ short="Caldera" -+ long="Caldera OpenLinux" -+elif [ -e "$dir/etc/frugalware-release" ]; then -+ short="Frugalware Linux" -+ long="$(cat "$dir/etc/frugalware-release")" -+elif [ -e "$dir/etc/kdemar-release" ]; then -+ short="K-DEMar" -+ long="$(printf "K-DEMar GNU/Linux (%s)\n" "$(cat "$dir/etc/kdemar-release")")" -+elif [ -e "$dir/etc/lfs-release" ]; then -+ short="LFS" -+ long="$(printf "Linux From Scratch (%s)\n" "$(cat "$dir/etc/lfs-release")")" -+elif [ -e "$dir/etc/meego-release" ]; then -+ short="MeeGo" -+ long="$(head -1 "$dir/etc/meego-release")" - # This test is inaccurate, but given separate / and /boot partitions and the - # fact that only some architectures have ld-linux.so, I can't see anything - # better. Make sure this test has a high number so that more accurate tests -@@ -19,126 +126,17 @@ subvol="$5" - # symlinks we need to also check in $dir/usr/lib* for distributions that - # moved /lib* to /usr and only left symlinks behind. - # TODO: look for ld-linux.so on arches that have it +-# This test is inaccurate, but given separate / and /boot partitions and the +-# fact that only some architectures have ld-linux.so, I can't see anything +-# better. Make sure this test has a high number so that more accurate tests +-# can come first. +-# Unless volumes to checked are already mounted, they will be mounted using +-# GRUB's own filesystems through FUSE. Since these ATM doesn't support +-# symlinks we need to also check in $dir/usr/lib* for distributions that +-# moved /lib* to /usr and only left symlinks behind. +-# TODO: look for ld-linux.so on arches that have it -if (ls "$dir"/lib*/ld*.so* || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then - if [ -e "$dir/etc/debian_version" ]; then - short="Debian" @@ -240,9 +135,113 @@ Index: os-prober-1.70/os-probes/mounted/common/90linux-distro - result "$partition:$long:$label:linux" - fi - exit 0 -+elif (ls "$dir"/lib*/ld*.so* || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then -+ short="Linux" -+ long="unknown Linux distribution" ++if [ -e "$dir/etc/debian_version" ]; then ++ short="Debian" ++ long="$(printf "Debian GNU/Linux (%s)\n" "$(cat "$dir/etc/debian_version")")" ++# RPM derived distributions may also have a redhat-release or ++# mandrake-release, so check their files first. ++elif [ -e "$dir/etc/altlinux-release" ]; then ++ short="ALTLinux" ++ long="$(cat "$dir/etc/altlinux-release")" ++elif [ -e "$dir/etc/magic-release" ]; then ++ short="Magic" ++ long="$(cat "$dir/etc/magic-release")" ++elif [ -e "$dir/etc/blackPanther-release" ]; then ++ short="blackPanther" ++ long="$(cat "$dir/etc/blackPanther-release")" ++elif [ -e "$dir/etc/ark-release" ]; then ++ short="Ark" ++ long="$(cat "$dir/etc/ark-release")" ++elif [ -e "$dir/etc/arch-release" ]; then ++ short="Arch" ++ long="$(cat "$dir/etc/arch-release")" ++elif [ -e "$dir/etc/asplinux-release" ]; then ++ short="ASPLinux" ++ long="$(cat "$dir/etc/asplinux-release")" ++elif [ -e "$dir/etc/lvr-release" ]; then ++ short="LvR" ++ long="$(cat "$dir/etc/lvr-release")" ++elif [ -e "$dir/etc/caos-release" ]; then ++ short="cAos" ++ long="$(cat "$dir/etc/caos-release")" ++elif [ -e "$dir/etc/aurox-release" ]; then ++ short="Aurox" ++ long="$(cat "$dir/etc/aurox-release")" ++elif [ -e "$dir/etc/engarde-release" ]; then ++ short="EnGarde" ++ long="$(cat "$dir/etc/engarde-release")" ++elif [ -e "$dir/etc/vine-release" ]; then ++ short="Vine" ++ long="$(cat "$dir/etc/vine-release")" ++elif [ -e "$dir/etc/whitebox-release" ]; then ++ short="WhiteBox" ++ long="$(cat "$dir/etc/whitebox-release")" ++elif [ -e "$dir/etc/pld-release" ]; then ++ short="PLD" ++ long="$(cat "$dir/etc/pld-release")" ++elif [ -e "$dir/etc/startcom-release" ]; then ++ short="StartCom" ++ long="$(cat "$dir/etc/startcom-release")" ++elif [ -e "$dir/etc/trustix-release" ]; then ++ short="Trustix" ++ long="$(cat "$dir/etc/trustix-release")" ++elif [ -e "$dir/etc/openna-release" ]; then ++ short="OpenNA" ++ long="$(cat "$dir/etc/openna-release")" ++elif [ -e "$dir/etc/conectiva-release" ]; then ++ short="Conectiva" ++ long="$(cat "$dir/etc/conectiva-release")" ++elif [ -e "$dir/etc/mandrake-release" ]; then ++ short="Mandrake" ++ long="$(cat "$dir/etc/mandrake-release")" ++elif [ -e "$dir/etc/fedora-release" ]; then ++ short="Fedora" ++ long="$(cat "$dir/etc/fedora-release")" ++elif [ -e "$dir/etc/redhat-release" ]; then ++ short="RedHat" ++ long="$(cat "$dir/etc/redhat-release")" ++elif [ -e "$dir/etc/SuSE-release" ]; then ++ short="SUSE" ++ long="$(head -n 1 "$dir/etc/SuSE-release")" ++elif [ -e "$dir/etc/gentoo-release" ]; then ++ short="Gentoo" ++ long="$(cat "$dir/etc/gentoo-release")" ++elif [ -e "$dir/etc/cobalt-release" ]; then ++ short="Cobalt" ++ long="$(cat "$dir/etc/cobalt-release")" ++elif [ -e "$dir/etc/yellowdog-release" ]; then ++ short="YellowDog" ++ long="$(cat "$dir/etc/yellowdog-release")" ++elif [ -e "$dir/etc/turbolinux-release" ]; then ++ short="Turbolinux" ++ long="$(cat "$dir/etc/turbolinux-release")" ++elif [ -e "$dir/etc/pardus-release" ]; then ++ short="Pardus" ++ long="$(cat "$dir/etc/pardus-release")" ++elif [ -e "$dir/etc/kanotix-version" ]; then ++ short="Kanotix" ++ long="$(cat "$dir/etc/kanotix-version")" ++elif [ -e "$dir/etc/slackware-version" ]; then ++ short="Slackware" ++ long="$(printf "Slackware Linux (%s)\n" "$(cat "$dir/etc/slackware-version")")" ++elif [ -e "$dir/sbin/pkgtool" ]; then ++ short="Slackware" ++ long="Slackware Linux" ++elif grep -qs OpenLinux "$dir/etc/issue"; then ++ short="Caldera" ++ long="Caldera OpenLinux" ++elif [ -e "$dir/etc/frugalware-release" ]; then ++ short="Frugalware Linux" ++ long="$(cat "$dir/etc/frugalware-release")" ++elif [ -e "$dir/etc/kdemar-release" ]; then ++ short="K-DEMar" ++ long="$(printf "K-DEMar GNU/Linux (%s)\n" "$(cat "$dir/etc/kdemar-release")")" ++elif [ -e "$dir/etc/lfs-release" ]; then ++ short="LFS" ++ long="$(printf "Linux From Scratch (%s)\n" "$(cat "$dir/etc/lfs-release")")" ++elif [ -e "$dir/etc/meego-release" ]; then ++ short="MeeGo" ++ long="$(head -1 "$dir/etc/meego-release")" else exit 1 fi diff --git a/os-prober-linux-distro-parse-os-release.patch b/os-prober-linux-distro-parse-os-release.patch index 5646631..b0e426f 100644 --- a/os-prober-linux-distro-parse-os-release.patch +++ b/os-prober-linux-distro-parse-os-release.patch @@ -20,6 +20,6 @@ Index: os-prober-1.70/os-probes/mounted/common/90linux-distro +elif [ -e "$dir/etc/os-release" ]; then + short=$(sed -n "/^NAME=/{s@\"\(.*\)\"@\1@;t 1;s@'\(.*\)'@\1@;: 1;s@^[^=]\+=@@;p;b}" $dir/etc/os-release) + long="$short $(sed -n "/^VERSION=/{s@\"\(.*\)\"@\1@;t 1;s@'\(.*\)'@\1@;: 1;s@^[^=]\+=@@;p;b}" $dir/etc/os-release)" - # This test is inaccurate, but given separate / and /boot partitions and the - # fact that only some architectures have ld-linux.so, I can't see anything - # better. Make sure this test has a high number so that more accurate tests + else + exit 1 + fi diff --git a/os-prober.changes b/os-prober.changes index ac2b9d4..16f75a7 100644 --- a/os-prober.changes +++ b/os-prober.changes @@ -1,3 +1,13 @@ +------------------------------------------------------------------- +Tue Nov 15 09:03:26 UTC 2016 - mchang@suse.com + +- The wildcard test for ld.so is inaccurate, slow and sometimes hangs a + long time with grub2-mount. Disable it becuase it does quite opposite + it was intended to do, that is having an inital quick filter for non + linux partition to speed things up. (bsc#1008444) + * modified os-prober-linux-distro-avoid-expensive-ld-file-test.patch + * refresh os-prober-linux-distro-parse-os-release.patch + ------------------------------------------------------------------- Tue Oct 4 08:28:26 UTC 2016 - mchang@suse.com