find_package(OpenColorIO) broken under cmake 3.29.1
With the recent update of cmake to v3.29.1 (v3.29 was okay before) of GitHub Actions, OpenColorIO started failing not finding its dependencies:
CMake Warning (dev) at /opt/homebrew/Cellar/cmake/3.29.1/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
The package name passed to `find_package_handle_standard_args` (EXPAT) does
not match the name of the calling package (expat). This can lead to
problems in calling code that expects `find_package` result variables
(e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
/opt/homebrew/Cellar/cmake/3.29.1/share/cmake/Modules/Findexpat.cmake:114 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
/opt/homebrew/Cellar/cmake/3.29.1/share/cmake/Modules/CMakeFindDependencyMacro.cmake:76 (find_package)
build/install/lib/cmake/OpenColorIO/OpenColorIOConfig.cmake:33 (find_dependency)
CMakeLists.txt:163 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.
-- Found EXPAT: /Users/runner/work/tlRender/tlRender/build/install/lib/libexpat.a (found version "2.5.0")
CMake Error at CMakeLists.txt:163 (find_package):
Found package configuration file:
/Users/runner/work/tlRender/tlRender/build/install/lib/cmake/OpenColorIO/OpenColorIOConfig.cmake
but it set OpenColorIO_FOUND to FALSE so package "OpenColorIO" is
considered to be NOT FOUND. Reason given by package:
OpenColorIO could not be found because dependency expat could not be found.
-- Configuring incomplete, errors occurred!
On macOS it fails on expat. On Linux it fails with pystring.
I've just found the same issue with building Qt on GitHub. It's failing there with cmake 3.29.1 while 3.29.2 on my machine works fine. The problem seems to be in the configure_package_config_file module, the code it generates for @PACKAGE_INIT@ is broken.
I reported the bug to Kitware. That's why they released 3.29.2. Have to wait until Github Actions updates to 3.29.2.
Github runners have been updated now.