From: Stuart Henderson Subject: Re: dpb always rebuild rust-bootstrap To: Solene Rapenne Cc: Sebastien Marie , ports@openbsd.org Date: Sun, 21 Apr 2024 15:51:22 +0100 On 2024/04/21 13:53, Solene Rapenne wrote: > On Sun, Apr 21, 2024 at 11:56:30AM GMT, Stuart Henderson wrote: > > On 2024/04/21 11:35, Solene Rapenne wrote: > > > On Sat, Apr 20, 2024 at 10:02:38AM GMT, Solene Rapenne wrote: > > > > On Sat, Apr 20, 2024 at 09:00:30AM GMT, Sebastien Marie wrote: > > > > > Solene Rapenne writes: > > > > > > > > > > > hi, on a fresh current amd64 I had to set up dpb because it seems > > > > > > there was a libc bump at the wrong time for me :) > > > > > > > > > > > > however, now I have my working dpb (easy to setup once you understand > > > > > > it), I don't understand why dpb -R something_depending_on_rust > > > > > > always have to recompile lang/rust, in the packages directory, only > > > > > > the rust bootstrap package is changed everytime I run dpb. > > > > > > > > > > > > I'm not sure which logs I could provide though. This is quite > > > > > > annoying because lang/rust is heavy to compile and I like to trigger > > > > > > dpb every time I try a diff. > > > > > > > > > > > > Am I the only one with this issue? > > > > > > > > > > I'm interested to know if there are any problems with the way I did > > > > > rust-bootstrap. > > > > > > > > > > Currently, it is marked with 'always-update', because the package > > > > > content depend on the build host (system libraries are embedded in the > > > > > package for the bootstrap purpose). I expected that if the package isn't > > > > > installed (and it shouldn't in standard usage) it will not be a problem. > > > > > > > > > > Do you have it installed ? If it isn't the case, and dpb is rebuilding > > > > > it without purpose (I assume no port depending on it), it might be a > > > > > problem in dpb, or some side effect for a subpackage having > > > > > 'always-update'. > > > > > > > > > > I could look to remove the 'always-update' option from rust-bootstrap > > > > > without too much trouble. > > > > > > > > > > Thanks. > > > > > -- > > > > > Sebastien Marie > > > > > > > > rust-bootstrap is not installed in the chroot after using dpb -R shells/nushell > > > > that rebuilt rust-bootstrap , I don't think junking happened > > > > > > > > I'll try without always-update > > > > > > > > > > dpb stopped rebuilding rust everytime since I removed always-update > > > > > > I don't know if REVISION could be set only for bootstrap, but > > > following diff works for me > > > > The plain REVISION bump like you've done is correct. > > > > I would set WANTLIB-bootstrap to the list of libraries used in the > > bootstrap. That way it will be automically updated when necessary. > > (Ignore the "not needed" from check-lib-depends). > > > > > diff --git a/lang/rust/Makefile b/lang/rust/Makefile > > > index 035767f1126..ba65386765a 100644 > > > --- a/lang/rust/Makefile > > > +++ b/lang/rust/Makefile > > > @@ -17,6 +17,7 @@ COMMENT-src = Rust source component > > > > > > V = 1.77.2 > > > DISTNAME = rustc-${V}-src > > > +REVISION = 0 > > > > > > # rustc bootstrap version > > > BV-aarch64 = 1.77.0-20240320 > > > diff --git a/lang/rust/pkg/PLIST-bootstrap b/lang/rust/pkg/PLIST-bootstrap > > > index 17001b7230c..1b28ca27ca2 100644 > > > --- a/lang/rust/pkg/PLIST-bootstrap > > > +++ b/lang/rust/pkg/PLIST-bootstrap > > > @@ -1,2 +1 @@ > > > -@option always-update > > > lib/rustc-bootstrap-${MACHINE_ARCH}.tar > > > > > I'm not entirely sure how to make a WANTLIB-boostrap, > > I got an issue with a lib trying to generate it for bootstrap, so I > first checked -main using port-lib-depends-check on -main subpackage > but it reported an issue about ssh2 library, is this expected? There > is security/libssh2 and LIB_DEPENDS-main so it should be fine? > > I have to admit I became a bit rusty with the ports tree :-) > > ryzen$ env SUBPACKAGE=-main make port-lib-depends-check > ===> Checking files for rust-1.77.2 > `/usr/ports/distfiles/rust/rustc-1.77.2-src.tar.xz' is up to date. > `/usr/ports/distfiles/rust/rustc-bootstrap-amd64-1.77.0-20240318.tar.lz' is up to date. > >> (SHA256) rust/rustc-1.77.2-src.tar.xz: OK > >> (SHA256) rust/rustc-bootstrap-amd64-1.77.0-20240318.tar.lz: OK > ===> Verifying specs: c++ c++abi pthread c crypto curl m pthread ssh2 ssl z c++ c++abi pthread c m pthread c++ c++abi pthread c m pthread > Missing library for ssh2>=0.0 > Fatal error > *** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2489 '/usr/ports/pobj/rust-1.77.2/.buildwantlibs': @case X${_DEPENDS_CACHE} in X...) > *** Error 2 in /usr/ports/lang/rust (/usr/ports/infrastructure/mk/bsd.port.mk:2796 '/usr/ports/pobj/rust-1.77.2/.extract_done': @cd /usr/por...) > Just use "make port-lib-depends-check", don't pass SUBPACKAGE. On reflection, though, my idea won't be good enough for bootstrap because we want newer base libraries when they change (to cope with changes in the kernel/libc ABI, which happen independently library bumps). So really it does want always-update.