[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#986344: unblock (pre-approval): gimp/2.10.22-4



Control: tags -1 confirmed moreinfo

On 2021-04-03 23:29:17, Simon McVittie wrote:
> Package: release.debian.org
> Severity: normal
> User: release.debian.org@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 <smcv@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.signell@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 <smcv@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 <smcv@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 <smcv@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 <smcv@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


Reply to: