Bug 279371 - graphics/jpeg-turbo: exp run failed to show that update to 3.0.3 broke graphics/rawtherapee 5.10_1
Summary: graphics/jpeg-turbo: exp run failed to show that update to 3.0.3 broke graphi...
Status: Open
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: --- Affects Many People
Assignee: Port Management Team
URL: https://pkg-status.freebsd.org/beefy2...
Keywords: regression
Depends on: 279373 279166
Blocks:
  Show dependency treegraph
 
Reported: 2024-05-28 20:47 UTC by Matthias Andree
Modified: 2024-05-29 00:32 UTC (History)
4 users (show)

See Also:


Attachments
pkg-fallout report on our tier-1 FreeBSD 14 (809.95 KB, text/plain)
2024-05-28 20:47 UTC, Matthias Andree
no flags Details
intended further graphics/rawtherapee change under test (test in progress) (3.46 KB, patch)
2024-05-28 23:07 UTC, Matthias Andree
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Matthias Andree freebsd_committer freebsd_triage 2024-05-28 20:47:04 UTC
Created attachment 251045 [details]
pkg-fallout report on our tier-1 FreeBSD 14

graphics/jpeg-turbo 3.0.3 made the jpeg_std_messasge_table a private data item, in spite of the comments in jerror.c near it,
see https://github.com/libjpeg-turbo/libjpeg-turbo/commit/34c055851ecb66a2d9bee1a3318c55cd9acd6586#diff-27e91831d86c024de8f419d49afbce0181f5b7832952b9826585c1f229c99f10R39

Filed upstream as https://github.com/libjpeg-turbo/libjpeg-turbo/issues/767

I wonder how this could escape the -exp run because this immediately resulted in pkg-fallout reports such as https://pkg-status.freebsd.org/beefy22/data/140amd64-default/b6f9255af153/logs/rawtherapee-5.10_1.log
https://pkg-status.freebsd.org/beefy22/build.html?mastername=140amd64-default&build=b6f9255af153

Essence:

FAILED: rtgui/rawtherapee 
: && /usr/local/bin/g++12 -O2 -pipe  -I/usr/local/include -fPIC -O3 -funroll-loops -flto=3 -fstack-protector-strong -Wl,-rpath=/usr/local/lib/gcc12  -stdlib=libc++ -Wl,-rpath=/usr/local/lib/gcc12 -isystem /usr/local/include -std=c++11 -ffp-contract=off -mtune=generic -Werror=unused-label -Werror=delete-incomplete -fno-math-errno -Wno-attributes -Wall -Wuninitialized -Wcast-qual -Wno-deprecated-declarations -Wno-unused-result -Wunused-macros -fopenmp -Werror=unknown-pragmas -O2 -pipe  -I/usr/local/include -fPIC -O3 -funroll-loops -flto=3 -fstack-protector-strong -Wl,-rpath=/usr/local/lib/gcc12  -stdlib=libc++ -Wl,-rpath=/usr/local/lib/gcc12 -isystem /usr/local/include  -DNDEBUG -Wl,--as-needed -lpthread -O3 -funroll-loops -flto=1 -lm -lomp -fstack-protector-strong -Wl,-rpath=/usr/local/lib/gcc12 -L/usr/local/lib/gcc12 -L/usr/local/lib -mtune=generic [...long list of .cc.o files omitted...] -o rtgui/rawtherapee  rtengine/librtengine.a  -lcanberra-gtk3  -lX11  -lcanberra  -lgtk-3  -lgdk-3  -lz  -lpango
cairo-1.0  -lpango-1.0  -lharfbuzz  -latk-1.0  -lcairo-gobject  -lcairo  -lgdk_pixbuf-2.0  -lgio-2.0  -lgobject-2.0  -lglib-2.0  -lintl  -lexpat  -lfftw3f  /usr/local/lib/libfftw3f_omp.so  -lgiomm-2.4  -lgio-2.0  -lglibmm-2.4  -lgobject-2.0  -lglib-2.0  -lintl  -lsigc-2.0  -lgio-2.0  -lgobject-2.0  -lglib-2.0  -lintl  -lglib-2.0  -lintl  -lglibmm-2.4  -lgobject-2.0  -lglib-2.0  -lintl  -lsigc-2.0  -lgobject-2.0  -lglib-2.0  -lintl  -lgthread-2.0  -lglib-2.0  -lintl  -lgtkmm-3.0  -latkmm-1.6  -lgdkmm-3.0  -lgiomm-2.4  -lpangomm-1.4  -lglibmm-2.4  -lgtk-3  -lgdk-3  -lz  -lpangocairo-1.0  -lpango-1.0  -lharfbuzz  -latk-1.0  -lcairo-gobject  -lgio-2.0  -lcairomm-1.0  -lcairo  -lsigc-2.0  -lgdk_pixbuf-2.0  -lgobject-2.0  -lglib-2.0  -lintl  -lgtk-3  -lgdk-3  -lz  -lpangocairo-1.0  -lpango-1.0  -lharfbuzz  -latk-1.0  -lcairo-gobject  -lcairo  -lgdk_pixbuf-2.0  -lgio-2.0  -lgobject-2.0  -lglib-2.0  -lintl  -liptcdata  /usr/local/lib/libjpeg.so  -llcms2  -llcms2_fast_float  -llcms2_
threaded  /usr/local/lib/libpng.so  /usr/lib/libz.so  /usr/local/lib/libtiff.so  /usr/lib/libz.so  -llensfun  -lrsvg-2  -lm  -lgio-2.0  -lgdk_pixbuf-2.0  -lgobject-2.0  -lglib-2.0  -lintl  -lcairo  /usr/local/lib/libexiv2.so  /usr/local/lib/gcc12/libgomp.so  -lgiomm-2.4  -lgtkmm-3.0  -latkmm-1.6  -lgdkmm-3.0  -lpangomm-1.4  -lcairomm-1.0  -lexpat  -lfftw3f  /usr/local/lib/libfftw3f_omp.so  -lgdk_pixbuf-2.0  -lgio-2.0  -lgobject-2.0  -lglib-2.0  -lintl  -lglibmm-2.4  -lsigc-2.0  -lgthread-2.0  -liptcdata  /usr/local/lib/libjpeg.so  -llcms2  -llcms2_fast_float  -llcms2_threaded  /usr/local/lib/libpng.so  /usr/lib/libz.so  /usr/local/lib/libtiff.so  -llensfun  -lrsvg-2  -lm  -lgdk_pixbuf-2.0  -lgio-2.0  -lgobject-2.0  -lglib-2.0  -lintl  -lglibmm-2.4  -lsigc-2.0  -lgthread-2.0  -liptcdata  /usr/local/lib/libjpeg.so  -llcms2  -llcms2_fast_float  -llcms2_threaded  /usr/local/lib/libpng.so  /usr/lib/libz.so  /usr/local/lib/libtiff.so  -llensfun  -lrsvg-2  -lm  -lcairo && :
/usr/local/bin/ld: /tmp/ccnktZpp.ltrans82.ltrans.o: in function `rtengine::ImageIO::loadJPEG(Glib::ustring const&)':
<artificial>:(.text+0x141e1): undefined reference to `jpeg_std_message_table'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
*** Error code 1

