Bug 33879

Summary: Препятствует обновлению
Product: Sisyphus Reporter: Vitaly Lipatov <lav>
Component: llvm4.0Assignee: Konstantin A Lepikhov (L.A. Kostis) <lakostis>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: minor    
Priority: P3 CC: mike
Version: unstable   
Hardware: all   
OS: Linux   

Description Vitaly Lipatov 2017-09-12 10:58:22 MSK
При обновлении предлагает вынести все Иксы:
Следующие пакеты будут УДАЛЕНЫ:
  antico dwm gdal gnome-session libaudit-devel libclutter-devel libcogl-devel libdrm-devel libgdal libgdal-devel numlockx tigervnc xfce4-default xfce4-full
  xfce4-minimal xfce4-session xfce4-session-engines xfce4-settings xinit xinitrc xorg-dri-swrast xorg-drv-evdev xorg-drv-fbdev xorg-drv-vesa xorg-sdk
  xorg-server xorg-utils xorg-xdmx xorg-xephyr xorg-xnest xorg-xvfb xpra xvfb-run
Помогает персональное обновление xorg-dri-swrast:
Следующие пакеты будут ОБНОВЛЕНЫ:
  glxgears glxinfo libEGL libEGL-debuginfo libEGL-devel libGL libGL-debuginfo libGL-devel libGLES libgbm libgbm-debuginfo libgbm-devel libwayland-egl
  libwayland-egl-devel xorg-dri-swrast
Следующие пакеты будут УДАЛЕНЫ:
  clang llvm
Следующие НОВЫЕ пакеты будут установлены:
  llvm4.0-libs

