[pkg-nvidia-devel] r1389 - in /packages/nvidia-graphics-drivers/trunk/debian: changelog libgl1-nvidia-glx-ia32.preinst libgl1-nvidia-glx.preinst

anbe-guest at users.alioth.debian.org anbe-guest at users.alioth.debian.org
Sun Jul 18 11:09:59 UTC 2010


Author: anbe-guest
Date: Sun Jul 18 11:09:58 2010
New Revision: 1389

URL: http://svn.debian.org/wsvn/pkg-nvidia/?sc=1&rev=1389
Log:
Add preinst check to libgl1-nvidia-glx{,-ia32} to prevent upgrades when
old versions of nvidia-glx{,-ia32} are still installed because the
diversion migration will fail.  This only happens when the packages are
manually passed in the wrong order to dpkg -i.  apt-get and aptitude
correctly reorder the packages according to Conflicts/Replaces/Depends.

Modified:
    packages/nvidia-graphics-drivers/trunk/debian/changelog
    packages/nvidia-graphics-drivers/trunk/debian/libgl1-nvidia-glx-ia32.preinst
    packages/nvidia-graphics-drivers/trunk/debian/libgl1-nvidia-glx.preinst

Modified: packages/nvidia-graphics-drivers/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-nvidia/packages/nvidia-graphics-drivers/trunk/debian/changelog?rev=1389&op=diff
==============================================================================
--- packages/nvidia-graphics-drivers/trunk/debian/changelog (original)
+++ packages/nvidia-graphics-drivers/trunk/debian/changelog Sun Jul 18 11:09:58 2010
@@ -10,6 +10,11 @@
     libgl1-mesa-glx | libgl1 only.  (Closes: #587091)
   * Split the nvidia-glx{,-ia32} packages, move the runtime libraries to
     libgl1-nvidia-glx{,-ia32}.  (Closes: #369316)
+  * Add preinst check to libgl1-nvidia-glx{,-ia32} to prevent upgrades when
+    old versions of nvidia-glx{,-ia32} are still installed because the
+    diversion migration will fail.  This only happens when the packages are
+    manually passed in the wrong order to dpkg -i.  apt-get and aptitude
+    correctly reorder the packages according to Conflicts/Replaces/Depends.
   * Rename package nvidia-glx-dev to libgl1-nvidia-dev (add dummy package).
   * Introduce virtual packages nvidia-glx{,-ia32}, libgl1-nvidia-glx{,-ia32},
     libgl1-nvidia-dev, nvidia-kernel-dkms.  Add a matching Provides/Conflicts:

Modified: packages/nvidia-graphics-drivers/trunk/debian/libgl1-nvidia-glx-ia32.preinst
URL: http://svn.debian.org/wsvn/pkg-nvidia/packages/nvidia-graphics-drivers/trunk/debian/libgl1-nvidia-glx-ia32.preinst?rev=1389&op=diff
==============================================================================
--- packages/nvidia-graphics-drivers/trunk/debian/libgl1-nvidia-glx-ia32.preinst (original)
+++ packages/nvidia-graphics-drivers/trunk/debian/libgl1-nvidia-glx-ia32.preinst Sun Jul 18 11:09:58 2010
@@ -5,6 +5,27 @@
 #DIVERT_QUIET="--quiet"
 
 # <target: squeeze>
+# $1 = package name, $2 = first not conflicting version
+check_package_conflict()
+{
+	is_installed=$(dpkg-query -l "$1" 2>/dev/null | grep "$1" | cut -c2 || true)
+	if [ "$is_installed" = "" ] || [ "$is_installed" = "n" ] || [ "$is_installed" = "c" ]
+	then
+		# package is unknown, not installed or has only config files remaining - no problem
+		return
+	fi
+	installed_version=$(dpkg-query -s "$1" | grep ^Version: | cut -d' ' -f2 || true)
+	if dpkg --compare-versions "$installed_version" lt-nl "$2"
+	then
+		echo "ERROR: An old version ($installed_version) of $1 (<< $2)"
+		echo "       is still installed (state=$is_installed)."
+		echo "       Please correct the package upgrade ordering."
+		echo "Aborting installation of $DPKG_MAINTSCRIPT_PACKAGE."
+		exit 1
+	fi
+	return
+}
+
 exists()
 {
 	test -e "$1" || test -L "$1"
@@ -12,6 +33,9 @@
 
 if [ "$1" = "install" ]
 then
+
+	# Upgrading the packages in the wrong order causes big problems w.r.t. taking over the diversions.
+	check_package_conflict "$(echo $DPKG_MAINTSCRIPT_PACKAGE | sed -r 's/libgl1-nvidia(.*)-glx/nvidia-glx\1/')" 195.36.31
 
 	# the destination directory for the diversions
 	test -d /usr/lib32/nvidia/diversions || \

Modified: packages/nvidia-graphics-drivers/trunk/debian/libgl1-nvidia-glx.preinst
URL: http://svn.debian.org/wsvn/pkg-nvidia/packages/nvidia-graphics-drivers/trunk/debian/libgl1-nvidia-glx.preinst?rev=1389&op=diff
==============================================================================
--- packages/nvidia-graphics-drivers/trunk/debian/libgl1-nvidia-glx.preinst (original)
+++ packages/nvidia-graphics-drivers/trunk/debian/libgl1-nvidia-glx.preinst Sun Jul 18 11:09:58 2010
@@ -5,6 +5,27 @@
 #DIVERT_QUIET="--quiet"
 
 # <target: squeeze>
+# $1 = package name, $2 = first not conflicting version
+check_package_conflict()
+{
+	is_installed=$(dpkg-query -l "$1" 2>/dev/null | grep "$1" | cut -c2 || true)
+	if [ "$is_installed" = "" ] || [ "$is_installed" = "n" ] || [ "$is_installed" = "c" ]
+	then
+		# package is unknown, not installed or has only config files remaining - no problem
+		return
+	fi
+	installed_version=$(dpkg-query -s "$1" | grep ^Version: | cut -d' ' -f2 || true)
+	if dpkg --compare-versions "$installed_version" lt-nl "$2"
+	then
+		echo "ERROR: An old version ($installed_version) of $1 (<< $2)"
+		echo "       is still installed (state=$is_installed)."
+		echo "       Please correct the package upgrade ordering."
+		echo "Aborting installation of $DPKG_MAINTSCRIPT_PACKAGE."
+		exit 1
+	fi
+	return
+}
+
 exists()
 {
 	test -e "$1" || test -L "$1"
@@ -12,6 +33,9 @@
 
 if [ "$1" = "install" ]
 then
+
+	# Upgrading the packages in the wrong order causes big problems w.r.t. taking over the diversions.
+	check_package_conflict "$(echo $DPKG_MAINTSCRIPT_PACKAGE | sed -r 's/libgl1-nvidia(.*)-glx/nvidia-glx\1/')" 195.36.31
 
 	# the destination directory for the diversions
 	test -d /usr/lib/nvidia/diversions || \




More information about the Pkg-nvidia-devel mailing list