Package: release.debian.org Severity: normal Tags: stretch User: release.debian....@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 <a...@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 <a...@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 <a...@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 <a...@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 <a...@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 <a...@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