Control: tags -1 confirmed moreinfo On 2021-04-03 23:29:17, Simon McVittie wrote: > Package: release.debian.org > Severity: normal > User: release.debian....@packages.debian.org > Usertags: unblock > > I'd like permission to upload gimp with improved dependency handling.
Please go ahead and remove the moreinfo tag once the new version is available in unstable. Cheers > > [ Reason ] > Fix dependencies to make partial upgrades safer > > [ Impact ] > Without these changes, users who do partial upgrades from buster might > encounter one of these failure modes: > * libbabl-0.1-0 is an insufficent version, causing gimp to refuse to start > (#983568) > * liblcms2-2 is a version older than the one gimp was compiled against, > which gimp wrongly thinks means it's insufficient, causing gimp to refuse > to start if buster's version of liblcms (which satisifies its dependency > and has all the required symbols) is still installed (#900819, #986192) > > Additionally, the message printed for #900819, #986192 is really confusing, > because it implies that version 2.9 is less than the version "2.2" that > gimp_2.10.22-3 was compiled against. It was really compiled against 2.12; > gimp compares the encoded version numbers 2090 and 2120 correctly, but > then parses the encoded version number 2120 incorrectly when formatting > the error message. > > [ Tests ] > For brevity "old gimp" refers to 2.10.22-3 in testing and "new gimp" is > the proposed version. > > For #900819, #986192: on a Debian 11 / GNOME virtual machine: > * old gimp correctly launches normally with liblcms2-2 from Debian 11 > (v2.12) > * old gimp wrongly fails to launch, with a confusing error message, when > liblcms2-2 from buster (v2.9) or stretch (v2.8) is LD_PRELOADed > * old gimp correctly fails to launch when a mock implementation of > cmsGetEncodedCMMversion() that returns 1234 (indicating liblcms2-2 > v1.23.4) is LD_PRELOADed, but the error message wrongly describes the > version number as 1.3 > * new gimp correctly launches normally with liblcms2-2 from Debian 11 > * new gimp correctly launches normally with liblcms2-2 from buster or > stretch LD_PRELOADed > * new gimp correctly fails to launch when a mock implementation of > cmsGetEncodedCMMversion() that returns 1234 is LD_PRELOADed, but this > time the error message correctly describes it as version 1.23 > > For #983568: `apt-cache show gimp` indicates that old gimp wrongly > Depends: libbabl-0.1-0 (>= 0.1.10). `dpkg -s gimp` indicates that new > gimp correctly Depends: libbabl-0.1-0 (>= 0.1.78). > > [ Risks ] > This is a high-visibility package, but the changes are trivial. > > [ Checklist ] > [x] all changes are documented in the d/changelog > [x] I reviewed all changes and I approve them > [x] attach debdiff against the package in testing > > unblock gimp/2.10.22-4 > diffstat for gimp-2.10.22 gimp-2.10.22 > > changelog | 23 > ++++ > patches/01_hurd_ftbfs.patch | 3 > patches/02_hurd_ftbfs.patch | 13 ++ > patches/app-Don-t-second-guess-the-dependency-system.patch | 56 > ++++++++++ > patches/app-Print-2-digit-LittleCMS-minor-versions-correctly.patch | 41 > +++++++ > patches/series | 2 > shlibs.local | 1 > 7 files changed, 137 insertions(+), 2 deletions(-) > > diff -Nru gimp-2.10.22/debian/changelog gimp-2.10.22/debian/changelog > --- gimp-2.10.22/debian/changelog 2021-03-20 11:21:08.000000000 +0000 > +++ gimp-2.10.22/debian/changelog 2021-04-03 23:21:59.000000000 +0100 > @@ -1,3 +1,26 @@ > +gimp (2.10.22-4) unstable; urgency=medium > + > + * Team upload > + > + [ Laurent Bigonville ] > + * Drop debian/shlibs.local, not needed anymore. > + This file has the adverse effect of lowering the required version of > + libbabl-0.1-0. The library now ships a .symbols file with > + Build-Depends-Package, so let dh_shlibs adjust the dependency version > + automatically (Closes: #983568) > + > + [ Simon McVittie ] > + * d/p/app-Print-2-digit-LittleCMS-minor-versions-correctly.patch: > + Print 2-digit lcms minor versions correctly. Related to #900819, #986192. > + * d/p/app-Don-t-second-guess-the-dependency-system.patch: > + Don't require lcms runtime version >= compile-time version. > + If no new symbols referenced by GIMP have been introduced (as is the > + case when upgrading from 2.9 to 2.12~rc1), we only need a dependency > + on version 2.9. (Closes: #900819, #986192) > + * d/p/*_hurd_ftbfs.patch: Add patch metadata > + > + -- Simon McVittie <s...@debian.org> Sat, 03 Apr 2021 23:21:59 +0100 > + > gimp (2.10.22-3) unstable; urgency=medium > > * debian/control.in: Add graphviz to the dependencies. > diff -Nru gimp-2.10.22/debian/patches/01_hurd_ftbfs.patch > gimp-2.10.22/debian/patches/01_hurd_ftbfs.patch > --- gimp-2.10.22/debian/patches/01_hurd_ftbfs.patch 2021-03-20 > 11:21:08.000000000 +0000 > +++ gimp-2.10.22/debian/patches/01_hurd_ftbfs.patch 2021-04-03 > 23:21:59.000000000 +0100 > @@ -2,7 +2,8 @@ > Date: Sun, 1 Apr 2018 17:43:04 -0400 > Subject: Define PATH_MAX to fix build on the Hurd. > > -Forwarded: no > +Forwarded: https://gitlab.gnome.org/GNOME/gimp/-/merge_requests/424 > +Applied-upstream: no > --- > libgimpbase/gimpreloc.c | 3 +++ > 1 file changed, 3 insertions(+) > diff -Nru gimp-2.10.22/debian/patches/02_hurd_ftbfs.patch > gimp-2.10.22/debian/patches/02_hurd_ftbfs.patch > --- gimp-2.10.22/debian/patches/02_hurd_ftbfs.patch 2021-03-20 > 11:21:08.000000000 +0000 > +++ gimp-2.10.22/debian/patches/02_hurd_ftbfs.patch 2021-04-03 > 23:21:59.000000000 +0100 > @@ -1,3 +1,16 @@ > +From: Svante Signell <svante.sign...@gmail.com> > +Date: Tue, 6 Aug 2019 21:04:22 +0200 > +Subject: qbist: Define PATH_MAX on Hurd > + > +Bug-Debian: https://bugs.debian.org/934077 > +Forwarded: https://gitlab.gnome.org/GNOME/gimp/-/merge_requests/424 > +Applied-upstream: no > +--- > + plug-ins/common/qbist.c | 3 +++ > + 1 file changed, 3 insertions(+) > + > +diff --git a/plug-ins/common/qbist.c b/plug-ins/common/qbist.c > +index f8f94d4..6f1b582 100644 > --- a/plug-ins/common/qbist.c > +++ b/plug-ins/common/qbist.c > @@ -38,6 +38,9 @@ > diff -Nru > gimp-2.10.22/debian/patches/app-Don-t-second-guess-the-dependency-system.patch > > gimp-2.10.22/debian/patches/app-Don-t-second-guess-the-dependency-system.patch > --- > gimp-2.10.22/debian/patches/app-Don-t-second-guess-the-dependency-system.patch > 1970-01-01 01:00:00.000000000 +0100 > +++ > gimp-2.10.22/debian/patches/app-Don-t-second-guess-the-dependency-system.patch > 2021-04-03 23:21:59.000000000 +0100 > @@ -0,0 +1,56 @@ > +From: Simon McVittie <s...@debian.org> > +Date: Sat, 3 Apr 2021 11:40:22 +0100 > +Subject: app: Don't second-guess the dependency system > + > +Removing this check makes the treatment of LittleCMS consistent with > +all the other dependencies checked in the same file, which only check > +that the runtime version is at least the required version. > + > +As long as we were compiled against LittleCMS >= 2.8, and are now > +running against a version that has at least the same symbols, it doesn't > +necessarily matter whether the version we are running against is the > +same one we were compiled against. > + > +Distributions like Debian and Ubuntu track the versions in which > +individual symbols were introduced, which allows runtime dependencies > +to be weakened when no newer symbols are actually used; this is > +practically necessary when working with very large numbers of packages, > +to avoid a new version of a dependency library unnecessarily blocking > +upgrade of dependent packages. However, this doesn't work if dependent > +packages add their own checks that bypass this mechanism. > + > +Bug-Debian: https://bugs.debian.org/900819 > +Bug-Debian: https://bugs.debian.org/986192 > +Signed-off-by: Simon McVittie <s...@debian.org> > +Forwarded: https://gitlab.gnome.org/GNOME/gimp/-/merge_requests/430 > +--- > + app/sanity.c | 16 ---------------- > + 1 file changed, 16 deletions(-) > + > +diff --git a/app/sanity.c b/app/sanity.c > +index 7360fd0..a0550d3 100644 > +--- a/app/sanity.c > ++++ b/app/sanity.c > +@@ -391,22 +391,6 @@ sanity_check_lcms (void) > + > + gint lcms_version = cmsGetEncodedCMMversion (); > + > +- if (LCMS_VERSION > lcms_version) > +- { > +- return g_strdup_printf > +- ("Liblcms2 version mismatch!\n\n" > +- "GIMP was compiled against LittleCMS version %d.%d, but the\n" > +- "LittleCMS version found at runtime is only %d.%d.\n\n" > +- "Somehow you or your software packager managed\n" > +- "to install a LittleCMS that is older than what GIMP was\n" > +- "built against.\n\n" > +- "Please make sure that the installed LittleCMS version\n" > +- "is at least %d.%d and that headers and library match.", > +- LCMS_VERSION / 1000, LCMS_VERSION % 1000 / 10, > +- lcms_version / 1000, lcms_version % 1000 / 10, > +- LCMS_VERSION / 1000, LCMS_VERSION % 1000 / 10); > +- } > +- > + if (lcms_version < (LCMS_REQUIRED_MAJOR * 1000 + > + LCMS_REQUIRED_MINOR * 10)) > + { > diff -Nru > gimp-2.10.22/debian/patches/app-Print-2-digit-LittleCMS-minor-versions-correctly.patch > > gimp-2.10.22/debian/patches/app-Print-2-digit-LittleCMS-minor-versions-correctly.patch > --- > gimp-2.10.22/debian/patches/app-Print-2-digit-LittleCMS-minor-versions-correctly.patch > 1970-01-01 01:00:00.000000000 +0100 > +++ > gimp-2.10.22/debian/patches/app-Print-2-digit-LittleCMS-minor-versions-correctly.patch > 2021-04-03 23:21:59.000000000 +0100 > @@ -0,0 +1,41 @@ > +From: Simon McVittie <s...@debian.org> > +Date: Sat, 3 Apr 2021 11:18:30 +0100 > +Subject: app: Print 2-digit LittleCMS minor versions correctly > + > +LittleCMS 2.12.0 defines LCMS_VERSION as 2120. We want to print that > +as 2.12.0, not 2.2.0. > + > +Bug: https://gitlab.gnome.org/GNOME/gimp/-/issues/6505 > +Bug-Debian: https://bugs.debian.org/900819 > +Bug-Debian: https://bugs.debian.org/986192 > +Signed-off-by: Simon McVittie <s...@debian.org> > +Forwarded: https://gitlab.gnome.org/GNOME/gimp/-/merge_requests/429 > +--- > + app/sanity.c | 8 ++++---- > + 1 file changed, 4 insertions(+), 4 deletions(-) > + > +diff --git a/app/sanity.c b/app/sanity.c > +index 0ad044a..7360fd0 100644 > +--- a/app/sanity.c > ++++ b/app/sanity.c > +@@ -402,16 +402,16 @@ sanity_check_lcms (void) > + "built against.\n\n" > + "Please make sure that the installed LittleCMS version\n" > + "is at least %d.%d and that headers and library match.", > +- LCMS_VERSION / 1000, LCMS_VERSION % 100 / 10, > +- lcms_version / 1000, lcms_version % 100 / 10, > +- LCMS_VERSION / 1000, LCMS_VERSION % 100 / 10); > ++ LCMS_VERSION / 1000, LCMS_VERSION % 1000 / 10, > ++ lcms_version / 1000, lcms_version % 1000 / 10, > ++ LCMS_VERSION / 1000, LCMS_VERSION % 1000 / 10); > + } > + > + if (lcms_version < (LCMS_REQUIRED_MAJOR * 1000 + > + LCMS_REQUIRED_MINOR * 10)) > + { > + const gint lcms_major_version = lcms_version / 1000; > +- const gint lcms_minor_version = lcms_version % 100 / 10; > ++ const gint lcms_minor_version = lcms_version % 1000 / 10; > + > + return g_strdup_printf > + ("Liblcms2 version too old!\n\n" > diff -Nru gimp-2.10.22/debian/patches/series > gimp-2.10.22/debian/patches/series > --- gimp-2.10.22/debian/patches/series 2021-03-20 11:21:08.000000000 > +0000 > +++ gimp-2.10.22/debian/patches/series 2021-04-03 23:21:59.000000000 > +0100 > @@ -1,2 +1,4 @@ > +app-Print-2-digit-LittleCMS-minor-versions-correctly.patch > +app-Don-t-second-guess-the-dependency-system.patch > 01_hurd_ftbfs.patch > 02_hurd_ftbfs.patch > diff -Nru gimp-2.10.22/debian/shlibs.local gimp-2.10.22/debian/shlibs.local > --- gimp-2.10.22/debian/shlibs.local 2021-03-20 11:21:08.000000000 +0000 > +++ gimp-2.10.22/debian/shlibs.local 1970-01-01 01:00:00.000000000 +0100 > @@ -1 +0,0 @@ > -libbabl-0.1 0 libbabl-0.1-0 (>= 0.1.10) -- Sebastian Ramacher