Opened 16 months ago

Closed 8 months ago

#67750 closed update (fixed)

libjpeg-turbo: update to 3.0.0

Reported by: mohd-akram (Mohamed Akram) Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: larryv (Lawrence Velázquez), jmroot (Joshua Root), ryandesign (Ryan Carsten Schmidt)
Port: libjpeg-turbo

Description (last modified by mascguy (Christopher Nielsen))

Maintainer Notes:

  • This must be done with extreme caution - and with a great amount of care and pre-testing - as this is a foundational port. (With 340+ dependents, as of 2023-07-16.)
  • Upstream's release notes mention that there are some breaking changes, including removal of deprecated APIs. This almost guarantees that some ports - particularly those that are older, and/or no longer maintained by upstream - will break.

Given all of the above, this will take plenty of time before we can update. And ultimately, it's possible that we may have to create a new segregated port - say, libjpeg-turbo-3 - to maintain backward compatibility for those ports that don't work with 3.x.

Change History (6)

comment:1 Changed 16 months ago by mascguy (Christopher Nielsen)

Cc: mascguy removed
Description: modified (diff)
Owner: set to mascguy
Status: newassigned

comment:2 Changed 16 months ago by mascguy (Christopher Nielsen)

Mohamed, if you're interested in using v3, that's available via libjpeg-turbo-devel:

$ sudo port -f deactivate libjpeg-turbo
$ sudo port -N install libjpeg-turbo-devel
$ sudo port rev-upgrade

While the ABI appears to be compatible-ish - such that you may not see any issues during rev-upgrade - it's at build time that you'll see failures.

comment:3 Changed 16 months ago by mascguy (Christopher Nielsen)

Cc: ryandesign added

Rather than attempt to build all dependent ports against v3 - which simply isn't practical locally, nor doable via GitHub CI - I'll start digging based on buildbot binaries.

The emphasis will initially be on the TurboJPEG API, as that's where most of the breaking changes were made. Whereas the libjpeg API has remained relatively stable.

In any case, the following recipe was provided courtesy of Ryan, during investigation of poppler dependents. And that's what I'll use, with the caveat that I'll have to build ports whose license preclude binary distribution. (Unless Ryan or Josh are interested in helping check those.)

  • Make a list of archives of all ports that depend on libjpeg-turbo, that aren't noarch
  • Download all public archives
  • Decompress each archive, checking if it contains a reference to libturbojpeg*.dylib

comment:4 Changed 8 months ago by jmroot (Joshua Root)

Blocked on #68246.

comment:5 Changed 8 months ago by jmroot (Joshua Root)

Everything else either built successfully against the new version, or failed for non-jpeg-related reasons.

comment:6 Changed 8 months ago by jmroot (Joshua Root)

Resolution: fixed
Status: assignedclosed

In d37f09da77e91876088a9fd6c4a38fcb5e92b44b/macports-ports (master):

libjpeg-turbo: update to 3.0.2

Closes: #67750

Note: See TracTickets for help on using tickets.