I’m currently debugging a problem in our Github Actions build. We’re doing a custom build of libc++ and libc++abi, and this is failing since the cmake version in the base image was updated to version 3.22.
The issue can be reproduced by following the instructions at . The setup I’m using is this: * Linux * cmake version 3.22 * I’ve tried llvm-project sources 12.0.0, 13.0.0 and the tip of main * system compiler is clang 12.0.1 (but I don’t think that matters here) The exact commands I’m running are (the last one is failing ):
What seems to be happening is that cmake tries to patch the RPATH of libc++.so. But libc++.so is not a symlink to a shared object, it’s a linker script.
I have bisected that to a particular cmake change .
One thing I noticed is that the build works just fine when I’m doing the build of libc++ and libc++abi separately:
cmake -S libcxxabi ... // build, install, ... cmake -S libcxx -DLIBCXX_CXX_ABI=libcxxabi -DLIBCXX_CXX_ABI_LIBRARY_PATH=path/to/install/from/prev/step ...
That works on Linux, but breaks the build on Darwin, it seems to be missing the re-exports of libc++abi symbols in libc++ then.
Also that’s the “deprecated” way of doing things, so not sure if it’s good to pursue that path.
To be honest, I’m not sure I fully understand the problem, or how these different ways of building even make a difference.
Am I doing something wrong? Is this a bug in LLVM’s cmake scripts? Or a bug in cmake?
Any hints what I can try to fix this?
 failing build output:
... -- Installing: /home/roland/test/cmake/llvm-project/install/include/c++/v1/wctype.h -- Installing: /home/roland/test/cmake/llvm-project/install/include/c++/v1/__config_site [4/4] cd /home/roland/test/cmake/llvm-project/build/libcxx/src && /nix/store/n7j...ENT=cxx -P /home/roland/test/cmake/llvm-project/build/libcxx/cmake_install.cmake FAILED: libcxx/src/CMakeFiles/install-cxx /home/roland/test/cmake/llvm-project/build/libcxx/src/CMakeFiles/install-cxx cd /home/roland/test/cmake/llvm-project/build/libcxx/src && /nix/store/n7jz18i0cspdkfd1y0w1mg5rqvs15kdr-cmake-3.22.0/bin/cmake -DCMAKE_INSTALL_COMPONENT=cxx -P /home/roland/test/cmake/llvm-project/build/libcxx/cmake_install.cmake -- Install configuration: "" -- Installing: /home/roland/test/cmake/llvm-project/install/lib/libc++.so.1.0 -- Installing: /home/roland/test/cmake/llvm-project/install/lib/libc++.so.1 -- Set runtime path of "/home/roland/test/cmake/llvm-project/install/lib/libc++.so.1.0" to "" -- Installing: /home/roland/test/cmake/llvm-project/install/lib/libc++.so CMake Error at cmake_install.cmake:88 (file): file RPATH_CHANGE could not write new RPATH: to the file: /home/roland/test/cmake/llvm-project/install/lib/libc++.so Call Stack (most recent call first): /home/roland/test/cmake/llvm-project/build/libcxx/cmake_install.cmake:56 (include) ninja: build stopped: subcommand failed.