[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#916627: stretch-pu: package glx-alternatives/0.8.8~deb9u1



Package: release.debian.org
Severity: normal
Tags: stretch
User: release.debian.org@packages.debian.org
Usertags: pu

Hi,

I'd like to upgrade the non-free nvidia-graphics-drivers package in
stretch to the 390.xx legacy branch. As a prerequisite we need an
updated version of glx-alternatives to support the changed handling of
the libGLX_indirect.so.0 symlink. It also comes with some bugfixes.

The updated package has been in stretch-backports for quite some time
already.

This pu needs to go in together with the new driver version, as it
breaks the older driver version currently in stretch.


Andreas
diff --git a/debian/changelog b/debian/changelog
index d5e1a19..653f3bc 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,44 @@
+glx-alternatives (0.8.8~deb9u1) stretch; urgency=medium
+
+  * Rebuild for stretch.
+
+ -- Andreas Beckmann <anbe@debian.org>  Sun, 16 Dec 2018 16:53:20 +0100
+
+glx-alternatives (0.8.8) unstable; urgency=medium
+
+  * glx-diversions: Put all packages that had shared libraries diverted into
+    triggers-awaited state to ensure the triggers in glx-alternative-mesa
+    setting up the glx alternative get processed earlier.  (Closes: #905908)
+  * Bump Standards-Version to 4.2.1. No changes needed.
+
+ -- Andreas Beckmann <anbe@debian.org>  Wed, 05 Sep 2018 12:04:55 +0200
+
+glx-alternatives (0.8.7) unstable; urgency=medium
+
+  * Update validation of the diverted libGL.so symlink.
+
+ -- Andreas Beckmann <anbe@debian.org>  Tue, 31 Jul 2018 17:27:59 +0200
+
+glx-alternatives (0.8.6) unstable; urgency=medium
+
+  * glx-alternative-mesa: libGLX_mesa.so.0 is not diverted and therefore not
+    an indicator to install the alternative.  (Closes: #904486)
+
+ -- Andreas Beckmann <anbe@debian.org>  Thu, 26 Jul 2018 13:55:24 +0200
+
+glx-alternatives (0.8.5) unstable; urgency=medium
+
+  * Avoid confusing diagnostic message if no nvidia alternative is available.
+
+ -- Andreas Beckmann <anbe@debian.org>  Wed, 18 Jul 2018 19:30:23 +0200
+
+glx-alternatives (0.8.4) unstable; urgency=medium
+
+  * Add diversion and alternative for libGLX_indirect.so.0.
+  * Bump Standards-Version to 4.1.5. No changes needed.
+
+ -- Andreas Beckmann <anbe@debian.org>  Mon, 16 Jul 2018 16:26:25 +0200
+
 glx-alternatives (0.8.3~deb9u1) stretch; urgency=medium
 
   * Rebuild for stretch.
diff --git a/debian/control b/debian/control
index 316d36f..d69216a 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Uploaders:
 Build-Depends:
  debhelper (>= 9),
 Rules-Requires-Root: no
-Standards-Version: 4.1.3
+Standards-Version: 4.2.1
 Vcs-Browser: https://salsa.debian.org/nvidia-team/glx-alternatives
 Vcs-Git: https://salsa.debian.org/nvidia-team/glx-alternatives.git
 
@@ -60,6 +60,9 @@ Recommends:
  glx-diversions,
 Suggests:
  libgl1-mesa-glx | libgl1,
+Breaks:
+# libGLX_indirect.so.0 alternative
+ nvidia-alternative (<< 390.67-3~),
 Description: allows the selection of MESA as GLX provider
  In setups with several GLX providers (e.g. the free MESA implementation and
  proprietary graphics hardware vendor implementations) this metapackage
@@ -88,7 +91,7 @@ Breaks:
 # does not use the nvidia/bumblebee glx alternative
  bumblebee-nvidia (<< 3.2.1-10~),
 # old-style modprobe configuration snippets
- nvidia-alternative (<< 352.55),
+# nvidia-alternative (<< 352.55),
  nvidia-legacy-340xx-alternative (<< 340.93-2~),
  nvidia-legacy-304xx-alternative (<< 304.132-1~),
 # ancient drivers
@@ -96,6 +99,8 @@ Breaks:
  nvidia-alternative-legacy-173xx (<< 304),
  nvidia-alternative-legacy-96xx (<< 304),
  nvidia-alternative-legacy-71xx (<< 304),
+# libGLX_indirect.so.0 alternative
+ nvidia-alternative (<< 390.67-3~),
 Description: allows the selection of NVIDIA as GLX provider
  In setups with several GLX providers (e.g. the free MESA implementation and
  proprietary graphics hardware vendor implementations) this metapackage
diff --git a/debian/glx-alternative-mesa.postinst b/debian/glx-alternative-mesa.postinst
index 9625595..6c70db7 100644
--- a/debian/glx-alternative-mesa.postinst
+++ b/debian/glx-alternative-mesa.postinst
@@ -26,6 +26,7 @@ add_multiarch_slave()
 	source_dir="$4"
 	source_sub_dir="$5"
 	prefix="$6"
+	srcfile="${7:-$file}"
 
 	for triplet in $TRIPLETS ; do
 		# s|/$||; s|^/|-|;
@@ -34,7 +35,7 @@ add_multiarch_slave()
 		add_slave \
 			"${target_dir}${triplet}${target_sub_dir}${file}" \
 			"${prefix}${file}${suffix}" \
-			"${source_dir}${triplet}${source_sub_dir}${file}"
+			"${source_dir}${triplet}${source_sub_dir}${srcfile}"
 	done
 }
 
@@ -53,9 +54,13 @@ setup_alternatives()
 		$(add_multiarch_slave /usr/lib "" libGLESv1_CM.so.1 /usr/lib/mesa-diverted)
 		$(add_multiarch_slave /usr/lib "" libGLESv2.so.2 /usr/lib/mesa-diverted)
 "
+	slave_indirect=
+	if ! update-alternatives --query nvidia 2>/dev/null | grep -q nvidia--libGLX_indirect.so.0- ; then
+		slave_indirect="$(add_multiarch_slave /usr/lib "" libGLX_indirect.so.0 /usr/lib "" "" libGLX_mesa.so.0)"
+	fi
 
 	if echo "$slaves" | grep -q "slave" ; then
-		update-alternatives --install /usr/lib/glx glx /usr/lib/mesa-diverted 5 $slaves
+		update-alternatives --install /usr/lib/glx glx /usr/lib/mesa-diverted 5 $slaves $slave_indirect
 	else
 		update-alternatives --remove glx /usr/lib/mesa-diverted
 	fi
diff --git a/debian/glx-alternative-mesa.triggers.sh b/debian/glx-alternative-mesa.triggers.sh
index 1fe5fc7..23f1948 100644
--- a/debian/glx-alternative-mesa.triggers.sh
+++ b/debian/glx-alternative-mesa.triggers.sh
@@ -5,8 +5,8 @@ echo "interest-await register-glx-alternative-mesa"
 echo
 
 TRIPLETS="/ /i386-linux-gnu/ /x86_64-linux-gnu/ /arm-linux-gnueabihf/"
-LIBS="libGL.so.1 libEGL.so.1 libGLESv1_CM.so.1 libGLESv2.so.2"
-SOLINKS="libGL.so libEGL.so libGLESv1_CM.so libGLESv2.so"
+LIBS="libGL.so.1 libEGL.so.1 libGLESv1_CM.so.1 libGLESv2.so.2 libGLX_mesa.so.0"
+SOLINKS="libGL.so libEGL.so libGLESv1_CM.so libGLESv2.so libGLX_indirect.so.0"
 
 for lib in $SOLINKS $LIBS
 do
diff --git a/debian/glx-alternative-nvidia.postinst b/debian/glx-alternative-nvidia.postinst
index 59cc916..c5a1034 100644
--- a/debian/glx-alternative-nvidia.postinst
+++ b/debian/glx-alternative-nvidia.postinst
@@ -37,6 +37,7 @@ add_multiarch_slave()
 	source_dir="$4"
 	source_sub_dir="$5"
 	prefix="$6"
+	srcfile="${7:-$file}"
 
 	for triplet in $TRIPLETS ; do
 		# s|/$||; s|^/|-|;
@@ -45,7 +46,7 @@ add_multiarch_slave()
 		add_slave \
 			"${target_dir}${triplet}${target_sub_dir}${file}" \
 			"${prefix}${file}${suffix}" \
-			"${source_dir}${triplet}${source_sub_dir}${file}"
+			"${source_dir}${triplet}${source_sub_dir}${srcfile}"
 	done
 }
 
@@ -92,6 +93,7 @@ setup_alternatives()
 		$(search_multiarch_slave libGL.so.1 nvidia)
 		$(add_multiarch_slave /usr/lib "" libXvMCNVIDIA.so.1 /usr/lib nvidia/)
 		$(add_multiarch_slave /usr/lib "" libXvMCNVIDIA_dynamic.so.1 /usr/lib nvidia/)
+		$(add_multiarch_slave /usr/lib "" libGLX_indirect.so.0 /usr/lib "" "" libGLX_nvidia.so.0)
 "
 	libEGL_nvidia_slaves="
 		$(search_multiarch_slave libEGL.so.1 nvidia)
@@ -100,6 +102,7 @@ setup_alternatives()
 "
 	libGL_mesa_slaves="
 		$(search_multiarch_slave libGL.so.1)
+		$(add_multiarch_slave /usr/lib "" libGLX_indirect.so.0 /usr/lib "" "" libGLX_mesa.so.0)
 "
 	libEGL_mesa_slaves="
 		$(search_multiarch_slave libEGL.so.1)
diff --git a/debian/glx-diversions.postinst b/debian/glx-diversions.postinst
index fb7011c..4f01b07 100644
--- a/debian/glx-diversions.postinst
+++ b/debian/glx-diversions.postinst
@@ -42,6 +42,7 @@ then
 	add_multiarch_diversion libGLESv2.so.2 /usr/lib /usr/lib/mesa-diverted
 	add_multiarch_diversion libGLESv2.so.2.0.0 /usr/lib /usr/lib/mesa-diverted
 	add_multiarch_diversion libGLESv2.so.2.1.0 /usr/lib /usr/lib/mesa-diverted
+	add_multiarch_diversion libGLX_indirect.so.0 /usr/lib /usr/lib/mesa-diverted
 
 fi
 
@@ -85,7 +86,11 @@ if [ "$1" = "configure" ]; then
 
 	# do some validation of the diverted libGL.so and libGL.so.1
 	for triplet in $TRIPLETS ; do
-		validate_diverted_symlink /usr/lib${triplet}libGL.so /usr/lib/mesa-diverted${triplet}libGL.so libGL.so.1
+		for target in libGL.so.1.7.0 libGL.so.1 NONE
+		do
+			test ! -f /usr/lib/mesa-diverted${triplet}${target} || break
+		done
+		validate_diverted_symlink /usr/lib${triplet}libGL.so /usr/lib/mesa-diverted${triplet}libGL.so ${target}
 		# the symlink should point to the newest (libglvnd > mesa > ancient whatever) file that we have diverted
 		for target in libGL.so.1.7.0 libGL.so.1.0.0 libGL.so.1.2.0 libGL.so.1.2 NONE
 		do
@@ -104,6 +109,12 @@ if [ "$1" = "configure" ]; then
 	dpkg-trigger /usr/lib/libGL.so.1
 	dpkg-trigger /usr/lib/libGL.so
 
+	# put all packages shipping the diverted files in triggers-awaited state
+	for package in libgl1 libegl1 libgles1 libgles2 libgl1-mesa-glx libegl1-mesa libgles1-mesa libgles2-mesa libglx-mesa0
+	do
+		dpkg-trigger --by-package=${package} register-glx-alternative-mesa
+	done
+
 	dpkg-trigger --no-await ldconfig
 
 fi
diff --git a/debian/glx-diversions.postrm b/debian/glx-diversions.postrm
index fb4015d..2386153 100644
--- a/debian/glx-diversions.postrm
+++ b/debian/glx-diversions.postrm
@@ -54,6 +54,7 @@ if [ "$1" = "remove" ]; then
 	remove_multiarch_diversion libGLESv2.so.2.0.0 /usr/lib /usr/lib/mesa-diverted
 	remove_multiarch_diversion libGLESv2.so.2 /usr/lib /usr/lib/mesa-diverted
 	remove_multiarch_diversion libGLESv2.so /usr/lib /usr/lib/mesa-diverted
+	remove_multiarch_diversion libGLX_indirect.so.0 /usr/lib /usr/lib/mesa-diverted
 
 	for triplet in $TRIPLETS ; do
 		rmdir /usr/lib/mesa-diverted${triplet} 2>/dev/null || true

Reply to: