On Dec 18, 2025, at 07:51, bob prohaska <[email protected]> wrote:

> On Thu, Dec 18, 2025 at 05:44:07AM -0800, Mark Millard wrote:
>> On Dec 18, 2025, at 03:06, Dag-Erling Smørgrav <[email protected]> wrote:
>> 
>>> bob prohaska <[email protected]> writes:
>>>> Is the sanctioned approach to delete everything and start
>>>> over once the host system identifies itself as 16 rather
>>>> than 15? In hindsight it looks like less work.
>>> 
>>> You know that poudriere does not build on the host, right?  What matters
>>> is the OS version in your poudriere jail (the host just needs to be the
>>> same version as or newer than your newest jail), and you're not supposed
>>> to upgrade a poudriere jail from one ABI to another, you're supposed to
>>> create a new jail with the new ABI.
> 
> To my ancient thinking, a host is a piece of machinery with a name and IP 
> number
> that can be handled. The idea of subdividing it into "virtual" hosts remains 
> alien.
> To me a "jail" is a subdivision within that hardware, of which I'm only dimly 
> aware 
> and in this case forgot completely. The difference between jail and virtual 
> host is 
> even less clear. 
> 
> The forgetting is entirely my fault. 
> 
>> 
>> Bob provided evidence that he has a FreeBSD:16:aarch64
>> jail as I understand it: a log message's text lines
>> that he quoted included
>> 
>> QUOTE
>> [main-default-job-03] Installing autoconf-switch-20220527...
>> pkg-static: wrong architecture: FreeBSD:15:* instead of FreeBSD:16:aarch64
>> END QUOTE
>> 
>> That would not be produced in a FreeBSD:15:aarch64
>> poudriere jail as I understand things.
>> 
>> I also do not know if Bob uses METHOD null and builds
>> his own poudriere jails or not these days. The output
>> from
>> 
>> # poudriere jail -l
>> 
> root@nemesis:/usr/local/poudriere # poudriere jail -l
> JAILNAME VERSION      ARCH          METHOD TIMESTAMP           PATH
> main     15.0-CURRENT arm64.aarch64 null   2023-08-29 11:22:20 
> /usr/local/poudriere/poudriere-system
> root@nemesis:/usr/local/poudriere #

So you are using METHOD null still and building your own
poudriere jail content.

Did you rebuild /usr/local/poudriere/poudriere-system to be
16.0-CURRENT instead of 15.0-CURRENT ? (Doing so does not
automtically update the VERSION reported above. Same for
TIMESTAMP.)

A cross check on that could be the output from:

# file /usr/local/poudriere/poudriere-system/bin/sh

I expect that you did, based on that message:

pkg-static: wrong architecture: FreeBSD:15:* instead of FreeBSD:16:aarch64

>> would answer such questions. (null mounted jail updates
>> do not necessarily report VERSION and OSVERSION accurately
>> when the jail is updated outside poudriere unless
>> something more is done, such as deletion and recreation
>> of the jail afterwords or the files for tracking such
>> for the jail are manually updated.)
>> 
> Poudriere was set up under 14-current with a single jail, main. 
> 
>> 
>> But the original message also had a quoted line about
>> FreeBSD-ports-kmods that I've not dealt with at all.
>> It did say:
>> 
>> QUOTE
>> pkg: repository FreeBSD-ports-kmods contains packages for wrong OS version: 
>> FreeBSD:16:aarch64
>> END QUOTE
>> 
>> That reads to me like the context was not FreeBSD:16:aarch64
>> but FreeBSD-ports-kmods was for FreeBSD:16:aarch64 .
>> 
>> Bob should probably report the output of:
>> 
>> # pkg repos -e
>> 
> Maybe that's the culprit:
> root@nemesis:/usr/local/poudriere # pkg repos -e
> FreeBSD-ports: { 
>    url             : "pkg+https://pkg.FreeBSD.org/FreeBSD:16:aarch64/latest";,
>    enabled         : yes,
>    priority        : 0,
>    mirror_type     : "SRV",
>    signature_type  : "FINGERPRINTS",
>    fingerprints    : "/usr/share/keys/pkg"
>  }
> FreeBSD-ports-kmods: { 
>    url             : 
> "pkg+https://pkg.FreeBSD.org/FreeBSD:16:aarch64/kmods_latest";,
>    enabled         : yes,
>    priority        : 0,
>    mirror_type     : "SRV",
>    signature_type  : "FINGERPRINTS",
>    fingerprints    : "/usr/share/keys/pkg"
>  }
> custom: { 
>    url             : 
> "file:///usr/local/poudriere/data/packages/main-default/",
>    enabled         : yes,
>    priority        : 0
>  }

