Hello community,

here is the log from the commit of package os-prober for openSUSE:Factory 
checked in at 2015-12-27 01:57:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/os-prober (Old)
 and      /work/SRC/openSUSE:Factory/.os-prober.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "os-prober"

Changes:
--------
--- /work/SRC/openSUSE:Factory/os-prober/os-prober.changes      2015-11-12 
19:38:55.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.os-prober.new/os-prober.changes 2015-12-27 
01:57:56.000000000 +0100
@@ -1,0 +2,13 @@
+Thu Dec 17 10:14:04 UTC 2015 - mch...@suse.com
+
+- The ld file tests cost too much as it transversed all files in 
+  the given wildcard directory and path, we should avoid when not
+  necessary. (bsc#953987)
+  * added os-prober-linux-distro-avoid-expensive-ld-file-test.patch
+- Fix missing linux16/initrd16 parsing in entry result
+- Fix kernelfile path if separate boot partition on btrfs 
+  * modified Improve-btrfs-handling-on-os-probing-for-grub2.patch
+- fix os-prober failed to detect os in btrfs root tree (bsc#957018)
+  * added os-prober-btrfs-always-detect-default.patch
+
+-------------------------------------------------------------------

New:
----
  os-prober-btrfs-always-detect-default.patch
  os-prober-linux-distro-avoid-expensive-ld-file-test.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ os-prober.spec ++++++
--- /var/tmp/diff_new_pack.leJEJN/_old  2015-12-27 01:57:57.000000000 +0100
+++ /var/tmp/diff_new_pack.leJEJN/_new  2015-12-27 01:57:57.000000000 +0100
@@ -62,6 +62,10 @@
 Patch19:        os-prober-40grub-check-grub2.patch
 # PATCH-FIX-OPENSUSE: detect os on default subvolume in snapshot (bsc#954225)
 Patch21:        os-prober-btrfs-snapshot-detection.patch
+# PATCH-FIX-OPENSUSE: os-prober update broke Linux detection (bsc#957018)
+Patch22:        os-prober-btrfs-always-detect-default.patch
+# PATCH-FIX-OPENSUSE: y2base runs at 100% cpu busy from beginning in 
installation of files to completion (bsc#953987)
+Patch23:        os-prober-linux-distro-avoid-expensive-ld-file-test.patch
 Requires:       /bin/grep
 Requires:       /bin/sed
 Requires:       /sbin/modprobe
@@ -102,6 +106,8 @@
 %patch18 -p1
 %patch19 -p1
 %patch21 -p1
+%patch22 -p1
+%patch23 -p1
 find . -name \*.orig -delete
 
 %build

++++++ Improve-btrfs-handling-on-os-probing-for-grub2.patch ++++++
--- /var/tmp/diff_new_pack.leJEJN/_old  2015-12-27 01:57:57.000000000 +0100
+++ /var/tmp/diff_new_pack.leJEJN/_new  2015-12-27 01:57:57.000000000 +0100
@@ -28,14 +28,20 @@
    identical to the fs path).
 
 Signed-off-by: Egbert Eich <e...@suse.de>
+
+v2:
+a. Fix missing linux16/initrd16 parsing in entry result
+b. Fix kernelfile path if separate boot partition on btrfs 
+
+Signed-off-by: Michael Chang <mch...@suse.com>
 ---
  linux-boot-probes/mounted/common/40grub2 | 16 +++++++++++++---
  1 file changed, 13 insertions(+), 3 deletions(-)
 
-diff --git a/linux-boot-probes/mounted/common/40grub2 
b/linux-boot-probes/mounted/common/40grub2
-index b548585..ccdbebb 100755
---- a/linux-boot-probes/mounted/common/40grub2
-+++ b/linux-boot-probes/mounted/common/40grub2
+Index: os-prober-1.61/linux-boot-probes/mounted/common/40grub2
+===================================================================
+--- os-prober-1.61.orig/linux-boot-probes/mounted/common/40grub2
++++ os-prober-1.61/linux-boot-probes/mounted/common/40grub2
 @@ -14,9 +14,19 @@ bootsv="$6"
  found_item=0
  
@@ -59,3 +65,30 @@
        else
                kernelfile=$kernel
        fi
+@@ -81,7 +91,7 @@ parse_grub_menu () {
+                                       ignore_item=1
+                               fi
+                       ;;
+-                      linux|linuxefi)
++                      linux|linuxefi|linux16)
+                               # Hack alert: sed off any (hdn,n) but
+                               # assume the kernel is on the same
+                               # partition.
+@@ -90,14 +100,14 @@ parse_grub_menu () {
+                               parameters="$@"
+                               # Systems with a separate /boot will not have
+                               # the path to the kernel in grub.cfg.
+-                              if [ "$partition" != "$bootpart" ]; then
++                              if [ "$partition" != "$bootpart" -a "$type" != 
"btrfs" ]; then
+                                       kernel="/boot$kernel"
+                               fi
+                       ;;
+-                      initrd|initrdefi)
++                      initrd|initrdefi|initrd16)
+                               initrd="$(echo "$2" | sed 's/(.*)//')"
+                               # Initrd same.
+-                              if [ "$partition" != "$bootpart" ]; then
++                              if [ "$partition" != "$bootpart" -a "$type" != 
"btrfs" ]; then
+                                       initrd="/boot$initrd"
+                               fi
+                       ;;

