Re: dns/bind916 builds rust unexpectedly

From: Charlie Li <vishwin_at_freebsd.org>
Date: Wed, 27 Sep 2023 10:33:35 UTC
Tomoaki AOKI wrote:
> On Tue, 26 Sep 2023 22:03:18 +0200
> Thierry Thomas <thierry@freebsd.org> wrote:
>> This is true, but rust is very heavy, and it seems to be updated quiet
>> frequently.
>>
>> Just an idea: maybe it could be possible to repocopy lang/rust to e.g.
>> lang/rust-devel (we already have rust-nightly), lang/rust being a stable
>> release, used to compile the depending ports, and rust-devel being used
>> by rust developers and updated more frequently.
>>
Not really feasible, even if some other major changes happen. Every 
actual release is deemed stable.
>> I do not know if these ports would be installed at the same place, with
>> CONFLICTS_INSTALL, or if would be better to install the -devel port
>> with some suffix? [rust@FreeBSD.org added to Cc:]
> 
They would conflict big time by default.
> There is lang/rust-nightly [1] [2], which may be the -devel version.
> IIRC, this is not so frequently updated. currently, the latest update
> was to 1.72.0.20230612 at Jun.20, 2023, while lang/rust 1.72.0 landed
> at Sep.08, 2023.
> 
> The problem, I think, is that all BUILD_DEPEND'ed ports are basically
> bumped when lang/rust is updated.
> 
> I'm not at all a rust developer nor porter, but if possible, files
> causing the rebuild (would be statically linked files like crt0.o in C)
> would be better splitted into individual port(s) and updated only when
> its source code is updated (and, if applicable, the behaviour of
> resulting binary is ACTUALLY changed WITH BACKWARD-INCOMPATIBLE WAY by
> rust code generator or optimizer) and all rust[-nightly] consumers
> LIB_DEPEND to them.
> 
Every Rust release contains changes to the compiler itself and the 
supporting cast in dependent crates and external non-Rust libraries 
including LLVM. Crates are always built as single unit outputs, with all 
dependencies built together. Unless the crate uses FFI, the only dynamic 
linking by default is with libc.

Think of the bumps like every time a new LLVM/clang is getting prepared 
for -CURRENT.

https://rustc-dev-guide.rust-lang.org/overview.html
https://doc.rust-lang.org/reference/crates-and-source-files.html
https://doc.rust-lang.org/reference/linkage.html

-- 
Charlie Li
...nope, still don't have an exit line.