The pkg repos command shows after substitution of ABI
(if such is involved).

> root@nemesis:/usr/local/poudriere # 
> 
> All three priorities are the same. The custom one was meant to be the highest
> priority. Would that be 1, or -1 ?

Modern allows using negative numbers to mean lower
priority than the default (0) and positive numbers
to mean higher priority than the default. negative
was added in pkg 2.3.0 . This was to avoid the
prior status where "a negative priority is
interpreted as a very high unsigned priority" and
"[b]ut as a user of my computer I was surprised that
it is not possible to configure a lower priority
than the default".

See: https://github.com/freebsd/pkg/issues/2455

(2.3.0 was not released until 2025-Sep.)

>> I do wonder if he has some explicit :15: text
>> in some *.conf file(s).

Not for the enabled repositories based on the
output you report.

> I've tampered with poudriere.conf and repos, but think that's all.

And you do your own poudriere jail builds, used via
METHOD null .

When I use my own kernel+world builds they are
based on modified source code. I have poudriere
jails for building based on the same world
build --that works via METHOD null use as well.

But I'm not sure if you actually have source
updates involved in your context vs. you just
like to build locally in general.

> Besides the need to fix repository priorities listed above, it appears
> the expected course of action by poudriere was delete and re-make the jail
> in use when kernel and world incremented major version.

True for METHOD null if nothing is done to cause
VERSION 16.0-CURRENT ( as reported by
poudriere jail -l ).

Using examples from my context. . .

# head /usr/local/etc/poudriere.d/jails/*/version
==> /usr/local/etc/poudriere.d/jails/main-CA7-bulk_a/version <==
15.0-CURRENT

==> /usr/local/etc/poudriere.d/jails/main-CA7/version <==
15.0-CURRENT

==> /usr/local/etc/poudriere.d/jails/main-CA76-bulk_a/version <==
15.0-CURRENT

==> /usr/local/etc/poudriere.d/jails/main-CA76/version <==
15.0-CURRENT

==> /usr/local/etc/poudriere.d/jails/main-aarch64/version <==
16.0-CURRENT

==> /usr/local/etc/poudriere.d/jails/main-armv7/version <==
16.0-CURRENT

==> /usr/local/etc/poudriere.d/jails/official-aarch64/version <==
15.0-STABLE

==> /usr/local/etc/poudriere.d/jails/official-armv7/version <==
15.0-STABLE

==> /usr/local/etc/poudriere.d/jails/official14-aarch64/version <==
14.3-STABLE

==> /usr/local/etc/poudriere.d/jails/official14-armv7/version <==
14.3-STABLE

==> /usr/local/etc/poudriere.d/jails/release-aarch64/version <==
15.0-RELEASE

==> /usr/local/etc/poudriere.d/jails/release-armv7/version <==
15.0-RELEASE

==> /usr/local/etc/poudriere.d/jails/release14-aarch64/version <==
14.3-RELEASE-p6

(I've not updated the main-CA*-* ones in months: I've not been
using personal kernel+world builds in that time. The others
are not METHOD null based and update VERSION more automatically.)

So you could adjust your:

/usr/local/etc/poudriere.d/jails/poudriere-system/version

