Opened 3 years ago
Closed 3 years ago
#16697 closed enhancement (fixed)
Use clang and llvm toolchain for firefox and related packages
Reported by: | Owned by: | ||
---|---|---|---|
Priority: | normal | Milestone: | 11.2 |
Component: | BOOK | Version: | git |
Severity: | normal | Keywords: | |
Cc: |
Description ¶
Much as I prefer to use gcc and g++ rather than clang and clang++, the extra warnings from gcc-12, and the time taken by the compiler searching for and reporting them, mean that the builds are now much slower with gcc, g++ - when building with 4 jobs, around 4 SBU or 5 SBU slower.
Thread with details at https://lists.linuxfromscratch.org/sympa/arc/blfs-dev/2022-06/msg00077.html
This affects all of JS91 (91.11.0 due next week), firefox (102, the new esr, due next week), thunderbird (91 due next week, 102 expected for next week but so far no release candidate) and seamonkey.
The timing of the next seamonkey release is unknown, so I'll probably change that one first unless more firefox|thunderbird changes show up. For seamonkey the whole llvm toolchain needs to be specified, for the others merely stop exporting CC and CXX.
Change History (10)
follow-up: 4 comment:1 by , 3 years ago
follow-up: 5 comment:2 by , 3 years ago
I guess I'll still use GCC for JS in my build. I don't like the idea of messing around different two compilers on my system.
And how should we classify the dependency to clang for JS? Required, recommended, or optional?
follow-up: 6 comment:3 by , 3 years ago
If we use clang in the book's instructions, then it should be recommended, otherwise optional. In this case an entry in the Command Explanations is probably appropriate.
comment:4 by , 3 years ago
Replying to ken@…:
SeaMonkey updated at g532e5c9717fe pending review of whether the tools after CXX still need to be specified.
Reviewed, only CC and CXX need to be specified. SeaMonkey updated at g3e7f3ee191a2
comment:5 by , 3 years ago
Replying to Xi Ruoyao:
I guess I'll still use GCC for JS in my build. I don't like the idea of messing around different two compilers on my system.
And how should we classify the dependency to clang for JS? Required, recommended, or optional?
For those who build firefox, the current build of 91.10 using gcc still uses cbindgen:
0:02.05 checking for the target C compiler... /usr/bin/gcc 0:02.07 checking whether the target C compiler can be used... yes 0:02.07 checking the target C compiler version... 12.1.0 0:02.09 checking the target C compiler works... yes 0:02.09 checking for the target C++ compiler... /usr/bin/g++ 0:02.10 checking whether the target C++ compiler can be used... yes 0:02.10 checking the target C++ compiler version... 12.1.0 0:02.12 checking the target C++ compiler works... yes [...] 0:03.93 checking for clang for bindgen... /usr/bin/clang++ 0:03.94 checking for libclang for bindgen... /usr/lib/libclang.so 0:03.96 checking that libclang is new enough... yes
so mixing the compilers is already happening for some of us.
comment:6 by , 3 years ago
Replying to Bruce Dubbs:
If we use clang in the book's instructions, then it should be recommended, otherwise optional. In this case an entry in the Command Explanations is probably appropriate.
For firefox, js91, thunderbird there will no longer be a command to reference (the CC, CXX exports will not show), but I intend to add an option CC=gcc CXX=g++ with an explanation that with gcc-12 this takes longer to build and is slightly larger.
For dependencies: Firefox and thunderbird explicitly require llvm which recommends clang, JS91 requires rustc which recommends llvm.
comment:7 by , 3 years ago
For seamonkey, there are three sets of oddities with llvm-14.0.5, some of which repeat many times. The first is {{{,
0:36.00 libldif60.so 0:36.12 readelf: Warning: Unrecognized form: 0x22 (repeats)
}}}
But using gcc-12.1.0 there are three different sets of readelf warnings, one of which starts
34:27.62 readelf: Warning: Bogus end-of-siblings marker detected at offset 267fca45 in .debug_info section 34:27.62 readelf: Warning: Bogus end-of-siblings marker detected at offset 267fca46 in .debug_info section 34:27.62 readelf: Warning: Bogus end-of-siblings marker detected at offset 267fca47 in .debug_info section 34:27.62 readelf: Warning: Further warnings about bogus end-of-sibling markers suppressed
In this case, I think they are reporting the same things, and gcc-12's diagnosis is clearer. If gcc-12 was not so slow, it would be better.
Anyway, for each of these the web browser fro mseamonkey seems to work ok.
comment:9 by , 3 years ago
Firefox updated in ge51466aa926b
Still waiting for thunderbird to be released
comment:10 by , 3 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Thunderbird updated in g45d03f93b78b
SeaMonkey updated at g532e5c9717fe pending review of whether the tools after CXX still need to be specified.