Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 820041 - media-gfx/darktable-3.6.1 with openexr-3: Include files still taken from openexr-2, linking fails
Summary: media-gfx/darktable-3.6.1 with openexr-3: Include files still taken from open...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Marek Szuba
URL:
Whiteboard:
Keywords: PATCH
Depends on:
Blocks: 820674
  Show dependency tree
 
Reported: 2021-10-24 10:20 UTC by Bernd Feige
Modified: 2021-11-17 11:57 UTC (History)
11 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
Patch to actually compile against openexr:3 (openexr-3.patch,2.17 KB, patch)
2021-10-24 10:20 UTC, Bernd Feige
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Bernd Feige 2021-10-24 10:20:31 UTC
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.
Comment 1 cyrillic 2021-10-27 01:10:11 UTC
I used sed to do the same thing as your patch, and it worked.

Thank you for the hint.
Comment 2 Attila Tóth 2021-10-27 15:50:17 UTC
(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
Comment 3 Miroslav Šulc gentoo-dev 2021-10-28 07:12:49 UTC
i can confirm both that the issue exists and that the attached patch fixes the issue.
Comment 4 Bob Johnson 2021-11-07 17:24:54 UTC
This also fails on stable media-gfx/darktable-3.6.0, which (tries to) recompile after today's media-gfx/exiv2 update.
Comment 5 Larry the Git Cow gentoo-dev 2021-11-07 23:08:03 UTC
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(+)
Comment 6 Marek Szuba archtester gentoo-dev 2021-11-13 23:51:06 UTC
Has Sam's commit taken care of the issue, or do we need anything else here?
Comment 7 Marek Szuba archtester gentoo-dev 2021-11-17 11:57:22 UTC
Works for me and no comments to the contrary from anyone else, closing.