to indicate:

16.0-CURRENT

> There are some "notes to self" at 
> http://www.zefox.net/~fbsd/poudriere_on_rpi4
> Obviously, I forgot my note about "...Freebsd's version will increment...",
> though it's not the only mistake revealed in the present discussion.

(Those notes have the -DWITH_META_MODE mistake as well and have
old naming for FreeBSD vs. FreeBSD-ports and the like.)

For the likes of the "I ended up deleting and re-creating the
jail with the new -v value" I have scripts, such as the below
example:

# more ~/poud-jail-create-main-CA76-pouds.sh 
#! /bin/sh
poudriere jail -d -jmain-CA76
poudriere jail -c -jmain-CA76        -m null -M 
/usr/obj/DESTDIRs/main-CA76-poud        -S /usr/main-src -v 16.0-CURRENT

poudriere jail -d -jmain-CA76-bulk_a
poudriere jail -c -jmain-CA76-bulk_a -m null -M 
/usr/obj/DESTDIRs/main-CA76-poud-bulk_a -S /usr/main-src -v 16.0-CURRENT

(Note the reference to my modified source tree as well.)

(The bulk_a one is for alternate bulk experiments, on rare occasion
that is a "build -a" build seqeuence.)

> It looks as if fixing those two errors (duplicate repository priorities and
> failure to update the jail on major version increments) should put things 
> right.
> If anybody's willing to offer improvement please do.
> 
> I'm still hazy on what happens when the jail is re-created with a new major
> version number. Are old package repositories deleted, or simply left behind?

Package repositories record what VERSION they were built with
when poudriere builds them. Later builds compare against the
VERSION indicated for the poudriere jail. If it finds they
are different, then all the port-packages are rebuilt.

Showing the recorded jail version information in the
repositories . . .

# head /usr/local/poudriere/data/packages/*/.jailversion
==> /usr/local/poudriere/data/packages/main-CA7-bulk_a-default/.jailversion <==
15.0-CURRENT

==> /usr/local/poudriere/data/packages/main-CA7-default/.jailversion <==
15.0-CURRENT

==> /usr/local/poudriere/data/packages/main-CA76-bulk_a-default/.jailversion <==
15.0-CURRENT

==> /usr/local/poudriere/data/packages/main-CA76-default/.jailversion <==
15.0-CURRENT

==> /usr/local/poudriere/data/packages/main-aarch64-default/.jailversion <==
16.0-CURRENT

==> /usr/local/poudriere/data/packages/main-armv7-default/.jailversion <==
16.0-CURRENT

==> 
/usr/local/poudriere/data/packages/main-min-devel-lib32-aarch64-default/.jailversion
 <==
16.0-CURRENT

==> /usr/local/poudriere/data/packages/official-aarch64-default/.jailversion <==
15.0-STABLE

==> /usr/local/poudriere/data/packages/official-armv7-default/.jailversion <==
15.0-STABLE

==> /usr/local/poudriere/data/packages/official14-aarch64-default/.jailversion 
<==
14.3-STABLE

==> /usr/local/poudriere/data/packages/official14-armv7-default/.jailversion <==
14.3-STABLE

==> /usr/local/poudriere/data/packages/release-aarch64-default/.jailversion <==
15.0-RELEASE

==> /usr/local/poudriere/data/packages/release-armv7-default/.jailversion <==
15.0-RELEASE

==> /usr/local/poudriere/data/packages/release14-aarch64-default/.jailversion 
<==
14.3-RELEASE-p6

Compare that to what I reported earlier above for:

# head /usr/local/etc/poudriere.d/jails/*/version

I will note that something like 14.3-RELEASE vs.
14.3-RELEASE-p6 counts as different and leads to
complete rebuilds, when almost always nothing
needs to be rebuilt for a change just in the -p?
part of the text when the rest is the same.


===
Mark Millard
marklmi at yahoo.com


Reply via email to