I am about to commit a workaround, but we should find out how this could sneak past the -exp run.
Comment 1 Matthias Andree freebsd_committer freebsd_triage 2024-05-28 20:51:43 UTC
Also, if we upgrade libjpeg-turbo underneath graphics/rawtherapee, we also get a run-time error and can no longer start rawtherapee:

ld-elf.so.1: /usr/local/bin/rawtherapee: Undefined symbol "jpeg_std_message_table@LIBJPEG_8.0"
Comment 2 commit-hook freebsd_committer freebsd_triage 2024-05-28 20:54:27 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=3aaca1788173e1e855ab87b9632bc54a0654ed2a

commit 3aaca1788173e1e855ab87b9632bc54a0654ed2a
Author:     Matthias Andree <mandree@FreeBSD.org>
AuthorDate: 2024-05-28 20:48:06 +0000
Commit:     Matthias Andree <mandree@FreeBSD.org>
CommitDate: 2024-05-28 20:53:44 +0000

    graphics/rawtherapee: work around jpeg-turbo regression

    jpeg-turbo hides the jpg_std_message_table, causing linker troubles,
    as reported by pkg-fallout.  This somehow also snuck past the -exp run.

    We now set up the default table in the code that wanted to reference it
    and steal the const pointer to the message table as a workaround.

    Also, the jpeg-turbo upgrade breaks rawtherapee at run-time, so we
    must bump its PORTREVISION.

    Rawtherapee 5.10_1 with jpeg-turbo 3.0.3 causes this error,
    preventing a program start:
    ld-elf.so.1: /usr/local/bin/rawtherapee: Undefined symbol "jpeg_std_message_table@LIBJPEG_8.0"

    PR:             279371

 graphics/rawtherapee/Makefile                        |  2 +-
 .../files/patch-rtengine_jdatasrc.cc (new)           | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)
Comment 3 Matthias Andree freebsd_committer freebsd_triage 2024-05-28 20:58:47 UTC
To make the remaining problem visible:

Why and how did this failure escape the -exp run in #279166?
Comment 4 Daniel Engberg freebsd_committer freebsd_triage 2024-05-28 22:11:56 UTC
I'm going to guess human error, there are always ports failing unfortunately.
My mini-exp run did pick up the one but I missed it looking at the logs...
Comment 5 Matthias Andree freebsd_committer freebsd_triage 2024-05-28 23:05:40 UTC
on rawtherapee, I am going to pick up the two commits from Rawtherapee's merge request https://github.com/Beep6581/RawTherapee/pull/7080/commits as 5.10_3 so we'll follow upstream code more closely. Code is built, but not yet pushed as I'll be waiting for the rust and rawtherapee poudriere builds to conclude over the next few hours now that 5.10_2 resolved the immediate pain.
Comment 6 Matthias Andree freebsd_committer freebsd_triage 2024-05-28 23:07:38 UTC
Created attachment 251051 [details]
intended further graphics/rawtherapee change under test (test in progress)
Comment 7 commit-hook freebsd_committer freebsd_triage 2024-05-29 00:32:52 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=fd30adef308a544af99ad204353915adffe609c6

commit fd30adef308a544af99ad204353915adffe609c6
Author:     Matthias Andree <mandree@FreeBSD.org>
AuthorDate: 2024-05-28 21:40:33 +0000
Commit:     Matthias Andree <mandree@FreeBSD.org>
CommitDate: 2024-05-29 00:32:21 +0000

    graphics/rawtherapee: replace workaround by cherry-pick

    ...of upstream's merged change here:
    https://github.com/Beep6581/RawTherapee/pull/7080

    PR:             279371

 graphics/rawtherapee/Makefile                      |  2 +-
 .../rawtherapee/files/patch-rtengine_jdatasrc.cc   | 56 +++++++++++++++++-----
 2 files changed, 46 insertions(+), 12 deletions(-)