Bug 39991 - Устанавлиевает библиотеки в нестандартное место и поэтому добавляет rpath при линковке
Summary: Устанавлиевает библиотеки в нестандартное место и поэтому добавляет rpath при...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: qt5-tools (show other bugs)
Version: unstable
Hardware: all Linux
: P5 blocker
Assignee: Sergey V Turchin
QA Contact: qa-sisyphus
URL: http://git.altlinux.org/tasks/270564/...
Keywords:
Depends on:
Blocks:
 
Reported: 2021-04-26 13:59 MSK by Dmitry V. Levin
Modified: 2021-05-19 18:06 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dmitry V. Levin 2021-04-26 13:59:07 MSK
Пакет в результате сборки получается с анметами:
qt5-tools#5.15.2-alt1:sisyphus+270564.100.1.1@1619199149  /usr/lib/llvm-11.0/lib64/libclang.so.11(LLVM_11)(64bit)

Это препятствует удалению несобирающегося llvm10.
Comment 1 Sergey V Turchin 2021-04-26 14:07:54 MSK
Кроме llvm-11 ничего нового в этой ситуации не всплывает. Qt ровно тот же, что собирался с llvm-10.

P.S.
http://git.altlinux.org/beehive/logs/Sisyphus-x86_64/latest/success/qt5-tools-5.15.2-alt1
Comment 2 Sergey V Turchin 2021-04-26 14:19:00 MSK
Возможно, связано с тем, что
/usr/lib/llvm-11.0/lib64/libclang.so указывает на /usr/lib/llvm-11.0/lib64/libclang.so.11 , а не на /usr/lib64/libclang.so.11 .
Comment 3 Dmitry V. Levin 2021-04-26 15:40:29 MSK
Поскольку qt5-tools - это единственный пакет в Сизифе с такой проблемой, предлагаю посмотреть, что в его сборочной системе такого необычного, что приводит к линковке с библиотекой, находящейся по нестандартному пути.

Понятно, что это как-то связано с изменением схемы упаковки llvm, но ошибка, по всей видимости, в сборочной системе qt5-tools:
g++ -Wl,-O1 -Wl,--enable-new-dtags -Wl,-rpath,/usr/lib/llvm-11.0/lib64 -o ../../bin/qdoc [...] -L/usr/lib/llvm-11.0/lib64 -lclang /usr/lib64/libQt5QmlDevTools.a /usr/lib64/libQt5Core.so -lpthread

Вот этот rpath всё и портит.
Comment 4 Sergey V Turchin 2021-04-26 15:57:21 MSK
> Поскольку qt5-tools - это единственный пакет в Сизифе с такой проблемой,
Немного не так. llvm11 -- единственный пакет с этой проблемой, т.к. с другими llvm её не было.

> предлагаю посмотреть, что в его сборочной системе такого необычного, что
> приводит к линковке с библиотекой, находящейся по нестандартному пути.
В cmake-файлах clang/llvm этот rpath указан.

> ошибка,
> по всей видимости, в сборочной системе qt5-tools:
> -Wl,-rpath,/usr/lib/llvm-11.0/lib64
Ошибка qt5-tools только в том, что она не умеет распознавать ошибки, которые её дал llvm11.

    if(LLVM_LINKER_IS_GNULD)
      # $ORIGIN is not interpreted at link time by ld.bfd
      set_property(TARGET ${name} APPEND_STRING PROPERTY
                   LINK_FLAGS " -Wl,-rpath-link,${LLVM_LIBRARY_OUTPUT_INTDIR} ")
    endif()
Comment 5 Sergey V Turchin 2021-04-27 14:49:11 MSK
Видимо, баг появился в llvm11.0-11.0.0-alt2.
Comment 6 Arseny Maslennikov 2021-04-27 18:20:59 MSK
(In reply to Dmitry V. Levin from comment #0)
> Пакет в результате сборки получается с анметами:
> qt5-tools#5.15.2-alt1:sisyphus+270564.100.1.1@1619199149 
> /usr/lib/llvm-11.0/lib64/libclang.so.11(LLVM_11)(64bit)
> 
> Это препятствует удалению несобирающегося llvm10.

Интересно, а почему у нас такие библиотеки не провайдят /usr/lib/llvm-11.0/lib64/libclang.so.11(LLVM_11)(64bit) = set:...? И путь полный, и сет-версия.
Comment 7 Sergey V Turchin 2021-05-12 12:38:25 MSK
> Интересно, а почему у нас такие библиотеки не провайдят /usr/lib/llvm-11.0/lib64/libclang.so.11
Возможно, провайдят если с ними упаковать соотв. /etc/ld.so.conf.d/libname.conf , но в данном случае это будет костыль.

P.S.
https://www.altlinux.org/Shared_Libs_Policy
Comment 8 Sergey V Turchin 2021-05-12 13:31:56 MSK
В llvm-config никаких rpath не нашёл.
Полагаю, достаточно cmake-файлы поправить, чтоб rpath не добавлял.
Comment 9 Sergey V Turchin 2021-05-14 12:26:23 MSK
Я не могу отправить новую сборку qt5-tools. Просьба исправить или удалить llvm11.0 из репозитория.
Comment 10 Arseny Maslennikov 2021-05-18 23:30:23 MSK
(In reply to Sergey V Turchin from comment #8)
> В llvm-config никаких rpath не нашёл.
> Полагаю, достаточно cmake-файлы поправить, чтоб rpath не добавлял.

Я тут склонировал у вас qt5-tools 5.15.2-alt2, собрал (успешно), посмотрел на лог strace от следующей команды:
  strace -f -y -o ~/rpmbuild-trace.log -- rpmbuild --rebuild ~/in/srpm/qt5-tools-5.15.2-alt2.src.rpm

[builder@localhost ~]$ grep 'execve("/usr/lib/llvm.*",' ~/rpmbuild-trace.log
7117  execve("/usr/lib/llvm-11.0/bin/llvm-config", ["llvm-config", "--prefix"], 0x7ffdd107c2c0 /* 101 vars */) = 0
7119  execve("/usr/lib/llvm-11.0/bin/llvm-config", ["llvm-config", "--includedir"], 0x7ffe9ffb0150 /* 101 vars */) = 0
7121  execve("/usr/lib/llvm-11.0/bin/llvm-config", ["/usr/lib/llvm-11.0/bin/llvm-conf"..., "--libdir"], 0x1b3c020 /* 101 vars */) = 0
7123  execve("/usr/lib/llvm-11.0/bin/llvm-config", ["/usr/lib/llvm-11.0/bin/llvm-conf"..., "--includedir"], 0x746020 /* 101 vars */) = 0
7125  execve("/usr/lib/llvm-11.0/bin/llvm-config", ["/usr/lib/llvm-11.0/bin/llvm-conf"..., "--version"], 0x700020 /* 101 vars */) = 0

[builder@localhost ~]$ grep -Fi "cmake" ~/rpmbuild-trace.log | grep -i 'clang|llvm' | wc
      0       0       0
Т. е. в cmake-файлы никто не ходит.

Буду думать дальше...
Comment 11 Sergey V Turchin 2021-05-19 16:59:03 MSK
Похоже, qt5-tools виноват. Сам добавляет rpath, если libclang положили в нестандартное место. Проверяю.
Comment 12 Sergey V Turchin 2021-05-19 18:06:59 MSK
> Проверяю.
Да, прокатило.
http://git.altlinux.org/tasks/archive/done/_265/272156/logs/events.1.1.log