#16697 closed enhancement (fixed)

Use clang and llvm toolchain for firefox and related packages

Reported by: ken@… Owned by: ken@…
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)

comment:1 by ken@…, 22 months ago

SeaMonkey updated at g532e5c9717fe pending review of whether the tools after CXX still need to be specified.

comment:2 by Xi Ruoyao, 22 months 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?

comment:3 by Bruce Dubbs, 22 months 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.

in reply to:  1 comment:4 by ken@…, 22 months 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

in reply to:  2 comment:5 by ken@…, 22 months 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.

in reply to:  3 comment:6 by ken@…, 22 months 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 ken@…, 22 months 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:8 by ken@…, 22 months ago

JS-91.11.0 done in ge603046023f10

comment:9 by ken@…, 22 months ago

Firefox updated in ge51466aa926b

Still waiting for thunderbird to be released

comment:10 by ken@…, 22 months ago

Resolution: fixed
Status: assignedclosed

Thunderbird updated in g45d03f93b78b

Note: See TracTickets for help on using tickets.