Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#57497 closed defect (fixed)

ctlang: Undefined symbols aces_Writer::storeHalfRow etc.

Reported by: ryandesign (Ryan Carsten Schmidt) Owned by: MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc:
Port: ctlang aces_container

Description

ctlang doesn't build:

[ 98%] Built target exrdpx
In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_graphics_ctlang/ctlang/work/CTL-1.5.2/ctlrender/transform.cc:61:
In file included from /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_graphics_ctlang/ctlang/work/CTL-1.5.2/lib/IlmCtl/CtlRcPtr.h:71:
/opt/local/include/OpenEXR/IlmThreadMutex.h:131:15: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using Mutex = std::mutex;
              ^
1 warning generated.
[100%] Linking CXX executable ctlrender
cd /opt/local/var/macports/build/_opt_bblocal_var_buildworker_ports_build_ports_graphics_ctlang/ctlang/work/build/ctlrender && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/ctlrender.dir/link.txt --verbose=ON
/usr/bin/clang++  -pipe -Os -DNDEBUG -I/opt/local/include -stdlib=libc++ -D_THREAD_SAFE -arch x86_64 -mmacosx-version-min=10.13 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -L/opt/local/lib -Wl,-headerpad_max_install_names  CMakeFiles/ctlrender.dir/main.cc.o CMakeFiles/ctlrender.dir/transform.cc.o CMakeFiles/ctlrender.dir/usage.cc.o CMakeFiles/ctlrender.dir/aces_file.cc.o CMakeFiles/ctlrender.dir/dpx_file.cc.o CMakeFiles/ctlrender.dir/exr_file.cc.o CMakeFiles/ctlrender.dir/tiff_file.cc.o CMakeFiles/ctlrender.dir/format.cc.o CMakeFiles/ctlrender.dir/compression.cc.o  -o ctlrender ../lib/IlmCtlSimd/libIlmCtlSimd.1.5.0.dylib ../lib/IlmCtlMath/libIlmCtlMath.1.5.0.dylib ../lib/IlmCtl/libIlmCtl.1.5.0.dylib ../lib/dpx/libctldpx.a /opt/local/lib/libImath.dylib /opt/local/lib/libHalf.dylib /opt/local/lib/libIex.dylib /opt/local/lib/libIexMath.dylib /opt/local/lib/libIlmThread.dylib /opt/local/lib/libImath.dylib /opt/local/lib/libHalf.dylib /opt/local/lib/libIex.dylib /opt/local/lib/libIexMath.dylib /opt/local/lib/libIlmThread.dylib /opt/local/lib/libtiff.dylib /opt/local/lib/libIlmImf.dylib /opt/local/lib/libImath.dylib /opt/local/lib/libHalf.dylib /opt/local/lib/libIex.dylib /opt/local/lib/libIexMath.dylib /opt/local/lib/libIlmThread.dylib /opt/local/lib/libImath.dylib /opt/local/lib/libHalf.dylib /opt/local/lib/libIex.dylib /opt/local/lib/libIexMath.dylib /opt/local/lib/libIlmThread.dylib -lIex -lIlmThread -lHalf /opt/local/lib/libtiff.dylib /opt/local/lib/libIlmImf.dylib 
Undefined symbols for architecture x86_64:
  "aces_Writer::storeHalfRow(unsigned short const*, unsigned int)", referenced from:
      aces_write(char const*, float, unsigned int, unsigned int, unsigned int, float const*, format_t*) in aces_file.cc.o
  "aces_Writer::newImageObject(DynamicMetadata const&)", referenced from:
      aces_write(char const*, float, unsigned int, unsigned int, unsigned int, float const*, format_t*) in aces_file.cc.o
  "aces_Writer::saveImageObject()", referenced from:
      aces_write(char const*, float, unsigned int, unsigned int, unsigned int, float const*, format_t*) in aces_file.cc.o
  "aces_Writer::getDefaultHeaderInfo()", referenced from:
      aces_write(char const*, float, unsigned int, unsigned int, unsigned int, float const*, format_t*) in aces_file.cc.o
  "aces_Writer::configure(MetaWriteClip const&)", referenced from:
      aces_write(char const*, float, unsigned int, unsigned int, unsigned int, float const*, format_t*) in aces_file.cc.o
  "aces_Writer::aces_Writer()", referenced from:
      aces_write(char const*, float, unsigned int, unsigned int, unsigned int, float const*, format_t*) in aces_file.cc.o
  "aces_Writer::~aces_Writer()", referenced from:
      aces_write(char const*, float, unsigned int, unsigned int, unsigned int, float const*, format_t*) in aces_file.cc.o
  "acesHeaderInfo::acesHeaderInfo()", referenced from:
      aces_write(char const*, float, unsigned int, unsigned int, unsigned int, float const*, format_t*) in aces_file.cc.o
  "keycode::keycode()", referenced from:
      aces_write(char const*, float, unsigned int, unsigned int, unsigned int, float const*, format_t*) in aces_file.cc.o
  "timecode::timecode(unsigned int, unsigned int)", referenced from:
      aces_write(char const*, float, unsigned int, unsigned int, unsigned int, float const*, format_t*) in aces_file.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [ctlrender/ctlrender] Error 1

Now that openexr requires C++14, maybe ctlang does too?

Change History (5)

comment:1 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

The problem seems to be with the installation of aces_container.
From the log file:

CMake Warning at configure.cmake:49 (find_package):
  By not providing "FindAcesContainer.cmake" in CMAKE_MODULE_PATH this
  project has asked CMake to find a package configuration file provided by
  "AcesContainer", but CMake did not find one.

  Could not find a package configuration file provided by "AcesContainer"
  with any of the following names:

    AcesContainerConfig.cmake
    acescontainer-config.cmake

  Add the installation prefix of "AcesContainer" to CMAKE_PREFIX_PATH or set
  "AcesContainer_DIR" to a directory containing one of the above files.  If
  "AcesContainer" provides a separate development package or SDK, be sure it
  has been installed.
Call Stack (most recent call first):
  CMakeLists.txt:54 (include)

AcesContainerConfig.cmake should be installed by aces_container in ${prefix}/lib/CMake/AcesContainer.
Because of this, -lAcesContainer is not part of the link command, hence the error.

Unfortunately, none of these problems happen on my systems.
Ryan, may I ask for you help in tracking down why ${prefix}/lib/CMake/AcesContainer/AcesContainerConfig.cmake does not seem to exist on the buildbots?
Thank you.

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

Ah, I didn't scroll up to see that. ${prefix}/lib/CMake/AcesContainer/AcesContainerConfig.cmake does exist. The problem is that ${prefix}/lib/CMake is not one of the standard places cmake looks. ${prefix}/lib/cmake is though, so unless you have a case-sensitive filesystem like the buildbot workers do you won't see the problem.

comment:3 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Port: aces_container added
Status: assignedaccepted

comment:4 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Resolution: fixed
Status: acceptedclosed

In d6ab35621fa270fde8f3552f3b4e3dc6c500caa4/macports-ports (master):

aces_container: install files in correct location

${prefix}/lib/cmake and ${prefix}/lib/CMake are different locations
on case-sensitive filesystems.

Fixes #57497

comment:5 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Thank you for the help.

Note: See TracTickets for help on using tickets.