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

From: Mark Millard <>
Date: Fri, 15 Sep 2023 04:32:20 UTC
On Sep 13, 2023, at 23:20, Mark Millard <> wrote:

> Note: py39 is in use in my context.
> Building devel/llvm16 requires building textproc/py-recommonmark@py39
> Building textproc/py-recommonmark@py39 requires building textproc/py-sphinx@py39
> Building textproc/py-sphinx@py39 requires building www/py-requests@py39
> Building www/py-requests@py39 requires building net/py-urllib3@py39
> Building net/py-urllib3@py39 requires building security/py-openssl@py39
> Building security/py-openssl@py39 requires building security/py-cryptography@py39
> Building security/py-cryptography@py39 requires building devel/py-setuptools-rust@py39
> Building devel/py-setuptools-rust@py39 requires building lang/rust
> Building devel/llvm16 and the like just got more
> resource intensive for those not already building
> lang/rust . Building lang/rust in my context uses
> system-clang ( not a devel/llvm* ). So no loop in
> my context.
> I normally build rust anyway. But other folks may
> have been avoiding such.

I have the file (for other reasons):


and I added to it:

.if ${.CURDIR:M*/devel/llvm*}

This overrides the "always on" for DOCS for
the various devel/llvm* . (In more complicated
contexts += would be appropriate i order to
allow multiple assignments to accumulate.)

This stopped the recommonmark use and, so, stopped
the sequence of dependencies leading to lang/rust
being required.

This appears to do more than whatever John F Carr did
to get it to report in his context:

===> The following configuration options are available for llvm17-17.0.0.r4:
   . . .
   DOCS=off: Build and/or install documentation
   . . .

(Likely normal style options file content was involved.)

I did not make any such "normal style" OPTIONS changes and the
log file for my build  attempt reported:

---Begin OPTIONS List---
===> The following configuration options are available for llvm17-17.0.0.r4:
     BE_AMDGPU=on: AMD GPU backend (required by mesa)
     BE_WASM=on: WebAssembly backend (required by firefox via wasi)
     CLANG=on: Build clang
     COMPILER_RT=on: Sanitizer libraries
     DOCS=off: Build and/or install documentation
     EXTRAS=on: Extra clang tools
     FLANG=off: Flang FORTRAN compiler
     GOLD=on: Build the LLVM Gold plugin for LTO
     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=on: Install libomp, the LLVM OpenMP runtime library
     POLLY=on: Polyhedral loop and data-locality optimizer
     PYCLANG=on: Install python bindings to libclang
     STATIC_LIBS=on: Install static libraries (does not effect sanitizers)
====> Options available for the single BACKENDS: you have to select exactly one of them
     BE_FREEBSD=off: Backends for FreeBSD architectures
     BE_NATIVE=off: Backend(s) for this architecture (X86)
     BE_STANDARD=on: All non-experimental backends
===> Use 'make config' to modify these settings
---End OPTIONS List---

The --PLIST_SUB-- section ended up listing: PORTDOCS="@comment
and: DOCS="@comment " NO_DOCS=""
but still listed: DOCSDIR="share/doc/llvm17"

The --SUB_LIST-- section ended up listing: DOCS="@comment " NO_DOCS=""
but still listed: DOCSDIR=/usr/local/share/doc/llvm17

FYI, without rust having been built, my first ever build
of llvm17 (not reporting on the 49 prior poort->package
builds before devel/llvm17 started):

[00:43:30] Finished devel/llvm17@default | llvm17-17.0.0.r4: Success

FYI: Default Options in:

reports the always-on status for DOCS (and some more)
but not the way(s) to override that status for specific
ports. It seems that only some ways actually change the
status to off --and I've found one such.

Mark Millard
marklmi at