Re: [through-able] poudriere: I don't want to rebuild rust with PORTREVISION bump of curl

From: Nuno Teixeira <eduardo_at_freebsd.org>
Date: Fri, 20 Jan 2023 10:14:23 UTC
Other trick for those using -devel (-b latest||quarterly) is to start
building until dependency is done, stop poudriere and restart it. Next
build will use rust-1.66.1 from cache without rebuild it. :)

Cheers

Tatsuki Makino <tatsuki_makino@hotmail.com> escreveu no dia sexta,
20/01/2023 à(s) 08:40:

> Hello.
> This is an unimportant topic that may or may not be useful and can be
> skipped :)
>
> Today, our poudriere would have output the following
>
> [00:01:24] [Dry Run] Deleting rust-1.66.1.pkg: missing dependency:
> curl-7.87.0
>
> This causes my poudriere to spend 4 hours rebuilding rust.
> Not long ago, my poudriere spent 6.5 hours rebuilding gcc12 because of
> mpfr :)
>
> I experimented with ways around this.
>
> # Extract +COMPACT_MANIFEST and +MANIFEST
> tar -x -v -f
> /usr/local/poudriere/data/packages/jailname-default/All/rust-1.66.1.pkg -C
> /tmp/ -- +COMPACT_MANIFEST +MANIFEST
> # Substitute 7.87.0 and 7.87.0_1 in curl
> # If 7.87.0 only appeared once, it might be easy to do using sed or
> something, but here I did it with vi to be sure :)
> vi /tmp/+COMPACT_MANIFEST /tmp/+MANIFEST
> # Create a new package... somewhat strange command :)
> tar -c -f - --exclude +\*MANIFEST
> @/usr/local/poudriere/data/packages/jailname-default/All/rust-1.66.1.pkg |
> tar -c -v -f /tmp/rust-1.66.1.pkg -J -C /tmp/ +COMPACT_MANIFEST +MANIFEST @-
> # Copy owner and permissions
> chmod `stat -f %Mp%Lp
> /usr/local/poudriere/data/packages/jailname-default/All/rust-1.66.1.pkg`
> /tmp/rust-1.66.1.pkg
> chown `stat -f %u:%g
> /usr/local/poudriere/data/packages/jailname-default/All/rust-1.66.1.pkg`
> /tmp/rust-1.66.1.pkg
> # Move the completed package
> mv /tmp/rust-1.66.1.pkg
> /usr/local/poudriere/data/packages/jailname-default/All/
>
> The replaced rust-*.pkg is no longer included in rebuild queue :)
> And after this, the build of graphics/librsvg2-rust succeeded without any
> problems.
>
> It uses the following behavior:
> poudriere uses the following command to check dependencies
> pkg query -F somepackage-0.pkg '%do %dn-%dv'
> The -F option of pkg-query opens the package with pkg_open2 function in
> pkg-1.19.0/libpkg/pkg.c.
> +COMPACT_MANIFEST and +MANIFEST are read in priority to the nearest the
> beginning of the package archive.
>
> If you break a RUST package, give up and rebuild it :)
> poudriere bulk -j jailname -C lang/rust
> ... 4 hours :)
>
> Thank you for reading :)
> Regards.
>
>

-- 
Nuno Teixeira
FreeBSD Committer (ports)