Sophie

Sophie

distrib > Mageia > 9 > i586 > by-pkgid > 4059bfc13bd9ebd7ee31e446c4da4903 > files > 21

os-prober-1.81-2.mga9.src.rpm

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,153 +10,133 @@ type="$3"
 uuid="$4"
 subvol="$5"
 
-# 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* && [ -d "$dir/boot" ] || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
-	if [ -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/usr/lib/os-release" ]; then
-		short="$(grep ^NAME= "$dir/usr/lib/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g; s/[[:space:]].*//')"
-		long="$(grep ^PRETTY_NAME= "$dir/usr/lib/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g')"
-	elif [ -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/mageia-release" ]; then
-		short="Mageia"
-		long="$(cat "$dir/etc/mageia-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")"
-	elif [ -e "$dir/etc/4MLinux-version" ]; then
-		short="4MLinux"
-		long="4MLinux $(head -1 "$dir/etc/4MLinux-version")"
-	elif [ -e "$dir/etc/devuan_version" ]; then
-		short="Devuan"
-		long="$(printf "Devuan GNU/Linux (%s)\n" "$(cat "$dir/etc/devuan_version")")"
-	elif [ -e "$dir/etc/exherbo-release" ]; then
-		short="Exherbo"
-		long="Exherbo Linux"
-	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
+if [ -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
+	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/mageia-release" ]; then
+	short="Mageia"
+	long="$(cat "$dir/etc/mageia-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")"
+elif [ -e "$dir/etc/4MLinux-version" ]; then
+	short="4MLinux"
+	long="4MLinux $(head -1 "$dir/etc/4MLinux-version")"
+elif [ -e "$dir/etc/devuan_version" ]; then
+	short="Devuan"
+	long="$(printf "Devuan GNU/Linux (%s)\n" "$(cat "$dir/etc/devuan_version")")"
 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/os-prober
===================================================================
--- os-prober.orig/os-prober
+++ os-prober/os-prober
@@ -186,6 +186,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