[Bug 1913268] Re: ImageMagick: please pull in patch to stabilize API on s390x during upgrade to glibc 2.33 (Ubuntu 21.04)

Steve Langasek 1913268 at bugs.launchpad.net
Wed Jan 27 23:01:40 UTC 2021


On Wed, Jan 27, 2021 at 06:58:36PM -0000, Matthias Klose wrote:
> if the ABI changes without changing the soname, we should rename the
> library packages.

Yes, but AIUI the intent here is to change the imagemagick source so that
the ABI does not change as a result of a rebuild with a newer glibc, no?

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to imagemagick in Ubuntu.
https://bugs.launchpad.net/bugs/1913268

Title:
  ImageMagick: please pull in patch to stabilize API on s390x during
  upgrade to glibc 2.33 (Ubuntu 21.04)

Status in Ubuntu on IBM z Systems:
  Triaged
Status in imagemagick package in Ubuntu:
  Incomplete

Bug description:
  On s390x, the type float_t has historically been defined as double for
  no good reason, yet with unexpected and unnecessary impact on
  performance in some scenarios. glibc 2.33 will be a first step towards
  cleaning that up, which will change float_t to become float on s390x
  when compiling with compiler flags as used in the ImageMagick binary.
  That would break the ABI of ImageMagick for HDRI=1 on s390x for
  existing binaries.

  To avoid that breakage, ImageMagick upstream has fixed the relevant
  internal type to always be double on s390x since version 7.0.10-39, so
  that the API/ABI for HDRI=1 remains as it is today, independent of a
  change in float_t. The merged patch can trivially be backported to
  ImageMagick version 6.9.x in Ubuntu today (will apply a patch;
  original PR https://github.com/ImageMagick/ImageMagick/pull/2832).

  Background: Today's combination of gcc's default behavior and float_t
  being double on s390x contradicts the C standard. ImageMagick captures
  the sizeof(float_t) at compile-time of the library in magick-
  baseconfig.h. Headers then define MagickFloatType to match. For 8-bit
  and 16-bit depths and HDRI=1, that MagickFloatType is used as the type
  for pixels's color channels (i.e., Quantum).

  Changes to float_t thus would result in a different ABI. Once
  ImageMagick is rebuilt with HDRI=1 and an updated gcc/glibc, Quantum
  would then become 32-bit float. Existing binaries and libraries would
  expect 64-bit double and thus cease to work with newly built version
  of the library.

  Upstream commit with fixed path (MagickCore/magick-type.h -> magick
  /magick-type.h)

  This minor patch avoids interoperability issues with the adoption of
  glibc 2.33. that glibc release contains one component for cleaning up
  float_t on s390x, which will eventually reduce performance overhead.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/1913268/+subscriptions



More information about the foundations-bugs mailing list