Package: libboost-thread1.74.0 Version: 1.74.0+ds1-20 Severity: serious Tags: patch User: debian...@lists.debian.org Usertags: piuparts
Hi, while analyzing piuparts bullseye->bookworm upgrade logs, I noticed several cases where apt has problems upgrading libboost-regex1.74.0 because obsolete packages depending on the virtual package libboost-regex1.74.0-icu67 make apt keep the old version installed. The new version provides libboost-regex1.74.0-icu72, but the score between the two virtual ones is usually a tie, favoring the installed one. While there is no direct dependency relationship between libboost-regex1.74.0 and libboost-thread1.74.0, in all cases I looked into libboost-thread1.74.0 was installed, too, and had a higher score, thus making it an ideal candidate for adding some Breaks. One prominent example is wesnoth which fails to upgrade: ... Starting 2 pkgProblemResolver with broken count: 2 Investigating (0) wesnoth-1.14-core:amd64 < 1:1.14.15-1 @ii mK Ib > Broken wesnoth-1.14-core:amd64 Depends on libboost-regex1.74.0-icu67:amd64 < none @un H > Considering libboost-regex1.74.0:amd64 1 as a solution to wesnoth-1.14-core:amd64 34 Added libboost-regex1.74.0:amd64 to the remove list Fixing wesnoth-1.14-core:amd64 via keep of libboost-regex1.74.0:amd64 Investigating (0) wesnoth-1.16-core:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-core:amd64 Depends on libboost-regex1.74.0-icu72:amd64 < none @un H > Considering libboost-regex1.74.0:amd64 1 as a solution to wesnoth-1.16-core:amd64 33 Holding Back wesnoth-1.16-core:amd64 rather than change libboost-regex1.74.0-icu72:amd64 Try to Re-Instate (0) libboost-regex1.74.0:amd64 Investigating (0) wesnoth-1.16-utbs:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-utbs:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-utbs:amd64 0 Holding Back wesnoth-1.16-utbs:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-trow:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-trow:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-trow:amd64 0 Holding Back wesnoth-1.16-trow:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-dw:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-dw:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-dw:amd64 0 Holding Back wesnoth-1.16-dw:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-dm:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-dm:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-dm:amd64 0 Holding Back wesnoth-1.16-dm:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-sof:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-sof:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-sof:amd64 0 Holding Back wesnoth-1.16-sof:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-ei:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-ei:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-ei:amd64 0 Holding Back wesnoth-1.16-ei:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-nr:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-nr:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-nr:amd64 0 Holding Back wesnoth-1.16-nr:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-tsg:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-tsg:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-tsg:amd64 0 Holding Back wesnoth-1.16-tsg:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-ttb:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-ttb:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-ttb:amd64 0 Holding Back wesnoth-1.16-ttb:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-sotbe:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-sotbe:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-sotbe:amd64 0 Holding Back wesnoth-1.16-sotbe:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-did:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-did:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-did:amd64 0 Holding Back wesnoth-1.16-did:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-low:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-low:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-low:amd64 0 Holding Back wesnoth-1.16-low:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16.9-1) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16:amd64 0 Holding Back wesnoth-1.16:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-l:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-l:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-l:amd64 0 Holding Back wesnoth-1.16-l:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-thot:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-thot:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-thot:amd64 0 Holding Back wesnoth-1.16-thot:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-httt:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-httt:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-httt:amd64 0 Holding Back wesnoth-1.16-httt:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) wesnoth-1.16-sota:amd64 < none -> 1:1.16.9-1 @un uN Ib > Broken wesnoth-1.16-sota:amd64 Depends on wesnoth-1.16-core:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16) Considering wesnoth-1.16-core:amd64 33 as a solution to wesnoth-1.16-sota:amd64 0 Holding Back wesnoth-1.16-sota:amd64 rather than change wesnoth-1.16-core:amd64 Investigating (0) libsemanage1:amd64 < 3.1-1+b2 @ii mK Ib > Broken libsemanage1:amd64 Depends on libsemanage-common:amd64 < 3.1-1 -> 3.4-1 @ii umU > (= 3.1-1) Considering libsemanage-common:amd64 1 as a solution to libsemanage1:amd64 -2 Removing libsemanage1:amd64 rather than change libsemanage-common:amd64 Investigating (1) wesnoth:amd64 < 1:1.14.15-1 -> 1:1.16.9-1 @ii umU Ib > Broken wesnoth:amd64 Depends on wesnoth-1.16:amd64 < none | 1:1.16.9-1 @un uH > (>= 1:1.16.9-1) Considering wesnoth-1.16:amd64 0 as a solution to wesnoth:amd64 0 Holding Back wesnoth:amd64 rather than change wesnoth-1.16:amd64 Try to Re-Instate (2) wesnoth:amd64 Done The following packages were automatically installed and are no longer required: libflac8 libfluidsynth2 libtiff5 libwebp6 libwrap0 libxinerama1 libxxf86vm1 ucf Use 'sudo apt autoremove' to remove them. The following packages will be REMOVED: libsemanage1 The following NEW packages will be installed: gcc-12-base libcap2 libdecor-0-0 libffi8 libfile-find-rule-perl libflac12 libfluidsynth3 libgdbm-compat4 libgdbm6 libgomp1 libicu72 liblerc4 libmp3lame0 libnumber-compare-perl libperl5.36 libsemanage2 libsepol2 libssl3 libtext-glob-perl libtiff6 libwebp7 libx11-xcb1 perl perl-modules-5.36 usrmerge util-linux-extra The following packages have been kept back: libboost-regex1.74.0 wesnoth The following packages will be upgraded: ... While with the Breaks in place, apt finally decides to remove all the wesnoth-1.14-* packages to allow wesnoth-1.16-* to be installed: ... Investigating (3) libboost-thread1.74.0:amd64 < 1.74.0-9 -> 1.74.0+ds1-20.1~deb12anbe1 @ii umU Ib > Broken libboost-thread1.74.0:amd64 Breaks on libboost-regex1.74.0-icu67:amd64 < none @un H > Considering libboost-regex1.74.0:amd64 34 as a solution to libboost-thread1.74.0:amd64 38 Upgrading libboost-regex1.74.0:amd64 due to Breaks field in libboost-thread1.74.0:amd64 Investigating (3) wesnoth-1.14-core:amd64 < 1:1.14.15-1 @ii mK Ib > Broken wesnoth-1.14-core:amd64 Depends on libboost-regex1.74.0-icu67:amd64 < none @un H > Considering libboost-regex1.74.0:amd64 34 as a solution to wesnoth-1.14-core:amd64 34 Removing wesnoth-1.14-core:amd64 rather than change libboost-regex1.74.0-icu67:amd64 Investigating (3) wesnoth-1.14-sota:amd64 < 1:1.14.15-1 @ii mK Ib > Broken wesnoth-1.14-sota:amd64 Depends on wesnoth-1.14-core:amd64 < 1:1.14.15-1 @ii mR > (>= 1:1.14) Considering wesnoth-1.14-core:amd64 34 as a solution to wesnoth-1.14-sota:amd64 -1 Removing wesnoth-1.14-sota:amd64 rather than change wesnoth-1.14-core:amd64 Investigating (3) wesnoth-1.14-low:amd64 < 1:1.14.15-1 @ii mK Ib > Broken wesnoth-1.14-low:amd64 Depends on wesnoth-1.14-core:amd64 < 1:1.14.15-1 @ii mR > (>= 1:1.14) Considering wesnoth-1.14-core:amd64 34 as a solution to wesnoth-1.14-low:amd64 -1 Removing wesnoth-1.14-low:amd64 rather than change wesnoth-1.14-core:amd64 Investigating (3) wesnoth-1.14-httt:amd64 < 1:1.14.15-1 @ii mK Ib > Broken wesnoth-1.14-httt:amd64 Depends on wesnoth-1.14-core:amd64 < 1:1.14.15-1 @ii mR > (>= 1:1.14) Considering wesnoth-1.14-core:amd64 34 as a solution to wesnoth-1.14-httt:amd64 -1 Removing wesnoth-1.14-httt:amd64 rather than change wesnoth-1.14-core:amd64 Investigating (3) wesnoth-1.14-ttb:amd64 < 1:1.14.15-1 @ii mK Ib > Broken wesnoth-1.14-ttb:amd64 Depends on wesnoth-1.14-core:amd64 < 1:1.14.15-1 @ii mR > (>= 1:1.14) Considering wesnoth-1.14-core:amd64 34 as a solution to wesnoth-1.14-ttb:amd64 -1 Removing wesnoth-1.14-ttb:amd64 rather than change wesnoth-1.14-core:amd64 ... This was not an issue in previous Debian releases since there was always a boost version bump, thus all library package names changed and old and new versions were co-installable. Please consider applying the attached patch. Andreas
diff -Nru boost1.74-1.74.0+ds1/debian/changelog boost1.74-1.74.0+ds1/debian/changelog --- boost1.74-1.74.0+ds1/debian/changelog 2023-01-30 18:20:12.000000000 +0100 +++ boost1.74-1.74.0+ds1/debian/changelog 2023-05-10 22:35:56.000000000 +0200 @@ -1,3 +1,10 @@ +boost1.74 (1.74.0+ds1-21) UNRELEASED; urgency=medium + + * libboost-thread1.74.0: Add Breaks: libboost-regex1.74.0-icu67 for smoother + upgrades from bullseye. + + -- Andreas Beckmann <a...@debian.org> Wed, 10 May 2023 22:35:56 +0200 + boost1.74 (1.74.0+ds1-20) unstable; urgency=medium * [dc6fadf] Better handling of the upstream version number. diff -Nru boost1.74-1.74.0+ds1/debian/control boost1.74-1.74.0+ds1/debian/control --- boost1.74-1.74.0+ds1/debian/control 2023-01-30 06:41:56.000000000 +0100 +++ boost1.74-1.74.0+ds1/debian/control 2023-05-10 22:35:46.000000000 +0200 @@ -1342,6 +1342,7 @@ Multi-Arch: same Depends: ${misc:Depends}, ${shlibs:Depends} Pre-Depends: ${misc:Pre-Depends} +Breaks: libboost-regex1.74.0-icu67, Description: portable C++ multi-threading This package forms part of the Boost C++ Libraries collection. .