Source: six
Version: 1.16.0-1
Severity: serious
Tags: patch

Hi,

I'm trying to solve some incomplete upgrades from buster to bullseye.
I.e. apt tries to keep some obsolete packages from buster installed and
therefore cannot upgrade some other packages instead of removing the
obsolete bits and upgrading everything upgradable. This usually needs
some additional Breaks to be added to guide apt to the right way.

One challenge upgrading from buster is to get rid of the unversioned
python and friends along with most of the packaged Python 2 modules.
The openstack stack is a bit problematic here, but this can be solved by
adding some Breaks in python-six/python3-six. (Sounds a bit non-intuitive
to add them to a python3-* package, but there is no better fitting
package with a sufficiently high score involved in these scenarios.)

I've run a lot of upgrade tests and the results look very promising that
we can improve the number of clean upgrade paths with this patch.


Andreas

PS: I thought I had sent this bug report a month ago together with all
the related fixes, but somewhere I must have missed this one.
I'll file an unblock request right away, too.
diff -Nru six-1.16.0/debian/changelog six-1.16.0/debian/changelog
--- six-1.16.0/debian/changelog 2021-05-09 12:40:54.000000000 +0200
+++ six-1.16.0/debian/changelog 2021-06-11 15:49:07.000000000 +0200
@@ -1,3 +1,18 @@
+six (1.16.0-2) UNRELEASED; urgency=medium
+
+  * python-six/python3-six: Copy Breaks: python (<< 2.7.18),
+    python-minimal (<< 2.7.18), libpython-stdlib (<< 2.7.18),
+    python-iso8601 (<< 0.1.12-2~), python-pbr (<< 5.4.5) from python2.7 to
+    ensure removal of the unversioned python packages (and some persisting
+    obsolete Python 2 module packages) on upgrades from buster. In some
+    upgrade scenarios (mostly involving openstack packages) these Breaks in
+    python2.7 were ineffective because the unversioned python packages got
+    higher scores than python2.7. python-six/python3-six are usually very
+    high scoring Python module packages in these cases, making them ideal
+    candidates for such copies of the Breaks.  (Closes: #-1)
+
+ -- Andreas Beckmann <a...@debian.org>  Fri, 11 Jun 2021 15:49:07 +0200
+
 six (1.16.0-1) unstable; urgency=medium
 
   * New upstream release.
diff -Nru six-1.16.0/debian/control six-1.16.0/debian/control
--- six-1.16.0/debian/control   2021-05-09 12:40:54.000000000 +0200
+++ six-1.16.0/debian/control   2021-06-11 15:49:07.000000000 +0200
@@ -26,6 +26,11 @@
 Multi-Arch: foreign
 Depends: ${misc:Depends},
          ${python:Depends},
+Breaks: python (<< 2.7.18),
+        python-minimal (<< 2.7.18),
+        libpython-stdlib (<< 2.7.18),
+        python-iso8601 (<< 0.1.12-2~),
+        python-pbr (<< 5.4.5),
 Description: Python 2 and 3 compatibility library (Python 2 interface)
  Six is a Python 2 and 3 compatibility library. It provides utility
  functions for smoothing over the differences between the Python versions
@@ -40,6 +45,9 @@
 Multi-Arch: foreign
 Depends: ${misc:Depends},
          ${python3:Depends},
+Breaks: python (<< 2.7.18),
+        python-minimal (<< 2.7.18),
+        libpython-stdlib (<< 2.7.18),
 Description: Python 2 and 3 compatibility library (Python 3 interface)
  Six is a Python 2 and 3 compatibility library. It provides utility
  functions for smoothing over the differences between the Python versions

Reply via email to