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: