Summary: | Устанавлиевает библиотеки в нестандартное место и поэтому добавляет rpath при линковке | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Dmitry V. Levin <ldv> |
Component: | qt5-tools | Assignee: | Sergey V Turchin <zerg> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | blocker | ||
Priority: | P5 | CC: | arseny, ldv, shrek, zerg |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux | ||
URL: | http://git.altlinux.org/tasks/270564/logs/events.1.1.log |
Description
Dmitry V. Levin
2021-04-26 13:59:07 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 Возможно, связано с тем, что /usr/lib/llvm-11.0/lib64/libclang.so указывает на /usr/lib/llvm-11.0/lib64/libclang.so.11 , а не на /usr/lib64/libclang.so.11 . Поскольку 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 всё и портит. > Поскольку 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() Видимо, баг появился в llvm11.0-11.0.0-alt2. (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:...? И путь полный, и сет-версия. > Интересно, а почему у нас такие библиотеки не провайдят /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 В llvm-config никаких rpath не нашёл. Полагаю, достаточно cmake-файлы поправить, чтоб rpath не добавлял. Я не могу отправить новую сборку qt5-tools. Просьба исправить или удалить llvm11.0 из репозитория. (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-файлы никто не ходит. Буду думать дальше... Похоже, qt5-tools виноват. Сам добавляет rpath, если libclang положили в нестандартное место. Проверяю. > Проверяю. Да, прокатило. http://git.altlinux.org/tasks/archive/done/_265/272156/logs/events.1.1.log |