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.
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"
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(-)
To make the remaining problem visible: Why and how did this failure escape the -exp run in #279166?
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...
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.
Created attachment 251051 [details] intended further graphics/rawtherapee change under test (test in progress)
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(-)