Bug 34681

Summary: New version
Product: Sisyphus Reporter: Alexey Gladkov <legion>
Component: rustAssignee: Alexey Gladkov <legion>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: major    
Priority: P3 CC: crux, lakostis, legion, rauty
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on: 34685    
Bug Blocks:    

Description Alexey Gladkov 2018-03-21 12:51:28 MSK
Для сборки firefox требуется rust версии не ниже 1.22.1
Пожалуйста обновите пакет.
Comment 1 Vladimir Lettiev 2018-03-23 09:46:39 MSK
Что-то я прохлопал ушами и долго не обновлял rust. Обновление там происходит строго по релизам, т.е. чтобы обновить до 1.24.1 надо последовательно собрать 1.22.1, 1.23.0, 1.24.1.

Есть проблема со сборкой предыдущих версий rust с llvm 6, поддержка которого появилась только в последней версии. А devel-пакет из llvm4.0 на днях выпилили и собраться с ним не получится. Может вернуть на время devel-пакет в llvm4.0, чтобы обновить rust?
Comment 2 Alexey Gladkov 2018-03-23 11:10:32 MSK
(В ответ на комментарий №1)
> Что-то я прохлопал ушами и долго не обновлял rust. Обновление там происходит
> строго по релизам, т.е. чтобы обновить до 1.24.1 надо последовательно собрать
> 1.22.1, 1.23.0, 1.24.1.
> 
> Есть проблема со сборкой предыдущих версий rust с llvm 6, поддержка которого
> появилась только в последней версии. А devel-пакет из llvm4.0 на днях выпилили
> и собраться с ним не получится. Может вернуть на время devel-пакет в llvm4.0,
> чтобы обновить rust?

а собрать сразу 1.24.1 нельзя ? у вас же там есть статическая сброка rust.
Comment 3 Vladimir Lettiev 2018-03-23 11:30:10 MSK
(In reply to comment #2)
> 
> а собрать сразу 1.24.1 нельзя ? у вас же там есть статическая сброка rust.

Да, можно попробовать снова забутстрапиться с готовыми бинарями раста. Girar всё стерпит ))
Comment 4 Alexey Gladkov 2018-03-23 12:04:51 MSK
Меня пугает ваша схема сборки иначе бы уже давно попросился в мантейнеры. Сейчас firefox всё больше завязывается на rust и я слежу за ним в силу этого.
Comment 5 Vladimir Lettiev 2018-03-23 16:42:29 MSK
Не получилось. Получаю ошибку при сборке компонента rustc_llvm:

running: "c++" "-O2" "-ffunction-sections" "-fdata-sections" "-fPIC" "-ffunction-sections"
"-fdata-sections" "-fPIC" "-m64" "-m64" "-I/usr/include" "-pipe" "-Wall" "-g1" "-O2" "-fPIC"
"-fvisibility-inlines-hidden" "-Werror=date-time" "-Werror=unguarded-availability-new"
"-std=c++11" "-Wall" "-W" "-Wno-unused-parameter" "-Wwrite-strings" "-Wcast-qual" 
"-Wmissing-field-initializers" "-pedantic" "-Wno-long-long" "-Wcovered-switch-default"
"-Wnon-virtual-dtor" "-Wdelete-non-virtual-dtor" "-Wstring-conversion" "-fcolor-diagnostics"
"-ffunction-sections" "-fdata-sections" "-flto=thin" "-O2" "-DNDEBUG" "-fno-exceptions"
"-D_GNU_SOURCE" "-D__STDC_CONSTANT_MACROS" "-D__STDC_FORMAT_MACROS" "-D__STDC_LIMIT_MACROS"
"-DLLVM_COMPONENT_ASMPARSER" "-DLLVM_COMPONENT_BITREADER" "-DLLVM_COMPONENT_BITWRITER"
"-DLLVM_COMPONENT_INSTRUMENTATION" "-DLLVM_COMPONENT_INTERPRETER" "-DLLVM_COMPONENT_IPO"
"-DLLVM_COMPONENT_LINKER" "-DLLVM_COMPONENT_LTO" "-DLLVM_COMPONENT_MCJIT"
"-DLLVM_COMPONENT_X86" "-o" "/usr/src/RPM/BUILD/rustc-1.24.1-src/build/x86_64-unknown-linux-
gnu/stage0-rustc/x86_64-unknown-linux-gnu/release/build/rustc_llvm-3c42b7191805fc83/out/../r
ustllvm/PassWrapper.o" "-c" "../rustllvm/PassWrapper.cpp"
cargo:warning=x86_64-alt-linux-g++: error: unrecognized command line option
'-Wcovered-switch-default'; did you mean '-Wno-switch-default'?
cargo:warning=x86_64-alt-linux-g++: error: unrecognized command line option
'-Wstring-conversion'; did you mean '-Wint-conversion'?
cargo:warning=x86_64-alt-linux-g++: error: unrecognized command line option
'-fcolor-diagnostics'
exit code: 1

