<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>42249</bug_id>
          
          <creation_ts>2022-03-25 11:17:53 +0300</creation_ts>
          <short_desc>Сборка с cmake и llvm не может использовать динамическую линковку</short_desc>
          <delta_ts>2022-04-19 19:51:53 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>llvm</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Zhukharev">ancieg</reporter>
          <assigned_to name="Arseny Maslennikov">arseny</assigned_to>
          <cc>arseny</cc>
    
    <cc>lakostis</cc>
    
    <cc>lav</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>208880</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Zhukharev">ancieg</who>
    <bug_when>2022-03-25 11:17:53 +0300</bug_when>
    <thetext>Пакеты для сборки в 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 &apos;-DCMAKE_C_FLAGS:STRING=-pipe -frecord-gcc-switches -Wall -g -O2 &apos; &apos;-DCMAKE_CXX_FLAGS:STRING=-pipe -frecord-gcc-switches -Wall -g -O2 &apos; &apos;-DCMAKE_Fortran_FLAGS:STRING=-pipe -frecord-gcc-switches -Wall -g -O2 &apos; -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 &quot;1.2.11&quot;) 
CMake Error at /usr/lib/llvm-12.0/lib64/cmake/llvm/LLVMExports.cmake:1153 (message):
  The imported target &quot;LLVMDemangle&quot; references the file

     &quot;/usr/lib/llvm-12.0/lib64/libLLVMDemangle.a&quot;

  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

     &quot;/usr/lib/llvm-12.0/lib64/cmake/llvm/LLVMExports.cmake&quot;

  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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208911</commentid>
    <comment_count>1</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2022-03-25 17:52:18 +0300</bug_when>
    <thetext>В наших пакетах с 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 (и тоже даст ошибку, если его нет)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>209742</commentid>
    <comment_count>2</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2022-04-19 19:51:53 +0300</bug_when>
    <thetext>Сейчас сборочный git-тег https://git.altlinux.org/people/ancieg/packages/ccls.git?p=ccls.git;a=commit;h=00cd80e3238b21cf40084faa58fd815fafc3537c у меня в окружении текущего сизифа спокойно собирается.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>