Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Serious problem: openexr not fully installing #1021

Closed
lgritz opened this issue May 16, 2021 · 26 comments
Closed

Serious problem: openexr not fully installing #1021

lgritz opened this issue May 16, 2021 · 26 comments

Comments

@lgritz
Copy link
Contributor

lgritz commented May 16, 2021

I'm seeing builds of OpenEXR (from the current master, and when it automatically builds Imath) fail to fully install. It installs the imath part, but the openexr headers and config files are not showing up in the install.

This only recently started happening. I've never seen it happen for v3.0.1, but OIIO CI started failing several days ago (actually, the CI itself didn't fail; the install of master openexr was broken, and my CI fell back to a syste install of OpenEXR 2.3, so it took me a while to discover the problem).

I can reproduce it by hand. Some bisecting indicates that it may have been introduced (or at least become symptomatic) specifically with the merge of #1008, but I don't understand why that would be the case, and so I'm not 100% certain.

Below is a transcript of me doing this right now on my Mac, at the commit that corresponds to #1008. (I can't seem to reproduce it with earlier commits.) Look particularly at the lines that begin with -- Installing: (for what's missing) as well as the ls -R at the end that shows that it really is missing.

This is on Mac, but I've seen it on OIIO CI on Linux. Here's an example:

lg@unagi20 ~/code/openexr (broken) $ rm -rf build dist 
lg@unagi20 ~/code/openexr (broken) $ cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/dist -DOPENEXR_INSTALL_EXAMPLES=0 -DBUILD_TESTING=0 -DOPENEXR_BUILD_UTILS=0
-- The C compiler identification is AppleClang 12.0.0.12000032
-- The CXX compiler identification is AppleClang 12.0.0.12000032
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/local/opt/ccache/libexec/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/local/opt/ccache/libexec/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configure OpenEXR Version: 3.0.2-dev Lib API: 28.0.0
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Imath was not found, installing from https://github.com/AcademySoftwareFoundation/Imath.git (master)
-- Configure Imath Version: 3.0.2-dev Lib API: 28.0.0
-- Imath is configuring as a cmake sub project
-- Performing Test OPENEXR_IMF_HAVE_SYSCONF_NPROCESSORS_ONLN
-- Performing Test OPENEXR_IMF_HAVE_SYSCONF_NPROCESSORS_ONLN - Success
-- Performing Test OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX
-- Performing Test OPENEXR_IMF_HAVE_GCC_INLINE_ASM_AVX - Success
-- Looking for include file ucontext.h
-- Looking for include file ucontext.h - not found
-- clang-format found: /usr/local/bin/clang-format
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/lg/code/openexr/build
lg@unagi20 ~/code/openexr (broken) $ cmake --build build --target install
[  1%] Building CXX object src/lib/Iex/CMakeFiles/Iex.dir/IexThrowErrnoExc.cpp.o
[  3%] Building CXX object src/lib/Iex/CMakeFiles/Iex.dir/IexBaseExc.cpp.o
[  3%] Building CXX object _deps/imath-build/src/Imath/CMakeFiles/Imath.dir/ImathColorAlgo.cpp.o
[  3%] Building CXX object _deps/imath-build/src/Imath/CMakeFiles/Imath.dir/ImathMatrixAlgo.cpp.o
[  3%] Building CXX object _deps/imath-build/src/Imath/CMakeFiles/Imath.dir/ImathRandom.cpp.o
[  5%] Building CXX object src/lib/Iex/CMakeFiles/Iex.dir/IexMathFpu.cpp.o
[  5%] Building CXX object _deps/imath-build/src/Imath/CMakeFiles/Imath.dir/ImathFun.cpp.o
[  6%] Building CXX object src/lib/Iex/CMakeFiles/Iex.dir/IexMathFloatExc.cpp.o
[  7%] Building CXX object _deps/imath-build/src/Imath/CMakeFiles/Imath.dir/half.cpp.o
[  7%] Linking CXX shared library libIex-3_0.dylib
[  7%] Linking CXX shared library libImath-3_0.dylib
[  7%] Built target Imath
[  7%] Built target Iex
[  8%] Building CXX object src/lib/IlmThread/CMakeFiles/IlmThread.dir/IlmThreadSemaphorePosixCompat.cpp.o
[  9%] Building CXX object src/lib/IlmThread/CMakeFiles/IlmThread.dir/IlmThread.cpp.o
[ 10%] Building CXX object src/lib/IlmThread/CMakeFiles/IlmThread.dir/IlmThreadPool.cpp.o
[ 11%] Building CXX object src/lib/IlmThread/CMakeFiles/IlmThread.dir/IlmThreadSemaphore.cpp.o
[ 12%] Building CXX object src/lib/IlmThread/CMakeFiles/IlmThread.dir/IlmThreadSemaphoreOSX.cpp.o
[ 12%] Building CXX object src/lib/IlmThread/CMakeFiles/IlmThread.dir/IlmThreadSemaphorePosix.cpp.o
[ 13%] Building CXX object src/lib/IlmThread/CMakeFiles/IlmThread.dir/IlmThreadSemaphoreWin32.cpp.o
[ 14%] Linking CXX shared library libIlmThread-3_0.dylib
[ 14%] Built target IlmThread
[ 17%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfChannelList.cpp.o
[ 18%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfCRgbaFile.cpp.o
[ 18%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfAttribute.cpp.o
[ 18%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfChannelListAttribute.cpp.o
[ 18%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfFloatAttribute.cpp.o
[ 19%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfBoxAttribute.cpp.o
[ 20%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfHeader.cpp.o
[ 21%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfFrameBuffer.cpp.o
[ 22%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfIO.cpp.o
[ 22%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfInputFile.cpp.o
[ 23%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfIntAttribute.cpp.o
[ 24%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfLineOrderAttribute.cpp.o
[ 25%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfMatrixAttribute.cpp.o
[ 25%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfOpaqueAttribute.cpp.o
[ 26%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfOutputFile.cpp.o
[ 27%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfRgbaFile.cpp.o
[ 29%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfVecAttribute.cpp.o
[ 29%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfStringAttribute.cpp.o
[ 31%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfHuf.cpp.o
[ 31%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfWav.cpp.o
[ 31%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfThreading.cpp.o
[ 32%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfLut.cpp.o
[ 33%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfCompressor.cpp.o
[ 33%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfRleCompressor.cpp.o
[ 34%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfZipCompressor.cpp.o
[ 35%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfPizCompressor.cpp.o
[ 36%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfB44Compressor.cpp.o
[ 37%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDwaCompressor.cpp.o
[ 37%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfMisc.cpp.o
[ 38%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfCompressionAttribute.cpp.o
[ 39%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDoubleAttribute.cpp.o
[ 40%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfConvert.cpp.o
[ 40%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfPreviewImage.cpp.o
[ 41%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfPreviewImageAttribute.cpp.o
[ 43%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfVersion.cpp.o
[ 43%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfChromaticities.cpp.o
[ 44%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfChromaticitiesAttribute.cpp.o
[ 44%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfKeyCode.cpp.o
[ 45%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfKeyCodeAttribute.cpp.o
[ 46%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfTimeCode.cpp.o
[ 47%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfTimeCodeAttribute.cpp.o
[ 48%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfRational.cpp.o
[ 48%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfRationalAttribute.cpp.o
[ 49%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfFramesPerSecond.cpp.o
[ 50%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfStdIO.cpp.o
[ 51%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfStandardAttributes.cpp.o
[ 51%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfEnvmap.cpp.o
[ 52%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfEnvmapAttribute.cpp.o
[ 53%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfScanLineInputFile.cpp.o
[ 54%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfTiledInputFile.cpp.o
[ 55%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfTiledMisc.cpp.o
[ 55%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfTiledOutputFile.cpp.o
[ 56%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfTiledRgbaFile.cpp.o
[ 57%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfTileDescriptionAttribute.cpp.o
[ 58%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfTileOffsets.cpp.o
[ 59%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfRgbaYca.cpp.o
[ 59%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfPxr24Compressor.cpp.o
[ 60%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfTestFile.cpp.o
[ 61%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfStringVectorAttribute.cpp.o
[ 62%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfMultiView.cpp.o
[ 62%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfAcesFile.cpp.o
[ 64%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfMultiPartOutputFile.cpp.o
[ 64%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfGenericOutputFile.cpp.o
[ 65%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfOutputPartData.cpp.o
[ 65%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfGenericInputFile.cpp.o
[ 66%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfMultiPartInputFile.cpp.o
[ 67%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfPartType.cpp.o
[ 68%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfInputPartData.cpp.o
[ 69%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfTiledOutputPart.cpp.o
[ 70%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfOutputPart.cpp.o
[ 70%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfInputPart.cpp.o
[ 71%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfTiledInputPart.cpp.o
[ 72%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDeepScanLineInputPart.cpp.o
[ 72%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDeepScanLineOutputFile.cpp.o
[ 74%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDeepScanLineInputFile.cpp.o
[ 74%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDeepScanLineOutputPart.cpp.o
[ 75%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDeepTiledInputPart.cpp.o
[ 76%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDeepTiledOutputPart.cpp.o
[ 77%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDeepTiledInputFile.cpp.o
[ 77%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDeepTiledOutputFile.cpp.o
[ 78%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDeepFrameBuffer.cpp.o
[ 79%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDeepCompositing.cpp.o
[ 80%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfCompositeDeepScanLine.cpp.o
[ 82%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfFastHuf.cpp.o
[ 82%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfFloatVectorAttribute.cpp.o
[ 82%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfDeepImageStateAttribute.cpp.o
[ 83%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfRle.cpp.o
[ 84%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfSystemSpecific.cpp.o
[ 85%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfZip.cpp.o
[ 85%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfIDManifest.cpp.o
[ 86%] Building CXX object src/lib/OpenEXR/CMakeFiles/OpenEXR.dir/ImfIDManifestAttribute.cpp.o
[ 87%] Linking CXX shared library libOpenEXR-3_0.dylib
[ 87%] Built target OpenEXR
[ 88%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfFlatImageChannel.cpp.o
[ 90%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfDeepImageChannel.cpp.o
[ 90%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfSampleCountChannel.cpp.o
[ 90%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfImageChannel.cpp.o
[ 93%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfImageLevel.cpp.o
[ 93%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfFlatImageLevel.cpp.o
[ 93%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfImage.cpp.o
[ 93%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfDeepImageLevel.cpp.o
[ 95%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfFlatImage.cpp.o
[ 95%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfDeepImage.cpp.o
[ 96%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfImageIO.cpp.o
[ 96%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfFlatImageIO.cpp.o
[ 98%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfCheckFile.cpp.o
[ 98%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfDeepImageIO.cpp.o
[ 99%] Building CXX object src/lib/OpenEXRUtil/CMakeFiles/OpenEXRUtil.dir/ImfImageDataWindow.cpp.o
[100%] Linking CXX shared library libOpenEXRUtil-3_0.dylib
[100%] Built target OpenEXRUtil
Install the project...
-- Install configuration: "Release"
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathConfig.h
-- Installing: /Users/lg/code/openexr/dist/lib/pkgconfig/Imath.pc
-- Installing: /Users/lg/code/openexr/dist/lib/cmake/Imath/ImathConfig.cmake
-- Installing: /Users/lg/code/openexr/dist/lib/cmake/Imath/ImathConfigVersion.cmake
-- Installing: /Users/lg/code/openexr/dist/lib/cmake/Imath/ImathTargets.cmake
-- Installing: /Users/lg/code/openexr/dist/lib/cmake/Imath/ImathTargets-release.cmake
-- Installing: /Users/lg/code/openexr/dist/lib/libImath-3_0.28.0.0.dylib
-- Installing: /Users/lg/code/openexr/dist/lib/libImath-3_0.28.dylib
-- Installing: /Users/lg/code/openexr/dist/lib/libImath-3_0.dylib
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathBoxAlgo.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathBox.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathColorAlgo.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathColor.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathEuler.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathExport.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathForward.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathFrame.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathFrustum.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathFrustumTest.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathFun.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathGL.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathGLU.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathInt64.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathInterval.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathLineAlgo.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathLine.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathMath.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathMatrixAlgo.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathMatrix.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathNamespace.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathPlane.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathPlatform.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathQuat.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathRandom.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathRoots.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathShear.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathSphere.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathTypeTraits.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathVecAlgo.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/ImathVec.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/half.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/halfFunction.h
-- Installing: /Users/lg/code/openexr/dist/include/Imath/halfLimits.h
-- Creating symlink in /Users/lg/code/openexr/dist/lib libImath.dylib -> libImath-3_0.dylib
-- Installing: /Users/lg/code/openexr/dist/lib/pkgconfig/OpenEXR.pc
-- Creating symlink in /Users/lg/code/openexr/dist/lib libIex.dylib -> libIex-3_0.dylib
-- Creating symlink in /Users/lg/code/openexr/dist/lib libIlmThread.dylib -> libIlmThread-3_0.dylib
-- Creating symlink in /Users/lg/code/openexr/dist/lib libOpenEXR.dylib -> libOpenEXR-3_0.dylib
-- Creating symlink in /Users/lg/code/openexr/dist/lib libOpenEXRUtil.dylib -> libOpenEXRUtil-3_0.dylib
lg@unagi20 ~/code/openexr (broken) $ ls -R dist
dist:
include/  lib/

dist/include:
Imath/

dist/include/Imath:
ImathBox.h        ImathFrustum.h      ImathMath.h        ImathShear.h
ImathBoxAlgo.h    ImathFrustumTest.h  ImathMatrix.h      ImathSphere.h
ImathColor.h      ImathFun.h          ImathMatrixAlgo.h  ImathTypeTraits.h
ImathColorAlgo.h  ImathGL.h           ImathNamespace.h   ImathVec.h
ImathConfig.h     ImathGLU.h          ImathPlane.h       ImathVecAlgo.h
ImathEuler.h      ImathInt64.h        ImathPlatform.h    half.h
ImathExport.h     ImathInterval.h     ImathQuat.h        halfFunction.h
ImathForward.h    ImathLine.h         ImathRandom.h      halfLimits.h
ImathFrame.h      ImathLineAlgo.h     ImathRoots.h

dist/lib:
cmake/                      libImath-3_0.28.dylib@  libOpenEXRUtil.dylib@
libIex.dylib@               libImath-3_0.dylib@     pkgconfig/
libIlmThread.dylib@         libImath.dylib@
libImath-3_0.28.0.0.dylib*  libOpenEXR.dylib@

dist/lib/cmake:
Imath/

dist/lib/cmake/Imath:
ImathConfig.cmake         ImathTargets-release.cmake
ImathConfigVersion.cmake  ImathTargets.cmake

dist/lib/pkgconfig:
Imath.pc  OpenEXR.pc

You can see that the libOpenEXR made it, but not the headers, nor the lib/cmake/OpenEXR area.

Can somebody else please try this all on their own and see if you can reproduce?

I haven't yet tried the top of 2.4 and 2.5, but we better make sure those are not broken before we do any releases.

@lgritz
Copy link
Contributor Author

lgritz commented May 16, 2021

To be clear: I'm tied up with other things and am NOT currently trying to debug this.

@meshula
Copy link
Contributor

meshula commented May 16, 2021

Confirmed on an M1 Mac.

Also, unrelated but notable, the build was bonkers fast compared to my 2020 x86 Mac. (seconds compared to minutes.)

@cary-ilm
Copy link
Member

It fails on Linux as well, and #1008 does seem to be the culprit. Restoring CMakeList.txt and cmake/OpenEXRversion.cmake from pre-1008 fixes the problem, headers get installed as expected.

The purpose of #1008 was to consolidate the version settings into the project() statement in the top-level CMakeList.txt, but it clearly has unintended side effects.

I'll investigate further, but if someone with more CMake knowledge could look as well, that would be helpful.

@cary-ilm
Copy link
Member

#1022 should fix it. My bad, I accidentally deleted important lines out of the CMakeLists.txt.

We really need to beef up our CI to confirm that the install happens properly.

@hjmallon
Copy link
Contributor

@cary-ilm : Does this change maybe need cherry picking into 3.0.2? Noticed in Homebrew/homebrew-core#77485

@cary-ilm
Copy link
Member

My apologies, that was an oversight. I'll merge it and put out a 3.0.3 asap.

@lgritz
Copy link
Contributor Author

lgritz commented May 18, 2021

Oh boy, we really do need our CI to check both the install and the ability of projects to consume the config files that we generate.

@meshula
Copy link
Contributor

meshula commented May 18, 2021

CI should check both the install and the ability of projects to consume OpenEXR's config files

Sounds like a new Issue!

@hjmallon
Copy link
Contributor

Perhaps tagging pull requests with which branches they need to be back-ported to would help too?

@meshula
Copy link
Contributor

meshula commented May 18, 2021

That would be a nice use of the labels system.

@lgritz
Copy link
Contributor Author

lgritz commented May 18, 2021

I love that tagging idea, though I will note that in this case, the patch that fixed it was written and merged at a time when the patch that broke it had not yet been merged into 3.0.2, so it's not clear that anybody would have known to tag it. The issue was that the break and the fix had to go into any branch as a pair, or not at all.

@lgritz
Copy link
Contributor Author

lgritz commented May 18, 2021

BTW, I just confirmed that the current RB-3.0 fixes the issue and has a correct install.

@cary-ilm
Copy link
Member

I just noticed another problem with the setting of the IMATH_VERSION and IMATH_VERSION_STRING, the setting of IMATH_VERSION_PATCH appears to be set incorrectly when Imath is fetched via get. It builds properly but with an incorrect version string. This is the cmake output I'm getting, @lgritz, can you confirm this is what you're seeing as well?

-- Imath was not found, installing from https://github.com/AcademySoftwareFoundation/Imath.git (v3.0.2)
-- Configure Imath Version: 3.0.3 Lib API: 28.0.0

Note that it says it's fetching from v3.0.2, which has IMATH_VERSION_PATCH set to 2, but somehow that's getting changed to 3.

@lgritz
Copy link
Contributor Author

lgritz commented May 18, 2021

yeah, interesting. If I build in the way that downloads and incorporates Imath, it gets the openexr version rather than the imath version. Hmmm.

It must be some subtlety about how the subprojects work.

@cary-ilm
Copy link
Member

cary-ilm commented May 18, 2021 via email

@lgritz
Copy link
Contributor Author

lgritz commented May 18, 2021

I would just tag Imath v3.0.3 (even if there is no code change) and call it a day.

@cary-ilm
Copy link
Member

@hjmallon, a new release OpenEXR v3.0.3 should resolve the install issue (as well as the Imath version). I mentioned it on Homebrew/homebrew-core#77485 as well. Thanks for flagging so quickly.

@cary-ilm
Copy link
Member

And regarding labels, I've already been applying labels to PR's to indicate what release they're merged into, but only by hand and after-the-fact,so it's informational but not a reliable preventative measure.

I'd really like to have a methodical and comprehensive release checklist, it would help especially when putting out multiple releases close together.

@lgritz
Copy link
Contributor Author

lgritz commented May 19, 2021

Oops, there may be a problem with this after all. I believe that the Imath that is tagged 3.0.3 still contains this line in its CMakeLists.txt:

project(Imath VERSION 3.0.2 LANGUAGES C CXX)

So its ImathConfigVersion.cmake declares the wrong version, and that can cause some serious problems in conjunction with OpenEXR.

@lgritz
Copy link
Contributor Author

lgritz commented May 19, 2021

I think that if you build OpenEXR in the way that it also builds Imath, it's all ok? But if you truly build Imath separately, then you have an Imath that declares itself as 3.0.2 and an OpenEXR that thinks 3.0.3, and that can create problems for downstream projects.

I didn't notice this in the OIIO CI tests yesterday, because it builds just openexr, relying on it in turn building imath.

But when Homebrew upgraded both to 3.0.3 this morning (as separate packages), my own builds on my Mac laptop now have trouble in some circumstances.

@cary-ilm
Copy link
Member

cary-ilm commented May 19, 2021 via email

@lgritz
Copy link
Contributor Author

lgritz commented May 19, 2021

It's partly my own fault, too. It looks like the confusion is that OIIO's exported OpenImageIOConfig.cmake uses the openexr and imath versions sloppily/interchangeably. It makes a bad assumption that they are in sync.

@lgritz
Copy link
Contributor Author

lgritz commented May 19, 2021

I can fix on my end, it's a legit bug on my part.

But on the other hand, the declared version really is wrong in Imath.

@cary-ilm
Copy link
Member

I'll patch AcademySoftwareFoundation/Imath#145 into Imath's RV-3.0 branch shortly as a step towards a v3.0.4 Imath release (skipped v3.0.3 since that was just a tag). Let's let it settle for a few days before making the actual release, but I'll get it in place.

@lgritz
Copy link
Contributor Author

lgritz commented May 19, 2021

What was happening is that OpenImageIOConfig.cmake was forcing a find_dependency(Imath 3.0.3) because that's what OpenEXR version it found. But then the Imath config it found said it was 3.0.2, so it was rejecting it as "too old a version". Totally my fault, essentially a cut and paste error.

It wasn't OIIO's build itself that breaks in this case, it's other downstream cmake-based projects that consume OIIO's exported cmake config.

The tangled web we weave.

Here's the fix on my end: AcademySoftwareFoundation/OpenImageIO#2975

@lgritz
Copy link
Contributor Author

lgritz commented May 20, 2021

This was fixed by #1022

@lgritz lgritz closed this as completed May 20, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants