Created attachment 746520 [details, diff] Patch to actually compile against openexr:3 With current media-gfx/darktable-3.6.1 with openexr:3 now available, #791445 caused darktable to be configured correctly with OpenEXR-3, but src/common/imageio_exr.{cc,hh} and src/imageio/format/exr.cc still #include <OpenEXR/ImfChannelList.h> et al. which are the OpenEXR-2 versions. If "OpenEXR" is removed from these #include's, the configured paths take precedence and thus OpenEXR-3. With both openexr:2 and openexr:3 installed, a link time error occurs not being able to find Ilm-2.5 functions; probably when openexr:2 is not installed, OpenEXR/ImfChannelList.h et al. cannot be found during compilation.
I used sed to do the same thing as your patch, and it worked. Thank you for the hint.
(In reply to Bernd Feige from comment #0) > Created attachment 746520 [details, diff] [details, diff] > Patch to actually compile against openexr:3 > > With current media-gfx/darktable-3.6.1 with openexr:3 now available, #791445 > caused darktable to be configured correctly with OpenEXR-3, but > src/common/imageio_exr.{cc,hh} and src/imageio/format/exr.cc still #include > <OpenEXR/ImfChannelList.h> et al. which are the OpenEXR-2 versions. If > "OpenEXR" is removed from these #include's, the configured paths take > precedence and thus OpenEXR-3. > > With both openexr:2 and openexr:3 installed, a link time error occurs not > being able to find Ilm-2.5 functions; probably when openexr:2 is not > installed, OpenEXR/ImfChannelList.h et al. cannot be found during > compilation. I confirm, that both exrs installed makes darktable fail to link like this: FAILED: bin/darktable [432/741] : && /usr/bin/x86_64-pc-linux-gnu-gcc -O2 -march=native -pipe -msse3 -Wall -Wformat -Wformat-security -Wshadow -Wtype-limits -Wvla -Wold-style-declaration -Wno-unknown-pragmas -Wno-error=varargs -Wno-format-truncation -Wno-error=address-of-packed-member -std=c99 -fopenmp -Wl,-O1 -Wl,--as-needed bin/CMakeFiles/darktable.dir/main.c.o -o bin/darktable -Wl,-rpath,/var/tmp/portage/media-gfx/darktable-3.6.1-r1/work/darktable-3.6.1_build/bin:/usr/lib64/OpenEXR-3:/usr/lib64/Imath-3: bin/libdarktable.so bin/external/LuaAutoC/liblautoc.a /usr/lib64/OpenEXR-3/libOpenEXR-3_1.so.30.2.0 /usr/lib64/Imath-3/libImath-3_1.so.29.2.0 -lm /usr/lib64/OpenEXR-3/libIlmThread-3_1.so.30.2.0 /usr/lib64/OpenEXR-3/libIex-3_1.so.30.2.0 -lpthread /usr/lib64/libz.so /usr/lib64/libavif.so.13.0.0 -lm /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/libgomp.so /usr/lib64/libpthread.so /usr/lib64/libglib-2.0.so -lgtk-3 -lgdk-3 -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 /usr/lib64/libxml2.so /usr/lib64/libsoup-2.4.so /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libgphoto2.so /usr/lib64/libgphoto2_port.so /usr/lib64/libwebp.so /usr/lib64/liblensfun.so /usr/lib64/libsqlite3.so /usr/lib64/libgthread-2.0.so /usr/lib64/libgmodule-2.0.so /usr/lib64/libpangocairo-1.0.so /usr/lib64/librsvg-2.so /usr/lib64/libcurl.so /usr/lib64/libpng.so -lz /usr/lib64/libjpeg.so /usr/lib64/libtiff.so /usr/lib64/liblcms2.so /usr/lib64/libjson-glib-1.0.so /usr/lib64/libexiv2.so /usr/lib64/libopenjp2.so /usr/lib64/libsecret-1.so /usr/lib64/libGraphicsMagick.so /usr/lib64/libgmic.so /usr/lib64/libicui18n.so /usr/lib64/libicuuc.so /usr/lib64/libicudata.so -llua5.3 /usr/lib64/libpugixml.so /usr/lib64/libosmgpsmap-1.0.so /usr/lib64/libgtk-3.so /usr/lib64/libgdk-3.so /usr/lib64/libpango-1.0.so /usr/lib64/libharfbuzz.so /usr/lib64/libatk-1.0.so /usr/lib64/libcairo-gobject.so /usr/lib64/libcairo.so /usr/lib64/libgdk_pixbuf-2.0.so /usr/lib64/libcolord.so /usr/lib64/libcolord-gtk.so -lm /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/libgomp.so /usr/lib64/libpthread.so /usr/lib64/libglib-2.0.so -lgtk-3 -lgdk-3 -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 /usr/lib64/libxml2.so /usr/lib64/libsoup-2.4.so /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libgphoto2.so /usr/lib64/libgphoto2_port.so /usr/lib64/libwebp.so /usr/lib64/liblensfun.so /usr/lib64/libsqlite3.so /usr/lib64/libgthread-2.0.so /usr/lib64/libgmodule-2.0.so /usr/lib64/libpangocairo-1.0.so /usr/lib64/librsvg-2.so /usr/lib64/libcurl.so /usr/lib64/libpng.so -lz /usr/lib64/libjpeg.so /usr/lib64/libtiff.so /usr/lib64/liblcms2.so /usr/lib64/libjson-glib-1.0.so /usr/lib64/libexiv2.so /usr/lib64/libopenjp2.so /usr/lib64/libsecret-1.so /usr/lib64/libGraphicsMagick.so /usr/lib64/libgmic.so /usr/lib64/libicui18n.so /usr/lib64/libicuuc.so /usr/lib64/libicudata.so -llua5.3 /usr/lib64/libpugixml.so /usr/lib64/libosmgpsmap-1.0.so /usr/lib64/libgtk-3.so /usr/lib64/libgdk-3.so /usr/lib64/libpango-1.0.so /usr/lib64/libharfbuzz.so /usr/lib64/libatk-1.0.so /usr/lib64/libcairo-gobject.so /usr/lib64/libcairo.so /usr/lib64/libgdk_pixbuf-2.0.so /usr/lib64/libcolord.so /usr/lib64/libcolord-gtk.so /usr/lib64/libcups.so && : FAILED: bin/darktable : && /usr/bin/x86_64-pc-linux-gnu-gcc -O2 -march=native -pipe -msse3 -Wall -Wformat -Wformat-security -Wshadow -Wtype-limits -Wvla -Wold-style-declaration -Wno-unknown-pragmas -Wno-error=varargs -Wno-format-truncation -Wno-error=address-of-packed-member -std=c99 -fopenmp -Wl,-O1 -Wl,--as-needed bin/CMakeFiles/darktable.dir/main.c.o -o bin/darktable -Wl,-rpath,/var/tmp/portage/media-gfx/darktable-3.6.1-r1/work/darktable-3.6.1_build/bin:/usr/lib64/OpenEXR-3:/usr/lib64/Imath-3: bin/libdarktable.so bin/external/LuaAutoC/liblautoc.a /usr/lib64/OpenEXR-3/libOpenEXR-3_1.so.30.2.0 /usr/lib64/Imath-3/libImath-3_1.so.29.2.0 -lm /usr/lib64/OpenEXR-3/libIlmThread-3_1.so.30.2.0 /usr/lib64/OpenEXR-3/libIex-3_1.so.30.2.0 -lpthread /usr/lib64/libz.so /usr/lib64/libavif.so.13.0.0 -lm /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/libgomp.so /usr/lib64/libpthread.so /usr/lib64/libglib-2.0.so -lgtk-3 -lgdk-3 -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 /usr/lib64/libxml2.so /usr/lib64/libsoup-2.4.so /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libgphoto2.so /usr/lib64/libgphoto2_port.so /usr/lib64/libwebp.so /usr/lib64/liblensfun.so /usr/lib64/libsqlite3.so /usr/lib64/libgthread-2.0.so /usr/lib64/libgmodule-2.0.so /usr/lib64/libpangocairo-1.0.so /usr/lib64/librsvg-2.so /usr/lib64/libcurl.so /usr/lib64/libpng.so -lz /usr/lib64/libjpeg.so /usr/lib64/libtiff.so /usr/lib64/liblcms2.so /usr/lib64/libjson-glib-1.0.so /usr/lib64/libexiv2.so /usr/lib64/libopenjp2.so /usr/lib64/libsecret-1.so /usr/lib64/libGraphicsMagick.so /usr/lib64/libgmic.so /usr/lib64/libicui18n.so /usr/lib64/libicuuc.so /usr/lib64/libicudata.so -llua5.3 /usr/lib64/libpugixml.so /usr/lib64/libosmgpsmap-1.0.so /usr/lib64/libgtk-3.so /usr/lib64/libgdk-3.so /usr/lib64/libpango-1.0.so /usr/lib64/libharfbuzz.so /usr/lib64/libatk-1.0.so /usr/lib64/libcairo-gobject.so /usr/lib64/libcairo.so /usr/lib64/libgdk_pixbuf-2.0.so /usr/lib64/libcolord.so /usr/lib64/libcolord-gtk.so -lm /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/libgomp.so /usr/lib64/libpthread.so /usr/lib64/libglib-2.0.so -lgtk-3 -lgdk-3 -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 /usr/lib64/libxml2.so /usr/lib64/libsoup-2.4.so /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libgphoto2.so /usr/lib64/libgphoto2_port.so /usr/lib64/libwebp.so /usr/lib64/liblensfun.so /usr/lib64/libsqlite3.so /usr/lib64/libgthread-2.0.so /usr/lib64/libgmodule-2.0.so /usr/lib64/libpangocairo-1.0.so /usr/lib64/librsvg-2.so /usr/lib64/libcurl.so /usr/lib64/libpng.so -lz /usr/lib64/libjpeg.so /usr/lib64/libtiff.so /usr/lib64/liblcms2.so /usr/lib64/libjson-glib-1.0.so /usr/lib64/libexiv2.so /usr/lib64/libopenjp2.so /usr/lib64/libsecret-1.so /usr/lib64/libGraphicsMagick.so /usr/lib64/libgmic.so /usr/lib64/libicui18n.so /usr/lib64/libicuuc.so /usr/lib64/libicudata.so -llua5.3 /usr/lib64/libpugixml.so /usr/lib64/libosmgpsmap-1.0.so /usr/lib64/libgtk-3.so /usr/lib64/libgdk-3.so /usr/lib64/libpango-1.0.so /usr/lib64/libharfbuzz.so /usr/lib64/libatk-1.0.so /usr/lib64/libcairo-gobject.so /usr/lib64/libcairo.so /usr/lib64/libgdk_pixbuf-2.0.so /usr/lib64/libcolord.so /usr/lib64/libcolord-gtk.so /usr/lib64/libcups.so && : /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::InputFile::header() const' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::Chromaticities::Chromaticities(Imath_2_5::Vec2<float> const&, Imath_2_5::Vec2<float> const&, Imath_2_5::Vec2<float> const&, Imath_2_5::Vec2<float> const&)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::globalThreadCount()' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::hasChromaticities(Imf_2_5::Header const&)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::Header::channels() const' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::ChannelList::end() const' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::TiledInputFile::TiledInputFile(char const*, int)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::TiledInputFile::header() const' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::setGlobalThreadCount(int)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::InputFile::InputFile(char const*, int)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::InputFile::readPixels(int, int)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::TiledInputFile::setFrameBuffer(Imf_2_5::FrameBuffer const&)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::ChannelList::begin() const' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::Header::dataWindow() const' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::TiledInputFile::numXTiles(int) const' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::chromaticities(Imf_2_5::Header const&)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::InputFile::setFrameBuffer(Imf_2_5::FrameBuffer const&)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::isOpenExrFile(char const*, bool&)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `typeinfo for Imf_2_5::Attribute' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::Header::displayWindow() const' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::FrameBuffer::insert(char const*, Imf_2_5::Slice const&)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::hasWhiteLuminance(Imf_2_5::Header const&)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::RGBtoXYZ(Imf_2_5::Chromaticities const&, float)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::TiledInputFile::readTiles(int, int, int, int, int)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::TiledInputFile::numYTiles(int) const' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::Slice::Slice(Imf_2_5::PixelType, char*, unsigned long, unsigned long, int, int, double, bool, bool)' /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: bin/libdarktable.so: undefined reference to `Imf_2_5::whiteLuminance(Imf_2_5::Header const&)' collect2: error: ld returned 1 exit status
i can confirm both that the issue exists and that the attached patch fixes the issue.
This also fails on stable media-gfx/darktable-3.6.0, which (tries to) recompile after today's media-gfx/exiv2 update.
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=919657df943e49b9a5cdc6f709a06568af54c954 commit 919657df943e49b9a5cdc6f709a06568af54c954 Author: Sam James <sam@gentoo.org> AuthorDate: 2021-11-07 23:07:23 +0000 Commit: Sam James <sam@gentoo.org> CommitDate: 2021-11-07 23:07:52 +0000 media-gfx/darktable: add openexr build patch Bug: https://bugs.gentoo.org/820041 Thanks-to: Bernd Feige <Bernd.Feige@gmx.net> Signed-off-by: Sam James <sam@gentoo.org> media-gfx/darktable/darktable-3.6.1-r1.ebuild | 1 + .../darktable/files/darktable-3.6.1_openexr.patch | 65 ++++++++++++++++++++++ 2 files changed, 66 insertions(+)
Has Sam's commit taken care of the issue, or do we need anything else here?
Works for me and no comments to the contrary from anyone else, closing.