Bug 38791

Summary: FTBFS on armh
Product: Sisyphus Reporter: Dmitry V. Levin <ldv>
Component: llvm9.0Assignee: Valery Inozemtsev <shrek>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: blocker    
Priority: P5 CC: aen, cas, darktemplaralt, lav, legion, sbolshakov, sin
Version: unstable   
Hardware: arm   
OS: Linux   

Description Dmitry V. Levin 2020-08-09 16:48:13 MSK
llvm9.0-9.0.1-alt3 consistently fails to build on armh:

https://lists.altlinux.org/pipermail/sisyphus-incominger/2020-August/578316.html
https://lists.altlinux.org/pipermail/sisyphus-incominger/2020-August/578690.html
https://lists.altlinux.org/pipermail/sisyphus-incominger/2020-August/578698.html
https://lists.altlinux.org/pipermail/sisyphus-incominger/2020-August/578703.html

This is especially BAD because it blocks rebuild (with libffi.so.7 instead of libffi.so.6) on all architectures, including non-armh ones.

Please fix this ASAP.
Comment 1 AEN 2020-08-10 11:44:58 MSK
Может быть, это будет полезно:
https://fedora.pkgs.org/31/fedora-updates-armhfp/llvm-9.0.1-6.fc31.armv7hl.rpm.html
Comment 2 Valery Inozemtsev 2020-08-10 17:00:22 MSK
llvm 9.0 нужно удалить (я уже давно пытаюсь это сделать), все что с ним собрано, пересобрать с llvm 10.0
Comment 3 Dmitry V. Levin 2020-08-10 17:05:13 MSK
(In reply to Valery Inozemtsev from comment #2)
> llvm 9.0 нужно удалить (я уже давно пытаюсь это сделать), все что с ним
> собрано, пересобрать с llvm 10.0

Пока что удаление llvm 9.0 очень далеко от завершения:
$ grep -Fw llvm9.0-9.0.1-alt3.src.rpm ALT/Sisyphus/files/list/bin.list |cut -f1 |sort -u |join -11 -22 -o2.1 - beehive/stats/Sisyphus-x86_64/ufb-2 |sort -u |grep -v ^llvm9 |wc -l
502

Другими словами, более полутысячи пакетов ещё используют этот llvm для сборки.
Comment 4 Valery Inozemtsev 2020-08-10 17:21:13 MSK
не совсем так

2020-Aug-10 14:12:13 :: test-only task #256117 for sisyphus started by shrek:
2020-Aug-10 14:12:13 :: message: Deprecadet!!!_use_llvm10.0
#100 delete llvm9.0
[...]
ACLs of affected packages (9):
 afl	manowar darktemplar
 bpftrace	vt @everybody
 castxml	darktemplar @everybody
 ghc8.6.4	sin @everybody
 gnome-builder	aris
 gnustep-dbuskit	lakostis @everybody
 python-module-PySide2	cas @everybody
 python3-module-PySide2	cas @everybody
 qt5-tools	zerg

самое время заняться исправлением этих 9-ти пакетов. чинить сборку llvm 9.0 вообще смысла не вижу, да и сборочницы на armh у меня нет
Comment 5 AEN 2020-08-10 17:24:49 MSK
Сборочница armh у Вас есть. Она поднимается на любом одноплатнике aarch64. 
Но, возможно, проще пересобрать эти пакеты.
Comment 6 Valery Inozemtsev 2020-08-10 17:32:33 MSK
(Ответ для AEN на комментарий #5)
> Сборочница armh у Вас есть. Она поднимается на любом одноплатнике aarch64.

есть, точнеее были. целых два. но сейчас они оба выключены и физического доступа к ним у меня нет
 
> Но, возможно, проще пересобрать эти пакеты.

конечно проще, хотя бы для того что бы не делать работу на выброс
Comment 7 Aleksei Nikiforov 2020-08-10 17:33:11 MSK
(Ответ для Valery Inozemtsev на комментарий #4)
>  castxml	darktemplar @everybody
> 
> самое время заняться исправлением этих 9-ти пакетов. чинить сборку llvm 9.0
> вообще смысла не вижу, да и сборочницы на armh у меня нет

А с castxml что-то не так? Насколько мне известно, с пересборкой проблем нет.
Comment 8 Dmitry V. Levin 2020-08-10 17:41:44 MSK
(In reply to Aleksei Nikiforov from comment #7)
> А с castxml что-то не так? Насколько мне известно, с пересборкой проблем нет.

$ rpmquery -Rp /ALT/Sisyphus/files/SRPMS/castxml-0.3.4-alt1.src.rpm |grep -E '^(clang|llvm)'
llvm-devel  
llvm-devel-static  
clang-devel  
clang-devel-static  

Однако в сборочной среде этого пакета нет llvm10, но есть llvm9.
Выводы делайте сами.
Comment 9 Valery Inozemtsev 2020-08-10 17:54:13 MSK
(Ответ для Dmitry V. Levin на комментарий #8)
> Однако в сборочной среде этого пакета нет llvm10, но есть llvm9.
> Выводы делайте сами.

потому что наш чудный apt считает что у пакета llvm9.0-devel-9.0.1-alt3 (который провайдит llvm-devel-9.0.1-alt3) версия выше чем у пакета llvm10.0-devel-10.0.0-alt2 (который провайдит llvm-devel-10.0.0-alt2)
Comment 10 Dmitry V. Levin 2020-08-10 17:56:00 MSK
(In reply to Valery Inozemtsev from comment #9)
> (Ответ для Dmitry V. Levin на комментарий #8)
> > Однако в сборочной среде этого пакета нет llvm10, но есть llvm9.
> > Выводы делайте сами.
> 
> потому что наш чудный apt считает что у пакета llvm9.0-devel-9.0.1-alt3
> (который провайдит llvm-devel-9.0.1-alt3) версия выше чем у пакета
> llvm10.0-devel-10.0.0-alt2 (который провайдит llvm-devel-10.0.0-alt2)

Вы не можете поменять поведение apt задним числом.
Не хотели сделать так, как в gcc - страдайте.
Comment 11 Valery Inozemtsev 2020-08-10 18:03:55 MSK
(Ответ для Dmitry V. Levin на комментарий #10)
> Не хотели сделать так, как в gcc

llvm не gcc, апстрим не предполагает иметь одновременно несколько версий девел пакетов (как минимум хидеры пересекаются). а вот иметь предсказуемое поведение apt'а очень бы хотелось

> - страдайте.
страдайте
Comment 12 Dmitry V. Levin 2020-08-10 18:13:08 MSK
(In reply to Valery Inozemtsev from comment #11)
> (Ответ для Dmitry V. Levin на комментарий #10)
> > Не хотели сделать так, как в gcc
> 
> llvm не gcc, апстрим не предполагает иметь одновременно несколько версий
> девел пакетов (как минимум хидеры пересекаются). а вот иметь предсказуемое
> поведение apt'а очень бы хотелось

Апстриму llvm вообще пофиг.
Если мы собираем llvm в репозиторий, то это наша задача - обеспечить, чтобы у нас работало так, как надо нам.

> страдайте

Мантейнер не имеет права давать такой ответ.
Comment 13 Dmitry V. Levin 2020-08-10 18:15:45 MSK
(In reply to Dmitry V. Levin from comment #8)
> (In reply to Aleksei Nikiforov from comment #7)
> > А с castxml что-то не так? Насколько мне известно, с пересборкой проблем нет.
> 
> $ rpmquery -Rp /ALT/Sisyphus/files/SRPMS/castxml-0.3.4-alt1.src.rpm |grep -E
> '^(clang|llvm)'
> llvm-devel  
> llvm-devel-static  
> clang-devel  
> clang-devel-static  
> 
> Однако в сборочной среде этого пакета нет llvm10, но есть llvm9.
> Выводы делайте сами.

Если вы прибьёте туда clang10/llvm10/lld10, то не соберётся:
https://lists.altlinux.org/pipermail/sisyphus-incominger/2020-August/579067.html
Comment 14 Michael Shigorin 2020-08-10 18:22:00 MSK
> it blocks rebuild (with libffi.so.7 instead of libffi.so.6)
It's linux (c)
Comment 15 Dmitry V. Levin 2020-08-10 18:24:03 MSK
(In reply to Michael Shigorin from comment #14)
> > it blocks rebuild (with libffi.so.7 instead of libffi.so.6)
> It's linux (c)

Нет, это перекладывание проблем поддержки нишевых архитектур на мантейнеров популярных архитектур.
Comment 16 Valery Inozemtsev 2020-08-10 18:27:30 MSK
(Ответ для Dmitry V. Levin на комментарий #12)
> как надо нам.

непредсказуемое поведение apt'а это так надо нам?
 
> > страдайте
> 
> Мантейнер не имеет права давать такой ответ.

тогда ждите когда мантейнер сделает "как в gcc"
Comment 17 Dmitry V. Levin 2020-08-10 18:31:37 MSK
(In reply to Valery Inozemtsev from comment #16)
> (Ответ для Dmitry V. Levin на комментарий #12)
> > как надо нам.
> 
> непредсказуемое поведение apt'а это так надо нам?

Оно вполне предсказуемое: когда не указана версия, apt выбирает того провайдера, имя которого лексикографически круче.  На это поведение многое было раньше завязано, когда gcc собирался по прежней схеме.

> > > страдайте
> > 
> > Мантейнер не имеет права давать такой ответ.
> 
> тогда ждите когда мантейнер сделает "как в gcc"

Когда примерно наступит этот празник?
Comment 18 Valery Inozemtsev 2020-08-10 18:40:22 MSK
(Ответ для Dmitry V. Levin на комментарий #17)
> (In reply to Valery Inozemtsev from comment #16)
> > (Ответ для Dmitry V. Levin на комментарий #12)
> > > как надо нам.
> > 
> > непредсказуемое поведение apt'а это так надо нам?
> 
> Оно вполне предсказуемое: когда не указана версия, apt выбирает того
> провайдера, имя которого лексикографически круче.  На это поведение многое
> было раньше завязано, когда gcc собирался по прежней схеме.
> 
> > > > страдайте
> > > 
> > > Мантейнер не имеет права давать такой ответ.
> > 
> > тогда ждите когда мантейнер сделает "как в gcc"
> 
> Когда примерно наступит этот празник?

хз. врапер тупо берется из gcc-common, надо только хидеры по подкаталагам раскидать и научить его лазить в нужные места. но это никак не поможет собраться llvm9.0 на armh
Comment 19 Aleksei Nikiforov 2020-08-10 19:04:00 MSK
(Ответ для Dmitry V. Levin на комментарий #13)
> Если вы прибьёте туда clang10/llvm10/lld10, то не соберётся:
> https://lists.altlinux.org/pipermail/sisyphus-incominger/2020-August/579067.
> html

А вот это уже должно собраться, если собирать и с llvm10.0:
http://git.altlinux.org/people/darktemplar/packages/?p=castxml.git;a=commitdiff;h=159f593751e9731e252596cea6a9ac7301aaf6ce
Comment 20 Valery Inozemtsev 2020-08-10 19:07:58 MSK
(Ответ для Aleksei Nikiforov на комментарий #19)
> (Ответ для Dmitry V. Levin на комментарий #13)
> > Если вы прибьёте туда clang10/llvm10/lld10, то не соберётся:
> > https://lists.altlinux.org/pipermail/sisyphus-incominger/2020-August/579067.
> > html
> 
> А вот это уже должно собраться, если собирать и с llvm10.0:
> http://git.altlinux.org/people/darktemplar/packages/?p=castxml.git;
> a=commitdiff;h=159f593751e9731e252596cea6a9ac7301aaf6ce

и что останавливает?
Comment 21 Dmitry V. Levin 2020-08-10 19:27:18 MSK
(In reply to Aleksei Nikiforov from comment #19)
> (Ответ для Dmitry V. Levin на комментарий #13)
> > Если вы прибьёте туда clang10/llvm10/lld10, то не соберётся:
> > https://lists.altlinux.org/pipermail/sisyphus-incominger/2020-August/579067.
> > html
> 
> А вот это уже должно собраться, если собирать и с llvm10.0:
> http://git.altlinux.org/people/darktemplar/packages/?p=castxml.git;
> a=commitdiff;h=159f593751e9731e252596cea6a9ac7301aaf6ce

Попробуйте отправить это в Сизиф.
Поскольку в сборочнице свои pkgpriorities, там можно закостылить llvm10 вместо llvm9.
Comment 22 Valery Inozemtsev 2020-08-10 19:46:47 MSK
[00:09:11] LLVM ERROR: out of memory
[00:09:11] Stack dump:
[00:09:11] 0.	Running pass 'CallGraph Pass Manager' on module 'tools/clang/lib/Serialization/CMakeFiles/obj.clangSerialization.dir/ASTWriter.cpp.o'.
[00:09:11] 1.	Running pass 'Memory SSA' on function '@_ZN5clang15ASTRecordWriter7AddAttrEPKNS_4AttrE'
[00:09:11] clang-9: error: unable to execute command: Aborted
[00:09:11] clang-9: error: linker command failed due to signal (use -v to see invocation)
[00:09:11] ninja: build stopped: subcommand failed.

Предлагайте решение проблемы. У меня его нет
Comment 23 Valery Inozemtsev 2020-08-10 19:47:46 MSK
http://git.altlinux.org/tasks/256127/build/100/armh/log
Comment 24 Dmitry V. Levin 2020-08-10 19:49:26 MSK
(In reply to Valery Inozemtsev from comment #22)
> [00:09:11] LLVM ERROR: out of memory
> [00:09:11] Stack dump:
> [00:09:11] 0.	Running pass 'CallGraph Pass Manager' on module
> 'tools/clang/lib/Serialization/CMakeFiles/obj.clangSerialization.dir/
> ASTWriter.cpp.o'.
> [00:09:11] 1.	Running pass 'Memory SSA' on function
> '@_ZN5clang15ASTRecordWriter7AddAttrEPKNS_4AttrE'
> [00:09:11] clang-9: error: unable to execute command: Aborted
> [00:09:11] clang-9: error: linker command failed due to signal (use -v to
> see invocation)
> [00:09:11] ninja: build stopped: subcommand failed.
> 
> Предлагайте решение проблемы. У меня его нет

Поскольку "LLVM ERROR: out of memory" - это не cgroup memory limit, у меня тоже нет.
Comment 25 AEN 2020-08-10 19:52:04 MSK
А как fedora собирает?
Comment 26 Dmitry V. Levin 2020-08-10 19:55:56 MSK
(In reply to AEN from comment #25)
> А как fedora собирает?

Федора в конце января перешла с llvm9 на llvm10.
Comment 27 Valery Inozemtsev 2020-08-10 19:59:42 MSK
в rawhide llvm9.0 есть от 2020-02-26 и на сколько он собирающийся нам не известно
Comment 28 AEN 2020-08-10 20:02:27 MSK
Потому и нам надо переходить, разве нет?
Comment 29 Sergey Bolshakov 2020-08-10 20:05:46 MSK
несколько дней назад llvm9.0-9.0.1-alt3.src.rpm был успешно пересобран без изменений на старой сборочнице. Не нужно далеко ходить, чтобы выяснить разницу.
Comment 31 Sergey Bolshakov 2020-08-10 20:07:21 MSK
(In reply to Sergey Bolshakov from comment #29)
> несколько дней назад llvm9.0-9.0.1-alt3.src.rpm был успешно пересобран без
> изменений на старой сборочнице. Не нужно далеко ходить, чтобы выяснить
> разницу.

И кстати говоря, Дмитрию об этом прекрасно известно, удивительно, что этот факт тут не упомянут.
Comment 32 Dmitry V. Levin 2020-08-10 20:11:19 MSK
(In reply to Sergey Bolshakov from comment #31)
> (In reply to Sergey Bolshakov from comment #29)
> > несколько дней назад llvm9.0-9.0.1-alt3.src.rpm был успешно пересобран без
> > изменений на старой сборочнице. Не нужно далеко ходить, чтобы выяснить
> > разницу.
> 
> И кстати говоря, Дмитрию об этом прекрасно известно, удивительно, что этот
> факт тут не упомянут.

Доказательств этому факту не представлено, так что я его за факт не считаю.  В любом случае у меня нет идей, что там у вас на armh не так.
Comment 33 Sergey Bolshakov 2020-08-10 20:15:32 MSK
(In reply to Dmitry V. Levin from comment #32)
> (In reply to Sergey Bolshakov from comment #31)
> > (In reply to Sergey Bolshakov from comment #29)
> > > несколько дней назад llvm9.0-9.0.1-alt3.src.rpm был успешно пересобран без
> > > изменений на старой сборочнице. Не нужно далеко ходить, чтобы выяснить
> > > разницу.
> > 
> > И кстати говоря, Дмитрию об этом прекрасно известно, удивительно, что этот
> > факт тут не упомянут.
> 
> Доказательств этому факту не представлено, так что я его за факт не считаю. 
> В любом случае у меня нет идей, что там у вас на armh не так.

Ох. "какие ваши доказательства"
штош, кокаинум:
https://lioka.obninsk.ru/llvm9.0-9.0.1-alt3.src.rpm.log
Comment 34 Valery Inozemtsev 2020-08-10 20:16:09 MSK
вот и поговорили... я вижу единственный вариант - удалить llvm9.0 за ненадобностью. баги развесить на те 9-ть пакетов которые его хотя
Comment 35 Valery Inozemtsev 2020-08-10 20:16:55 MSK
хотя = хотят
Comment 36 AEN 2020-08-10 20:19:44 MSK
Развесьте, пожалуйста. Меня в сс:
Но с разницей между старой и новой сборочницей тоже хорошо бы разобраться.
Comment 37 Dmitry V. Levin 2020-08-10 20:25:00 MSK
(In reply to AEN from comment #36)
> Но с разницей между старой и новой сборочницей тоже хорошо бы разобраться.

Да.  Я уже потратил на это больше времени, чем планировал, у меня не получилось, но я надеюсь, что Сергей справится.
Comment 39 AEN 2020-08-10 20:42:45 MSK
Это хорошо. Но полагаю, что Вы тоже не хотите возвращать armh на старую сборочницу. :) 
Потому надо разбираться. 
Кстати, та же проблема с памятью на сборочнице mipsel, хоть она и отдельная.
Comment 40 Dmitry V. Levin 2020-08-10 21:46:59 MSK
(In reply to AEN from comment #39)
> Кстати, та же проблема с памятью на сборочнице mipsel, хоть она и отдельная.

Проблема нехватки 32-битного адресного пространства обычно проявляется и на x86.
Comment 41 AEN 2020-08-10 21:59:12 MSK
(Ответ для Dmitry V. Levin на комментарий #40)
> (In reply to AEN from comment #39)
> > Кстати, та же проблема с памятью на сборочнице mipsel, хоть она и отдельная.
> 
> Проблема нехватки 32-битного адресного пространства обычно проявляется и на
> x86.
Кто бы мог подумать. :)
Но там она решается.
Comment 42 Dmitry V. Levin 2020-08-10 22:04:16 MSK
(In reply to Dmitry V. Levin from comment #37)
> (In reply to AEN from comment #36)
> > Но с разницей между старой и новой сборочницей тоже хорошо бы разобраться.
> 
> Да.  Я уже потратил на это больше времени, чем планировал, у меня не
> получилось, но я надеюсь, что Сергей справится.

На всякий случай привожу статистику потребления памяти, собранную в середине прошлой недели:

1. $(nproc) == 64:
$ cat /sys/fs/cgroup/memory/user/bee/$USER/memory.{max_usage_in_bytes,limit_in_bytes}
15928725504
33285996544

1. $(nproc) == 32:
$ cat /sys/fs/cgroup/memory/user/bee/$USER/memory.{max_usage_in_bytes,limit_in_bytes}
9813012480
33285996544

3. $(nproc) == 16:
$ cat /sys/fs/cgroup/memory/user/bee/$USER/memory.{max_usage_in_bytes,limit_in_bytes}
6542618624
33285996544

Во всех случаях сборка падала в одном и том же месте (см. ссылки в первом посте):
[3622/3716] : && /usr/bin/clang++ -fPIC -pipe -frecord-gcc-switches -Wall -g0 -O2 -fomit-frame-pointer -march=armv7-a -mthumb -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -std=c++11 -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion -fdiagnostics-color -ffunction-sections -fdata-sections -flto=thin -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O2 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete -fuse-ld=lld -Wl,--color-diagnostics -Wl,--thinlto-cache-dir=/usr/src/RPM/BUILD/llvm-9.0.1.src/BUILD/lto.cache   -Wl,-O3 -Wl,--gc-sections -shared -Wl,-soname,libclang-cpp.so.9 -o lib/libclang-cpp.so.9 ...
[armh] FAILED: lib/libclang-cpp.so.9
Comment 43 Dmitry V. Levin 2020-08-10 22:05:12 MSK
(In reply to AEN from comment #41)
> (Ответ для Dmitry V. Levin на комментарий #40)
> > (In reply to AEN from comment #39)
> > > Кстати, та же проблема с памятью на сборочнице mipsel, хоть она и отдельная.
> > 
> > Проблема нехватки 32-битного адресного пространства обычно проявляется и на
> > x86.
> Кто бы мог подумать. :)
> Но там она решается.

Откуда вы знаете?  Может быть, она там не проявляется? :)
Comment 44 Alexey Gladkov 2020-08-10 22:14:58 MSK
(Ответ для Dmitry V. Levin на комментарий #42)
> 
> Во всех случаях сборка падала в одном и том же месте (см. ссылки в первом
> посте):
> [3622/3716] : && /usr/bin/clang++ -fPIC -pipe -frecord-gcc-switches -Wall
> -g0 -O2 -fomit-frame-pointer -march=armv7-a -mthumb -fPIC
> -fvisibility-inlines-hidden -Werror=date-time
> -Werror=unguarded-availability-new -std=c++11 -Wall -Wextra
> -Wno-unused-parameter -Wwrite-strings -Wcast-qual
> -Wmissing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough
> -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor
> -Wdelete-non-virtual-dtor -Wstring-conversion -fdiagnostics-color
> -ffunction-sections -fdata-sections -flto=thin -fno-common
> -Woverloaded-virtual -Wno-nested-anon-types -O2 -DNDEBUG  -Wl,-z,defs
> -Wl,-z,nodelete -fuse-ld=lld -Wl,--color-diagnostics
> -Wl,--thinlto-cache-dir=/usr/src/RPM/BUILD/llvm-9.0.1.src/BUILD/lto.cache  
> -Wl,-O3 -Wl,--gc-sections -shared -Wl,-soname,libclang-cpp.so.9 -o
> lib/libclang-cpp.so.9 ...
> [armh] FAILED: lib/libclang-cpp.so.9

-flto=thin на 32-ной архитектуре ?! :)
Comment 45 Dmitry V. Levin 2020-08-11 00:46:59 MSK
(In reply to Valery Inozemtsev from comment #34)
> вот и поговорили... я вижу единственный вариант - удалить llvm9.0 за
> ненадобностью. баги развесить на те 9-ть пакетов которые его хотя

bpftrace пересобрал мантейнер,
bcc исправил мантейнер,
castxml исправил мантейнер,
все остальные, кроме ghc8.6.4, я отправил на пересборку с llvm10.

Таким образом, остаётся один ghc8.6.4, в котором написана вот такая ересь:
# llvm needs for unregisterised architectures
%ifarch armh
%define llvm_version 9.0
%else
%define llvm_version 7.0
%endif
...
%ifarch armh aarch64
BuildRequires: llvm%llvm_version
Requires: llvm%llvm_version
%endif

Избавьте нас от неё, пожалуйста, и llvm9 можно будет отправить на покой,
так и не узнав, почему он не пересобирается на armh.
Comment 46 AEN 2020-08-11 00:55:00 MSK
Добавил мейнтейнера