A lot of things require Rust. A lot of programs will require Rust anyway. I still don't get why you keep saying you need Rust for Xorg or its drivers. Have things changed that much radically most recently for that to be needed for it? Whenever I rebuilt my Xorg recently, things break.
As for LLVM, different sets of packages insist on two different versions of it. Actually, all that's really needed is not the full compiler, just the build utilities equivalent to binutils. GNU Binutils will actually do (or has recently). They put utilities and compilers into a monolithic package for each version.
While it's often discouraged to tinker with /usr/ports/Mk/ and /usr/ports/Mk/Uses/, versions for all programs can be set to one needed ports LLVM, then give feedback to maintainers or the mailing list on if that works. Then, be ready to overwrite the ports/ directory with a fresh
Maybe the solution is to ask for them to separate LLVM's utilities from the LLVM compiler build. So that dependencies don't ask for hours of additional compile time, when something actually needs the latest compiler utilities, and not the whole LLVM set. Also, so that the compiler in the base system is enough for everything requiring LLVM/Clang.
GNU Binutils at a recent time had the needed components to build everything on various processors. LLVM's Clang utilities are limited, many parts of it only work for a limited amount of processors, and parts of it are not finished. Parts of LLVM Clang build for everything across all processors. When a small improvement is made, they set it to download a newer update of LLVM/Clang by default.
LLVM/Clang itself isn't the problem. The problem is the utils which are unfinished. I believe parts from GNU binutils are used to fill in the gaps. Not all programs need all of the build utilities or the latest ones, but some that ask for the latest LLVM version do or have in a most recent time.
The quickest fix is to see which versions of LLVM and Rust are wanted, cancel that build, then install these two (plus a Rust dependency) from packages. Then use the -i option with
As for LLVM, different sets of packages insist on two different versions of it. Actually, all that's really needed is not the full compiler, just the build utilities equivalent to binutils. GNU Binutils will actually do (or has recently). They put utilities and compilers into a monolithic package for each version.
While it's often discouraged to tinker with /usr/ports/Mk/ and /usr/ports/Mk/Uses/, versions for all programs can be set to one needed ports LLVM, then give feedback to maintainers or the mailing list on if that works. Then, be ready to overwrite the ports/ directory with a fresh
svnup
or svn
. The one that won't likely build is the Xorg drivers that actually do require the latest version of LLVM (actually its utilities). So, it should only need the base LLVM plus the latest one from ports (but not necessarily the latest build). Furthermore, it's likely only the latest utilities for LLVM that are needed from the latest version, which aren't separated from the LLVM compiler.Maybe the solution is to ask for them to separate LLVM's utilities from the LLVM compiler build. So that dependencies don't ask for hours of additional compile time, when something actually needs the latest compiler utilities, and not the whole LLVM set. Also, so that the compiler in the base system is enough for everything requiring LLVM/Clang.
GNU Binutils at a recent time had the needed components to build everything on various processors. LLVM's Clang utilities are limited, many parts of it only work for a limited amount of processors, and parts of it are not finished. Parts of LLVM Clang build for everything across all processors. When a small improvement is made, they set it to download a newer update of LLVM/Clang by default.
LLVM/Clang itself isn't the problem. The problem is the utils which are unfinished. I believe parts from GNU binutils are used to fill in the gaps. Not all programs need all of the build utilities or the latest ones, but some that ask for the latest LLVM version do or have in a most recent time.
The quickest fix is to see which versions of LLVM and Rust are wanted, cancel that build, then install these two (plus a Rust dependency) from packages. Then use the -i option with
portmaster
for your desired program to avoid rebuilding LLVM and Rust, when a package for the latest build for these is unavailable. Using packages from the lang category for the most part doesn't interfere with building from ports.