Re: Wow: Building the likes of devel/llvm16 now requires building rust first (when rust is out of date). . .

From: John F Carr <jfc_at_mit.edu>
Date: Fri, 15 Sep 2023 00:09:48 UTC

> On Sep 14, 2023, at 16:46, Mark Millard <marklmi@yahoo.com> wrote:
> 
> On Sep 14, 2023, at 10:46, John F Carr <jfc@mit.edu> wrote:
> 
>> This needs to be fixed.  One massive compiler should not depend on another massive
>> compiler just in case something in the tool chain wants to make an HTTPS request.
>> Setting DOCS=off does not fix the dependency.
>> 
>> Here is my list of stripped-down devel/llvm17 options that still require rust
>> 
>> ===> The following configuration options are available for llvm17-17.0.0.r4:
>>    BE_AMDGPU=off: AMD GPU backend (required by mesa)
>>    BE_WASM=off: WebAssembly backend (required by firefox via wasi)
>>    CLANG=on: Build clang
>>    COMPILER_RT=on: Sanitizer libraries
>>    DOCS=off: Build and/or install documentation
>>    EXTRAS=off: Extra clang tools
>>    FLANG=off: Flang FORTRAN compiler
>>    LIT=on: Install lit and FileCheck test tools
>>    LLD=on: Install lld, the LLVM linker
>>    LLDB=on: Install lldb, the LLVM debugger
>>    MLIR=on: Multi-Level Intermediate Representation
>>    OPENMP=off: Install libomp, the LLVM OpenMP runtime library
>>    POLLY=off: Polyhedral loop and data-locality optimizer
>>    PYCLANG=off: Install python bindings to libclang
>>    STATIC_LIBS=off: Install static libraries (does not effect sanitizers)
>> ====> Options available for the single BACKENDS: you have to select exactly one of them
>>    BE_FREEBSD=on: Backends for FreeBSD architectures
>>    BE_NATIVE=off: Backend(s) for this architecture (AArch64 ARM)
>>    BE_STANDARD=off: All non-experimental backends
>> 
>> rust does not currently build on my system so I can not build the ports llvm17 or llvm-devel.
> 
> (py39 happens to be what is in use in my context.)
> 
> Even devel/llvm*@lite depends on py39-recommonmark
> --and that in turns leads to the sequence: py39-sphinx,
> py39-requests, py39-urllib3, py39-cryptography,
> py39-setuptools-rust, and rust. (The dependencies
> look to be basically runtime and test dependencies.)
> devel/llvm* always seems to be tied to recommonmark .
> 
> [I'll note that recommonmark is in the process
> of being replaced upstream my myst-parser but
> that also leads down the same sphinx and later
> dependency sequence from what I can tell.]
> 
> The system-clang builds avoid needing recommonmark
> (or the like). May be devel/llvm*'s could be updated
> to allow selecting such an avoidance? May be what
> actually uses recommonmark (or the like) could be
> separated into its own port that could optionally
> be built/installed? (Just vague ideas.)
> 
> [Separately, just curious: Which resource limitations
> stop the building of rust in your context?]
> 
> ===
> Mark Millard
> marklmi at yahoo.com

My rust build fails with crashes that are probably not related to resource
limits.  I don't want to have to debug rust.  I am only trying to build a C compiler.

From dmesg:

pid 73093 (rustc), jid 20, uid 65534: exited on signal 11 (core dumped)
pid 17027 (rustc), jid 29, uid 65534: exited on signal 11 (core dumped)
pid 16967 (cargo), jid 29, uid 65534: exited on signal 11 (core dumped)

There are some other errors in the build logs that are not signals, such as

error: could not compile `pulldown-cmark` (lib); 29 warnings emitted

My poudriere.conf settings are

USE_TMPFS=data
TMPFS_LIMIT=17
MAX_MEMORY=23

These are not round numbers because I chose them to be somewhat bigger
than older values that were too small.

I have 3.10 as my default python version in Mk/bsd.default-versions.mk.
I don't remember why 3.10 and not 3.9.  3.11 used to not work with llvm.