Пакеты для сборки в hasher: BuildRequires(pre): rpm-macros-cmake BuildRequires: make cmake [...] BuildRequires: llvm-common-devel BuildRequires: llvm-comman-clang-devel BuildRequires: libstdc++-devel [...] Секция build: %cmake \ -DCLANG_LINK_CLANG_DYLIB:BOOL=ON \ -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ -DCMAKE_BUILD_TYPE:STRING=Release \ -DCMAKE_CXX_COMPILER:STRING=clang++ %cmake_build [...] Сборка падает со следующим сообщением: Executing(%build): /bin/sh -e /usr/src/tmp/rpm-tmp.14904 + umask 022 + /bin/mkdir -p /usr/src/RPM/BUILD + cd /usr/src/RPM/BUILD + cd ccls-0.20210330 + mkdir -p x86_64-alt-linux + cmake -DCMAKE_SKIP_INSTALL_RPATH:BOOL=yes '-DCMAKE_C_FLAGS:STRING=-pipe -frecord-gcc-switches -Wall -g -O2 ' '-DCMAKE_CXX_FLAGS:STRING=-pipe -frecord-gcc-switches -Wall -g -O2 ' '-DCMAKE_Fortran_FLAGS:STRING=-pipe -frecord-gcc-switches -Wall -g -O2 ' -DCMAKE_INSTALL_PREFIX=/usr -DINCLUDE_INSTALL_DIR:PATH=/usr/include -DLIB_INSTALL_DIR:PATH=/usr/lib64 -DSYSCONF_INSTALL_DIR:PATH=/etc -DSHARE_INSTALL_PREFIX:PATH=/usr/share -DLIB_DESTINATION=lib64 -DLIB_SUFFIX=64 -S . -B x86_64-alt-linux -DBUILD_SHARED_LIBS:BOOL=ON -DCLANG_LINK_CLANG_DYLIB:BOOL=ON -DLLVM_LINK_LLVM_DYLIB:BOOL=ON -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_CXX_COMPILER:STRING=clang++ -- The CXX compiler identification is Clang 12.0.1 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/clang++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found ZLIB: /usr/lib64/libz.so (found version "1.2.11") CMake Error at /usr/lib/llvm-12.0/lib64/cmake/llvm/LLVMExports.cmake:1153 (message): The imported target "LLVMDemangle" references the file "/usr/lib/llvm-12.0/lib64/libLLVMDemangle.a" but this file does not exist. Possible reasons include: * The file was deleted, renamed, or moved to another location. * An install or uninstall procedure did not complete successfully. * The installation package was faulty and contained "/usr/lib/llvm-12.0/lib64/cmake/llvm/LLVMExports.cmake" but not all the files it references. Call Stack (most recent call first): /usr/lib/llvm-12.0/lib64/cmake/llvm/LLVMConfig.cmake:278 (include) /usr/lib/llvm-12.0/lib64/cmake/clang/ClangConfig.cmake:11 (find_package) /usr/lib64/cmake/clang/ClangConfig.cmake:8 (include) CMakeLists.txt:72 (find_package) Директива: -DBUILD_SHARED_LIBS:BOOL=ON не влияет на сборку (всё также падает). Аналогичная ошибка: https://bugzilla.redhat.com/show_bug.cgi?id=1743574
В наших пакетах с LLVM 12 статические библиотеки упакованы в -devel-static. Сами они для сборки будут не нужны, но апстрим LLVM так генерирует cmake-конфиги, что они проверяют наличие всех собранных targets, которые считают нужным. Более того, в актуальных версиях они сломали наш патч RH-0001-CMake-Split-static-library-exports-into-their-own-ex.patch и сделали раздельную установку .so и .a совсем невозможной без существенной переработки CMake-скриптов в дереве исходников, которую апстрим, скорее всего, не примет. В общем, я в ближайшие дни заканчиваю упаковку LLVM 13, где такая проблема возникать не будет. Если критичен именно LLVM 12 или надо просто как можно скорее собрать пакет, то можно доустановить -devel-static — всё равно библиотеки имеют разные имена, т. е. `-lLLVM-12` может прилинковать только shared object (или даст ошибку, если его нет), а `-lLLVMDemangle` может прилинковать соответствующий static object (и тоже даст ошибку, если его нет)
Сейчас сборочный git-тег https://git.altlinux.org/people/ancieg/packages/ccls.git?p=ccls.git;a=commit;h=00cd80e3238b21cf40084faa58fd815fafc3537c у меня в окружении текущего сизифа спокойно собирается.