Opened 5 months ago

Last modified 4 months ago

#69970 reopened defect

gimp2 @2.10.36_4+python27: Undefined symbols for architecture arm64

Reported by: Ooolab Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: cooljeanius (Eric Gallager)
Port: gimp2

Description

When I tried to install gimp2 through MacPorts, I got this error. Could someone please help me with this installation. My OS is Sonoma 14.4.1 The detailed error message is in the attached file. Thanks!

Attachments (1)

gimp2Error.log.bz2 (115.8 KB) - added by jmroot (Joshua Root) 5 months ago.

Download all attachments as: .zip

Change History (5)

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

Owner: set to mascguy
Port: gimp2 added
Status: newassigned
Summary: gimp-2.10.36: Undefined symbols for architecture arm64gimp2 @2.10.36_4+python27: Undefined symbols for architecture arm64
:info:build Undefined symbols for architecture arm64:
:info:build   "Imf_3_2::Chromaticities::Chromaticities(Imath_2_3::Vec2<float> const&, Imath_2_3::Vec2<float> const&, Imath_2_3::Vec2<float> const&, Imath_2_3::Vec2<float> const&)", referenced from:
:info:build       _EXRLoader::getProfile() const in openexr-wrapper.o

Changed 5 months ago by jmroot (Joshua Root)

Attachment: gimp2Error.log.bz2 added

comment:2 Changed 5 months ago by ryandesign (Ryan Carsten Schmidt)

Resolution: duplicate
Status: assignedclosed

Duplicate of #69193.

comment:3 Changed 5 months ago by ryandesign (Ryan Carsten Schmidt)

Resolution: duplicate
Status: closedreopened

Maybe it's simpler to analyze your instance of this problem in this ticket after all, since #69193 is already crowded with a lot of comments and Fred has already solved his problem by reinstalling all ports, a drastic step I'd like you to avoid if we can find the true cause of the problem. Fred can't help us find the problem anymore since he has already deleted whatever caused the problem.

Investigating your log here (and Fred's from #69193 is similar, just months older so it was using an earlier version of openexr 3), the significant aspect of the error message in my opinion is the Imath_2_3 part:

Undefined symbols for architecture arm64:
  "Imf_3_2::Chromaticities::Chromaticities(Imath_2_3::Vec2<float> const&, Imath_2_3::Vec2<float> const&, Imath_2_3::Vec2<float> const&, Imath_2_3::Vec2<float> const&)", referenced from:
      _EXRLoader::getProfile() const in openexr-wrapper.o

2_3 is not the version of the Imath library that openexr 3 uses. The openexr 3 port depends on the imath port which provides libImath-3_1.dylib so the correct symbol, the one that's not undefined, would have Imath_3_1 in place of Imath_2_3. So we need to figure out why your build believes the Imath library version is 2_3 instead of 3_1.

Earlier in the log I see:

In file included from openexr-wrapper.cc:53:
In file included from /opt/local/include/OpenEXR/ImfRgbaFile.h:21:
In file included from /opt/local/include/OpenEXR/ImfFrameBuffer.h:21:
In file included from /opt/local/include/OpenEXR/ImathBox.h:65:
In file included from /opt/local/include/OpenEXR/ImathVec.h:46:
In file included from /opt/local/include/OpenEXR/ImathExc.h:47:
In file included from /opt/local/include/OpenEXR/IexBaseExc.h:10:
In file included from /opt/local/include/OpenEXR/IexNamespace.h:49:
/opt/local/include/OpenEXR/IexConfig.h:22:9: warning: 'IEX_INTERNAL_NAMESPACE' macro redefined [-Wmacro-redefined]
#define IEX_INTERNAL_NAMESPACE Iex_3_2
        ^
/opt/local/include/OpenEXR/IlmBaseConfig.h:47:9: note: previous definition is here
#define IEX_INTERNAL_NAMESPACE Iex_2_3
        ^

Redefinitions are suspicious, especially the familiar 2_3 reference.

Checking my system, I do not have a file /opt/local/include/OpenEXR/IlmBaseConfig.h. Searching the ports database, the only port that has an IlmBaseConfig.h file is ilmbase, a dependency of the older openexr2 port, but it's in /opt/local/libexec/openexr2/include/OpenEXR not in /opt/local/include/OpenEXR. ilmbase's contents also include libImath-2_5.dylib. So my suspicion is that somehow you have, or had, an even older libImath-2_3.dylib, and its headers, installed in /opt/local, possibly even put there by something other than MacPorts.

Let's investigate. Let's see if you have these files, when they were last modified, what port (if any) installed them, and what openexr and imath-related ports you have installed. Try running these three commands, which you can copy/paste to the terminal:

ls -l /opt/local/include/OpenEXR/IlmBaseConfig.h /opt/local/lib/libImath-2_*.dylib
port provides /opt/local/include/OpenEXR/IlmBaseConfig.h /opt/local/lib/libImath-2_*.dylib
port -v installed 'name:(ilmbase|imath|openexr)'

comment:4 Changed 4 months ago by cooljeanius (Eric Gallager)

Cc: cooljeanius added
Note: See TracTickets for help on using tickets.