Как я понимаю, такие левые флаги он получает от llvm-config
Comment 6 Alexey Gladkov 2018-03-23 17:02:33 MSK
Пока непонятно, что с этим делать: https://bugzilla.altlinux.org/34685
Сейчас рабочий сценарий это фильтрация в приложениии или использование lld.

Мозилльные флаги:

MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS \
 -fuse-ld=lld -flto=thin \
 -Wl,--thinlto-jobs=4 -Wl,--thinlto-cache-dir=thinlto-cache -Wl,--thinlto-cache-policy,cache_size=10%% -Wl,--lto-O0"
Comment 7 Vladimir Lettiev 2018-03-24 13:08:24 MSK
(In reply to comment #6)
> Пока непонятно, что с этим делать: https://bugzilla.altlinux.org/34685
> Сейчас рабочий сценарий это фильтрация в приложениии или использование lld.

фильтрация не помогла, всё-таки в 1.24.1 поддержки llvm 6.0 нет, хотя в основной ветке уже были необходимые коммиты. Придётся собирать статически с забандленным llvm.
Comment 8 Konstantin A Lepikhov (L.A. Kostis) 2018-03-25 00:19:19 MSK
(In reply to comment #7)
> (In reply to comment #6)
> > Пока непонятно, что с этим делать: https://bugzilla.altlinux.org/34685
> > Сейчас рабочий сценарий это фильтрация в приложениии или использование lld.
> 
> фильтрация не помогла, всё-таки в 1.24.1 поддержки llvm 6.0 нет, хотя в
> основной ветке уже были необходимые коммиты. Придётся собирать статически с
> забандленным llvm.

А можно поподробнее, что именно не сработало? Если флаги убраны, которые мешали gcc, то все должно собраться, иначе это скорее проблема gcc, а не llvm )
Comment 9 Vladimir Lettiev 2018-03-25 10:21:46 MSK
(In reply to comment #8)
> (In reply to comment #7)
> > (In reply to comment #6)
> > > Пока непонятно, что с этим делать: https://bugzilla.altlinux.org/34685
> > > Сейчас рабочий сценарий это фильтрация в приложениии или использование lld.
> > 
> > фильтрация не помогла, всё-таки в 1.24.1 поддержки llvm 6.0 нет, хотя в
> > основной ветке уже были необходимые коммиты. Придётся собирать статически с
> > забандленным llvm.
> 
> А можно поподробнее, что именно не сработало? Если флаги убраны, которые мешали
> gcc, то все должно собраться, иначе это скорее проблема gcc, а не llvm )

Там проблема не в gcc, а именно в поддержке изменений в llvm 6:

cargo:warning=../rustllvm/PassWrapper.cpp:26:10: fatal error: llvm/Target/TargetSubtargetInfo.h: No such file or directory
cargo:warning= #include "llvm/Target/TargetSubtargetInfo.h"
cargo:warning=          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cargo:warning=compilation terminated.

Если пофиксить путь к инклюду, дальше сборка падает на отсутствующее значение enum'а:

cargo:warning=../rustllvm/PassWrapper.cpp: In function 'llvm::CodeModel::Model fromRust(LLVMRustCodeModel)':
cargo:warning=../rustllvm/PassWrapper.cpp:224:23: error: 'Default' is not a member of 'llvm::CodeModel'
cargo:warning=     return CodeModel::Default;

Т.е. там должен быть пофикшен вызывающий код в соответствии с изменениями API. В принципе, патч есть, надо только проверить можно ли его использовать, на кодовой базе 1.24.1. Если нет, то ждать новую версию rust или собирать статически. Все варианты надо проверить.
Comment 10 Vladimir Lettiev 2018-03-26 14:35:05 MSK
Собран rust-1.24.1 с забандленным llvm. Теперь вместо монстроузного набора git-репозиториев простенький srpm с двумя переключателями в спеке: для бутстрапа и для забандленного llvm. Проще не бывает, со-майнтейнеры приветствуются.
Comment 11 Alexey Gladkov 2018-03-26 16:40:14 MSK
(В ответ на комментарий №10)
> Собран rust-1.24.1 с забандленным llvm. Теперь вместо монстроузного набора
> git-репозиториев простенький srpm с двумя переключателями в спеке: для
> бутстрапа и для забандленного llvm. Проще не бывает, со-майнтейнеры
> приветствуются.

Спасибо! А можно ещё и cargo обновить или лучше отдельной багой ?
Comment 12 Vladimir Lettiev 2018-03-26 17:10:31 MSK
(In reply to comment #11)
> (В ответ на комментарий №10)
> > Собран rust-1.24.1 с забандленным llvm. Теперь вместо монстроузного набора
> > git-репозиториев простенький srpm с двумя переключателями в спеке: для
> > бутстрапа и для забандленного llvm. Проще не бывает, со-майнтейнеры
> > приветствуются.
> 
> Спасибо! А можно ещё и cargo обновить или лучше отдельной багой ?

Cargo как раз в процессе отправки