++++++ os-prober-btrfs-always-detect-default.patch ++++++
Index: os-prober-1.61/linux-boot-prober
===================================================================
--- os-prober-1.61.orig/linux-boot-prober
+++ os-prober-1.61/linux-boot-prober
@@ -67,7 +67,12 @@ if [ "$type" = btrfs ]; then
        fi
        if [ -z "$mpoint" ]; then
                # mount the btrfs root
-               if ! mount -o subvol=$subvol -t btrfs -U $UUID "$tmpmnt" 
2>/dev/null; then
+
+               if [ -n "$subvol" ]; then
+                       opts="-o subvol=$subvol"
+               fi
+
+               if ! mount $opts -t btrfs -U $UUID "$tmpmnt" 2>/dev/null; then
                        warn "error mounting btrfs subvol=$subvol UUID=$UUID"
                        umount "$tmpmnt/boot" 2>/dev/null
                        umount "$tmpmnt" 2>/dev/null
Index: os-prober-1.61/os-probes/common/50mounted-tests
===================================================================
--- os-prober-1.61.orig/os-probes/common/50mounted-tests
+++ os-prober-1.61/os-probes/common/50mounted-tests
@@ -99,6 +99,48 @@ if [ "$mounted" ]; then
        fi
 fi
 
+
+probe_subvol ()
+{
+       local subvol=$1
+       local partition=$2
+       local UUID=$3
+       local tmpmnt=$4
+
+       mounted=
+       mpoint="$(grep btrfs /proc/self/mountinfo | grep "$partition " | grep 
"/$subvol " | cut -d ' ' -f 5)"
+       ret=1
+
+       if [ -n "$subvol" ]; then
+               opts="-o subvol=$subvol"
+       fi
+
+       if [ -n "$mpoint" ]; then
+               if [ "x$mpoint" = "x/" ]; then
+                       continue # this is the root for the running system
+               fi
+               mounted=1
+       else
+               # again, do not mount btrfs ro
+               mount -t btrfs $opts -U "$UUID" "$tmpmnt"
+               mpoint="$tmpmnt"
+       fi
+       test="/usr/lib/os-probes/mounted/90linux-distro"
+       if [ -f "$test" ] && [ -x "$test" ]; then
+               debug "running subtest $test"
+               if "$test" "$partition" "$mpoint" btrfs "UUID=$UUID" 
"subvol=$subvol"; then
+                       debug "os found by subtest $test on subvol $subvol"
+                       ret=0
+               fi
+       fi
+       if [ -z "$mounted" ]; then
+               if ! umount "$tmpmnt"; then
+                       warn "failed to umount $tmpmnt"
+               fi
+       fi
+       return $ret
+}
+
 # all btrfs subvol processing here.  Handle both unmounted and
 # mounted subvolumes.
 if [ "$types" = btrfs ]; then
@@ -121,45 +163,23 @@ if [ "$types" = btrfs ]; then
             rmdir "$tmpmnt" || true
             exit 1
         fi
