Время обновлять LLVM, LLVM сам себя не обновит!
В portage стабилизировали четырнадцатую версию, решил обновиться. И был крайне удивлён набором архитектур, планирующихся к установке.
LLVM_TARGETS="(AArch64) (AMDGPU) (ARM) (AVR) (BPF) (Hexagon) (Lanai) (MSP430) (Mips) (NVPTX) (PowerPC) (RISCV) (Sparc) (SystemZ) (VE*) (WebAssembly) (X86) (XCore) (-ARC) (-CSKY) (-M68k)
Рядовому пользователю из этого многообразия чаще всего нужны llvm_targets_X86
и llvm_targets_AMDGPU
либо llvm_targets_NVPTX
. А остальное никак не используется, но неплохо так увеличивает время сборки.
Флаги прописаны в package.use
, и не трогались уже очень давно. Задаём вручную, непосредственно как префикс для emerge
— ноль реакции.
Ага! Если оно так себя ведёт — идём грепать профили (/usr/portage/profiles
) на предмет наличия llvm_targets
в use.force
либо в package.use.force
. Где и находим следующее непотребство:
/usr/portage/profiles/base/package.use.force
# Michał Górny <mgorny@gentoo.org> (2021-11-04) # Enable all LLVM targets unconditionally. Unfortunately, disabling # targets tend to break reverse dependencies (e.g. Rust) and we are yet # to find a clean way of resolving that. Compared to the damage # potential, the increase of build time is a minor problem. Users who # really insist of building a smaller system can un-force the flags # at their own responsibility. >=sys-devel/clang-13.0.1_rc llvm_targets_AArch64 llvm_targets_AMDGPU >=sys-devel/clang-13.0.1_rc llvm_targets_ARM llvm_targets_AVR llvm_targets_BPF >=sys-devel/clang-13.0.1_rc llvm_targets_Hexagon llvm_targets_Lanai >=sys-devel/clang-13.0.1_rc llvm_targets_MSP430 llvm_targets_Mips >=sys-devel/clang-13.0.1_rc llvm_targets_NVPTX llvm_targets_PowerPC >=sys-devel/clang-13.0.1_rc llvm_targets_RISCV llvm_targets_Sparc >=sys-devel/clang-13.0.1_rc llvm_targets_SystemZ llvm_targets_WebAssembly >=sys-devel/clang-13.0.1_rc llvm_targets_X86 llvm_targets_XCore >=sys-devel/clang-14 llvm_targets_VE >=sys-devel/llvm-13.0.1_rc llvm_targets_AArch64 llvm_targets_AMDGPU >=sys-devel/llvm-13.0.1_rc llvm_targets_ARM llvm_targets_AVR llvm_targets_BPF >=sys-devel/llvm-13.0.1_rc llvm_targets_Hexagon llvm_targets_Lanai >=sys-devel/llvm-13.0.1_rc llvm_targets_MSP430 llvm_targets_Mips >=sys-devel/llvm-13.0.1_rc llvm_targets_NVPTX llvm_targets_PowerPC >=sys-devel/llvm-13.0.1_rc llvm_targets_RISCV llvm_targets_Sparc >=sys-devel/llvm-13.0.1_rc llvm_targets_SystemZ llvm_targets_WebAssembly >=sys-devel/llvm-13.0.1_rc llvm_targets_X86 llvm_targets_XCore >=sys-devel/llvm-14 llvm_targets_VE
Очень странное решение, честно говоря, учитывая что Rust по умолчанию тянет свою собственную LLVM. Первый раз, за всё время общения с Gentoo, приходится вообще трогать package.use.force
.
Отключается просто: (НА СВОЙ СТРАХ И РИСК!) прописываем в /etc/portage/profile/package.use.force
всё вышеупомянутое, но флаги предваряем знаком «минус».
Наслаждаемся ощущением отстреленной ноги, несобирающегося Rust (не проверял) и сократившимся временем сборки LLVM и Clang.