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

Reply via email to