Summary: | New version | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Alexey Gladkov <legion> |
Component: | rust | Assignee: | 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
Что-то я прохлопал ушами и долго не обновлял rust. Обновление там происходит строго по релизам, т.е. чтобы обновить до 1.24.1 надо последовательно собрать 1.22.1, 1.23.0, 1.24.1. Есть проблема со сборкой предыдущих версий rust с llvm 6, поддержка которого появилась только в последней версии. А devel-пакет из llvm4.0 на днях выпилили и собраться с ним не получится. Может вернуть на время devel-пакет в llvm4.0, чтобы обновить rust? (В ответ на комментарий №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.
(In reply to comment #2) > > а собрать сразу 1.24.1 нельзя ? у вас же там есть статическая сброка rust. Да, можно попробовать снова забутстрапиться с готовыми бинарями раста. Girar всё стерпит )) Меня пугает ваша схема сборки иначе бы уже давно попросился в мантейнеры. Сейчас firefox всё больше завязывается на rust и я слежу за ним в силу этого. Не получилось. Получаю ошибку при сборке компонента 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 Пока непонятно, что с этим делать: 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" (In reply to comment #6) > Пока непонятно, что с этим делать: https://bugzilla.altlinux.org/34685 > Сейчас рабочий сценарий это фильтрация в приложениии или использование lld. фильтрация не помогла, всё-таки в 1.24.1 поддержки llvm 6.0 нет, хотя в основной ветке уже были необходимые коммиты. Придётся собирать статически с забандленным llvm. (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 ) (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 или собирать статически. Все варианты надо проверить. Собран rust-1.24.1 с забандленным llvm. Теперь вместо монстроузного набора git-репозиториев простенький srpm с двумя переключателями в спеке: для бутстрапа и для забандленного llvm. Проще не бывает, со-майнтейнеры приветствуются. (В ответ на комментарий №10) > Собран rust-1.24.1 с забандленным llvm. Теперь вместо монстроузного набора > git-репозиториев простенький srpm с двумя переключателями в спеке: для > бутстрапа и для забандленного llvm. Проще не бывает, со-майнтейнеры > приветствуются. Спасибо! А можно ещё и cargo обновить или лучше отдельной багой ? (In reply to comment #11) > (В ответ на комментарий №10) > > Собран rust-1.24.1 с забандленным llvm. Теперь вместо монстроузного набора > > git-репозиториев простенький srpm с двумя переключателями в спеке: для > > бутстрапа и для забандленного llvm. Проще не бывает, со-майнтейнеры > > приветствуются. > > Спасибо! А можно ещё и cargo обновить или лучше отдельной багой ? Cargo как раз в процессе отправки |