Поскольку llvm всё равно теперь не уживается с llvm4.0, может быть сделать их переход один в другой более гладким?
Comment 1 Konstantin A Lepikhov (L.A. Kostis) 2017-09-12 11:19:33 MSK
(In reply to comment #0)
> При обновлении предлагает вынести все Иксы:
> Следующие пакеты будут УДАЛЕНЫ:
>   antico dwm gdal gnome-session libaudit-devel libclutter-devel libcogl-devel
> libdrm-devel libgdal libgdal-devel numlockx tigervnc xfce4-default xfce4-full
>   xfce4-minimal xfce4-session xfce4-session-engines xfce4-settings xinit
> xinitrc xorg-dri-swrast xorg-drv-evdev xorg-drv-fbdev xorg-drv-vesa xorg-sdk
>   xorg-server xorg-utils xorg-xdmx xorg-xephyr xorg-xnest xorg-xvfb xpra
> xvfb-run
> Помогает персональное обновление xorg-dri-swrast:
> Следующие пакеты будут ОБНОВЛЕНЫ:
>   glxgears glxinfo libEGL libEGL-debuginfo libEGL-devel libGL libGL-debuginfo
> libGL-devel libGLES libgbm libgbm-debuginfo libgbm-devel libwayland-egl
>   libwayland-egl-devel xorg-dri-swrast
> Следующие пакеты будут УДАЛЕНЫ:
>   clang llvm
> Следующие НОВЫЕ пакеты будут установлены:
>   llvm4.0-libs
> 
> Поскольку llvm всё равно теперь не уживается с llvm4.0, может быть сделать их
> переход один в другой более гладким?

Мне кажется, это вообще не проблемы llvm, а сборки Mesa в Сизифе. Зачем ей требуется llvm, если при сборке указывается --enable-llvm-shared-libs=no и BuildRequires: llvm4.0-devel llvm4.0-devel-static?
Comment 2 Vitaly Lipatov 2017-09-12 17:21:02 MSK
(В ответ на комментарий №1)
...
> Мне кажется, это вообще не проблемы llvm, а сборки Mesa в Сизифе. Зачем ей
> требуется llvm, если при сборке указывается --enable-llvm-shared-libs=no и
> BuildRequires: llvm4.0-devel llvm4.0-devel-static?
Тоже верно, перевешиваю на xorg-dri-swrast
Comment 3 Valery Inozemtsev 2017-09-13 12:10:20 MSK
--enable-llvm-shared-libs=no осталось с mesa 17.1 и с llvm 4.0 не работает

[builder@localhost .in]$ llvm-config --version
3.8.0
[builder@localhost .in]$ llvm-config --libs
-lLLVMLTO -lLLVMObjCARCOpts -lLLVMMIRParser -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMTableGen -lLLVMOrcJIT -lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMAArch64Disassembler -lLLVMAArch64CodeGen -lLLVMAArch64AsmParser -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMAArch64Utils -lLLVMCppBackendCodeGen -lLLVMCppBackendInfo -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter -lLLVMAMDGPUCodeGen -lLLVMAMDGPUAsmParser -lLLVMAMDGPUDesc -lLLVMAMDGPUUtils -lLLVMAMDGPUInfo -lLLVMAMDGPUAsmPrinter -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMLibDriver -lLLVMOption -lLLVMLineEditor -lLLVMPasses -lLLVMipo -lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMDebugInfoCodeView -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMInstrumentation -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMTransformUtils -lLLVMMC -lLLVMBitWriter -lLLVMBitReader -lLLVMAnalysis -lLLVMCore -lLLVMSupport

[builder@localhost .in]$ llvm-config --version
4.0.0
[builder@localhost .in]$ llvm-config --libs
-lLLVM-4.0

Можно было бы добавить --link-shared, если бы не
/usr/lib64/libLLVMSupport.a(Process.cpp.o): In function `terminalHasColors':
/usr/src/RPM/BUILD/llvm-4.0.0/lib/Support/Unix/Process.inc:350: undefined reference to `setupterm'
/usr/src/RPM/BUILD/llvm-4.0.0/lib/Support/Unix/Process.inc:368: undefined reference to `tigetnum'
/usr/src/RPM/BUILD/llvm-4.0.0/lib/Support/Unix/Process.inc:372: undefined reference to `set_curterm'
/usr/src/RPM/BUILD/llvm-4.0.0/lib/Support/Unix/Process.inc:373: undefined reference to `del_curterm'
collect2: error: ld returned 1 exit status

а теперь внимание вопрос
[builder@localhost .in]$ rpmquery -l llvm4.0-libs
/usr/lib64/LLVMgold.so
/usr/lib64/libLLVM-4.0.0.so
/usr/lib64/libLLVM-4.0.so
/usr/lib64/libLTO.so.4
/usr/lib64/libLTO.so.4.0.0
[builder@localhost .in]$ rpmquery --conflicts llvm4.0-libs
llvm <= 3.8.0

нахрена, если llvm4.0-libs и llvm по файлам не пересекаются?
Comment 4 Konstantin A Lepikhov (L.A. Kostis) 2017-09-13 14:30:45 MSK
(In reply to comment #3)
> --enable-llvm-shared-libs=no осталось с mesa 17.1 и с llvm 4.0 не работает
Эта опция работает как надо (хотя зачем mesa у нас собирается со статическим llvm неизвестно):

$ llvm-config --link-static --system-libs
-lrt -ldl -ltinfo -lpthread -lz -lm

Поддержка llvm4 была добавлена в код Mesa еще в 2016 году:

commit b107169eef92e740180df468d1eae4cc61a52757
...

    configure: add support for LLVM 4.0.0svn static libs

> 
> [builder@localhost .in]$ llvm-config --version
> 3.8.0
> [builder@localhost .in]$ llvm-config --libs
> -lLLVMLTO -lLLVMObjCARCOpts -lLLVMMIRParser -lLLVMSymbolize -lLLVMDebugInfoPDB
> -lLLVMDebugInfoDWARF -lLLVMTableGen -lLLVMOrcJIT -lLLVMARMDisassembler
> -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo
> -lLLVMARMAsmPrinter -lLLVMAArch64Disassembler -lLLVMAArch64CodeGen
> -lLLVMAArch64AsmParser -lLLVMAArch64Desc -lLLVMAArch64Info
> -lLLVMAArch64AsmPrinter -lLLVMAArch64Utils -lLLVMCppBackendCodeGen
> -lLLVMCppBackendInfo -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo
> -lLLVMNVPTXAsmPrinter -lLLVMAMDGPUCodeGen -lLLVMAMDGPUAsmParser
> -lLLVMAMDGPUDesc -lLLVMAMDGPUUtils -lLLVMAMDGPUInfo -lLLVMAMDGPUAsmPrinter
> -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG
> -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info
> -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMLibDriver -lLLVMOption
> -lLLVMLineEditor -lLLVMPasses -lLLVMipo -lLLVMVectorize -lLLVMLinker
> -lLLVMIRReader -lLLVMAsmParser -lLLVMDebugInfoCodeView -lLLVMInterpreter
> -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget
> -lLLVMScalarOpts -lLLVMInstCombine -lLLVMInstrumentation -lLLVMProfileData
> -lLLVMObject -lLLVMMCParser -lLLVMTransformUtils -lLLVMMC -lLLVMBitWriter
> -lLLVMBitReader -lLLVMAnalysis -lLLVMCore -lLLVMSupport
> 
> [builder@localhost .in]$ llvm-config --version
> 4.0.0
> [builder@localhost .in]$ llvm-config --libs
> -lLLVM-4.0
Потому что (сюрприз!) все эти либы находятся внутри LLVM-4.0.

> 
> Можно было бы добавить --link-shared, если бы не
> /usr/lib64/libLLVMSupport.a(Process.cpp.o): In function `terminalHasColors':
> /usr/src/RPM/BUILD/llvm-4.0.0/lib/Support/Unix/Process.inc:350: undefined
> reference to `setupterm'
> /usr/src/RPM/BUILD/llvm-4.0.0/lib/Support/Unix/Process.inc:368: undefined
> reference to `tigetnum'
> /usr/src/RPM/BUILD/llvm-4.0.0/lib/Support/Unix/Process.inc:372: undefined
> reference to `set_curterm'
> /usr/src/RPM/BUILD/llvm-4.0.0/lib/Support/Unix/Process.inc:373: undefined
> reference to `del_curterm'
> collect2: error: ld returned 1 exit status
Ничего не понятно. Приведет вывод для static а говорим о shared. К чему это?

> 
> а теперь внимание вопрос
> [builder@localhost .in]$ rpmquery -l llvm4.0-libs
> /usr/lib64/LLVMgold.so
> /usr/lib64/libLLVM-4.0.0.so
> /usr/lib64/libLLVM-4.0.so
> /usr/lib64/libLTO.so.4
> /usr/lib64/libLTO.so.4.0.0
> [builder@localhost .in]$ rpmquery --conflicts llvm4.0-libs
> llvm <= 3.8.0
> 
> нахрена, если llvm4.0-libs и llvm по файлам не пересекаются?
Потому что в момент сборки llvm4.0 была потребность максимально его изолировать от системного llvm. Более того, в какой-то момент libLLVM-4.0 просто назывался libLLVM.so и действительно конфликтовал.
Comment 5 Valery Inozemtsev 2017-09-13 14:58:25 MSK
(В ответ на комментарий №4)
...
> хотя зачем mesa у нас собирается со статическим
> llvm неизвестно

что бы вот таких вот проблем не возникало
...

> Ничего не понятно. Приведет вывод для static а говорим о shared. К чему это?
--link-static имелось ввиду

> 
> > 
> > а теперь внимание вопрос
> > [builder@localhost .in]$ rpmquery -l llvm4.0-libs
> > /usr/lib64/LLVMgold.so
> > /usr/lib64/libLLVM-4.0.0.so
> > /usr/lib64/libLLVM-4.0.so
> > /usr/lib64/libLTO.so.4
> > /usr/lib64/libLTO.so.4.0.0
> > [builder@localhost .in]$ rpmquery --conflicts llvm4.0-libs
> > llvm <= 3.8.0
> > 
> > нахрена, если llvm4.0-libs и llvm по файлам не пересекаются?
> Потому что в момент сборки llvm4.0 была потребность максимально его изолировать
> от системного llvm. Более того, в какой-то момент libLLVM-4.0 просто назывался
> libLLVM.so и действительно конфликтовал.

ну так исправь уже llvm4.0-libs, иначе зачем вообще нужны эти либы
Comment 6 Konstantin A Lepikhov (L.A. Kostis) 2017-09-14 15:30:28 MSK
(In reply to comment #5)
> (В ответ на комментарий №4)
> ...
> > хотя зачем mesa у нас собирается со статическим
> > llvm неизвестно
> 
> что бы вот таких вот проблем не возникало
> ...
Каких проблем? Проблемы созданы на ровном месте - статическая линковка вместо динамической, из-за этого swrast таскает с собой жирный кусок функционала, который не нужен. Решение проблемы - убрать _один_ флаг из configure и _один_ пакет из BR.

> 
> ну так исправь уже llvm4.0-libs, иначе зачем вообще нужны эти либы
Даже если я и исправлю, это никак не отразится на сборке Mesa.

2lav: И все-таки, я не понимаю, как обновление xorg-dri-swrast решает проблему - и почему вообще clang и llvm тут каким-то боком. Либо кто-то из этого списка их требует явно или неявно:

 antico dwm gdal gnome-session libaudit-devel libclutter-devel libcogl-devel
libdrm-devel libgdal libgdal-devel numlockx tigervnc xfce4-default xfce4-full
  xfce4-minimal xfce4-session xfce4-session-engines xfce4-settings xinit
xinitrc xorg-dri-swrast xorg-drv-evdev xorg-drv-fbdev xorg-drv-vesa xorg-sdk
  xorg-server xorg-utils xorg-xdmx xorg-xephyr xorg-xnest xorg-xvfb xpra
xvfb-run
Comment 7 Vitaly Lipatov 2017-09-14 17:32:57 MSK
(В ответ на комментарий №6)
...
> 
> 2lav: И все-таки, я не понимаю, как обновление xorg-dri-swrast решает проблему
> - и почему вообще clang и llvm тут каким-то боком. Либо кто-то из этого списка
> их требует явно или неявно:
Не знаю, я не вдавался. Ясно только, что список к удалению — это следствие удаления swrast.
Например, есть такая цепочка зависимостей:
antico -> xinitrc -> xorg-server -> xorg-dri-swrast
 
>  antico dwm gdal gnome-session libaudit-devel libclutter-devel libcogl-devel
> libdrm-devel libgdal libgdal-devel numlockx tigervnc xfce4-default xfce4-full
>   xfce4-minimal xfce4-session xfce4-session-engines xfce4-settings xinit
> xinitrc xorg-dri-swrast xorg-drv-evdev xorg-drv-fbdev xorg-drv-vesa xorg-sdk
>   xorg-server xorg-utils xorg-xdmx xorg-xephyr xorg-xnest xorg-xvfb xpra
> xvfb-run
Comment 8 Repository Robot 2017-09-14 21:11:18 MSK
llvm4.0-4.0.1-alt1.1.rel -> sisyphus:

Thu Sep 14 2017 L.A. Kostis <lakostis@altlinux.ru> 4.0.1-alt1.1.rel
- remove conflicts: llvm from -libs pkg (closes #33879).

Sun Sep 10 2017 Evgeny Sinelnikov <sin@altlinux.ru> 4.0.1-alt1.rel
- Updated 4.0.0 release and build configuration:
  + Enabled AVR experimental target.