-       if [ -z "$subvols" ]; then
-               debug "no subvols found on btrfs volume $UUID"
-               exit 1
-       fi
+
        found=
-        for subvol in $subvols; do
-               debug "begin btrfs processing for $UUID subvol=$subvol"
-                if [ "$subvol" != "$defaultvol" ]; then
-                       if echo "$rosubvols" | grep -q -x "$subvol"; then
-                               continue
-                       fi
-                       if echo "$sssubvols" | grep -q -x "$subvol"; then
-                               continue
-                       fi
-               fi
-               mounted=
-               mpoint="$(grep btrfs /proc/self/mountinfo | grep "$partition " 
| grep "/$subvol " | cut -d ' ' -f 5)"
-               if [ -n "$mpoint" ]; then
-                       if [ "x$mpoint" = "x/" ]; then
-                               continue # this is the root for the running 
system
-                       fi
-                       mounted=1
-               else
-                       # again, do not mount btrfs ro
-                       mount -t btrfs -o subvol="$subvol" -U "$UUID" "$tmpmnt"
-                       mpoint="$tmpmnt"
-               fi
-               test="/usr/lib/os-probes/mounted/90linux-distro"
-               if [ -f "$test" ] && [ -x "$test" ]; then
-                       debug "running subtest $test"
-                       if "$test" "$partition" "$mpoint" btrfs "UUID=$UUID" 
"subvol=$subvol"; then
-                               debug "os found by subtest $test on subvol 
$subvol"
-                               found=1
-                       fi
+       # Always probe subvol or root set as default
+       if probe_subvol "$defaultvol" "$partition" "$UUID" "$tmpmnt"; then
+               found=1
+       fi
+
+       # Probe any other OS on subvol
+       for subvol in $subvols; do
+               if echo "$rosubvols" | grep -q -x "$subvol" ||
+                  echo "$sssubvols" | grep -q -x "$subvol" ||
+                  echo "$defaultvol" | grep -q -x "$subvol"; then
+                       continue
                fi
-               if [ -z "$mounted" ]; then
-                       if ! umount "$tmpmnt"; then
-                           warn "failed to umount $tmpmnt"
-                       fi
+               debug "begin btrfs processing for $UUID subvol=$subvol"
+               if probe_subvol "$subvol" "$partition" "$UUID" "$tmpmnt"; then
+                       found=1
                fi
        done
        if [ "$found" ]; then
++++++ os-prober-linux-distro-avoid-expensive-ld-file-test.patch ++++++
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"
 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
-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"
-               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
-               short="Linux"
-               long="unknown Linux distribution"
-       fi
-       
-        label="$(count_next_label "$short")"
-       if [ "x$type" = "xbtrfs" -a "x$uuid" != "x" -a "x$subvol" != "x" ]; then
-               result "$partition:$long:$label:linux:$type:$uuid:$subvol"
-       else
-               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"
 else
        exit 1
 fi
+
+label="$(count_next_label "$short")"
+if [ "x$type" = "xbtrfs" -a "x$uuid" != "x" -a "x$subvol" != "x" ]; then
+       result "$partition:$long:$label:linux:$type:$uuid:$subvol"
+else
+       result "$partition:$long:$label:linux"
+fi
+exit 0
Index: os-prober-1.70/os-prober
===================================================================
--- os-prober-1.70.orig/os-prober
+++ os-prober-1.70/os-prober
@@ -187,6 +187,11 @@ for partition in $(partitions); do
        # be handled by 50mounted-tests so we can do a subvol only once.
        type=$(blkid -o value -s TYPE $mapped || true)
        if [ "$type" = btrfs ]; then
+               mpoint=$(grep "^$mapped " "$OS_PROBER_TMP/mounted-map" | head 
-n1 | cut -d " " -f 2)
+               mpoint="$(unescape_mount "$mpoint")"
+               if [ "$mpoint" = "/target/boot" ] || [ "$mpoint" = "/target" ] 
|| [ "$mpoint" = "/" ]; then
+                       continue
+               fi
                uuid=$(blkid -o value -s UUID $mapped)
                if grep -q "^$uuid" "$OS_PROBER_TMP/btrfs-vols" ; then
                        continue

Reply via email to