Large builds with poudriere

Mark Millard marklmi at yahoo.com
Fri May 21 04:58:36 UTC 2021



On 2021-May-20, at 21:10, Chris <portmaster at bsdforge.com> wrote:

> On 2021-05-20 13:47, Mark Millard wrote:
>> Chris portmaster at bsdforge.com wrote on
>> Thu May 20 20:09:29 UTC 2021 :
>>> On 2021-05-20 12:21, Kevin Oberman wrote:
>>> > . . .
>>> >>
>>> > You can greatly reduce the build-time for devel/llvm* by changing the
>>> > config to BE_NATIVE to avoid building backends for all FreeBSD supported
>>> > platforms. Obviously this is not acceptable for many cases, but if you
>>> > never cross-compile for other platforms, it's a really big win.
>>> If I understand correctly. Isn't your suggestion synonymous with
>>> WITHOUT_CROSS_COMPILER?
>> So far as I know, devel/llvm* builds make no use of WITHOUT_CROSS_COMPILER
>> definitions ( documented in src.conf ) or what I mention below (also from
>> src.conf documentation).
>> As for what is analogous in src.conf's documentation for system
>> builds: BE_NATIVE in an devel/llvm* for a given context would be
>> analogous to using a specific mix of:
>>    WITHOUT_LLVM_TARGET_AARCH64 vs. WITH_LLVM_TARGET_AARCH64
>>    WITHOUT_LLVM_TARGET_ARM     vs. WITH_LLVM_TARGET_ARM
>>    WITHOUT_LLVM_TARGET_MIPS    vs. WITH_LLVM_TARGET_MIPS
>>    WITHOUT_LLVM_TARGET_POWERPC vs. WITH_LLVM_TARGET_POWERPC
>>    WITHOUT_LLVM_TARGET_RISCV   vs. WITH_LLVM_TARGET_RISCV
>>    WITHOUT_LLVM_TARGET_X86     vs. WITH_LLVM_TARGET_X86
>> Some of the mixes would simulate the various devel/llvm* ports
>> BE_NATIVE's intent for various platforms. (BE_NATIVE does not
>> work in all contexts, last I tried it anyway.)
> Ahh. My mistake I guess. I somehow got the idea that defining
> WITHOUT_CROSS_COMPILER caused llvm to build only what's needed
> build/bootstrap for the arch it's (currently) running on. Which
> would, of course. Slim down the buildtime/installed footprint.

(I'm not trying to have my wording below cover older gcc based
FreeBSD alternatives.)

13.x of FreeBSD building 14.0 (for example) generally uses a
bootstrap compiler even for the same architecture. A difference
is the default target of the two compilers, such as:

aarch64-unknown-freebsd13.0
vs.
aarch64-unknown-freebsd14.0

even if that were the only difference at the time. (A different
form of "cross"?)

devel/llvm* does not have this bootstrapping issue that
is driven by FreeBSD definitions for building FreeBSD
--instead of by processor architecture.

WITHOUT_CROSS_COMPILER for a FreeBSD system build
causes:

             WITHOUT_CLANG_BOOTSTRAP
             WITHOUT_ELFTOOLCHAIN_BOOTSTRAP
             WITHOUT_LLD_BOOTSTRAP

and so can not be used for the 13.x to 14.0
example: such is not an example of "close"
if I understand right:

  WITHOUT_CROSS_COMPILER
             Set to not build any cross compiler in the cross-tools stage of
             buildworld.  When compiling a different version of FreeBSD than
             what is installed on the system, provide an alternate compiler
             with XCC to ensure success.  When compiling with an identical
             version of FreeBSD to the host, this option may be safely used.
             This option may also be safe when the host version of FreeBSD is
             close to the sources being built, but all bets are off if there
             have been any changes to the toolchain between the versions.
             When set, it enforces these options:

             WITHOUT_CLANG_BOOTSTRAP
             WITHOUT_ELFTOOLCHAIN_BOOTSTRAP
             WITHOUT_LLD_BOOTSTRAP

(One might have compilers around for XCC and such symbol use
but that is a different kind of context.)


===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the freebsd-ports mailing list