RE: OSVERSION question for stable branch packages

From: Mark Millard <marklmi_at_yahoo.com>
Date: Fri, 01 Nov 2024 00:39:57 UTC
Bjoern A. Zeeb <bz_at_FreeBSD.org> wrote on
Date: Wed, 30 Oct 2024 20:35:52 UTC :

> if I remember correctly packages are built on the oldest version of a
> stable platform?

Being careful with the reference to "stable":

The official FreeBSD package builders use a jail running the
world for the oldest supported release, such as the oldest
supported 14.* release. (I ignore special test runs of
building in a stable world context.) The kernel is actually
a main [so: 15 as stands] kernel.

As stands that means for 14.* it is 14.1:

building for: FreeBSD 141amd64-default-job-01 14.1-RELEASE-p6 FreeBSD 14.1-RELEASE-p6 amd64

Host OSVERSION: 1500023
Jail OSVERSION: 1401000

and for 13.* it is 13.3 :

building for: FreeBSD 133amd64-default-job-01 13.3-RELEASE-p8 FreeBSD 13.3-RELEASE-p8 amd64

Host OSVERSION: 1500023
Jail OSVERSION: 1303001

(Those are taken from the logs for building ports-mgmt/pkg .)

As I'm unsure of the relevant contexts, I may span a
wider range than you were asking about below.

> So we would currently build on 14.1-R[p6] for the upcoming 14.2-R as well?

The requirements that 14.1-STABLE, 14.2-RELEASE, and 14.2-STABLE
must be compatible with the 14.1-RELEASE based packages builds.
That shifts to 14.2-RELEASE based package builds later --but,
then, 14.1-STABLE does not need to be compatible with the
14.2-RELEASE based package builds.

> How do OSVERSION checks work in that case? Say I want to check for
> OSVERSION >= 1401503 (just a random one).

For the official package builds (that are not very-special-test
runs of building based on a ??.?-STABLE world), no build will
happen with a Jail OSVERSION like 1401503 (which is a 14.1-STABLE
Jail OSVERSION, not a 14.1-RELEASE Jail OSVERSION).

Of course, folks that build their own packages or ports are free
to build based on the likes of 14.1-STABLE if that is the world
they what to build against. As I understand ports are supposed
to allow for such, despite lack of official builds.

As for __FreeBSD_version, the progress goes like:

1400097 -> 1400500: creation of stable/14 branch (14.0-STABLE initially)
1400500 .. 1400511: 14.0-STABLE in stable/14 branch
1400511 -> 1401000: creation of releng/14.1 branch (14.1-BETA1 initially)
1400511 -> 1401500: 14.1-STABLE start in stable/14 branch
1401500 .. 140050?: 14.1-STABLE in stable/14 branch (1400503 so far)
Future:
14015?? -> 1402000: creation of releng/14.2 branch (14.2-BETA1 initially)
14015?? -> 1402500: 14.2-STABLE start in stable/14 branch (same ??)

I will note that releng/13.3 had a type of example that 14 does not
show (yet?):

1302512 -> 1303000: creation of releng/13.3 branch (13.3-BETA1 initially)
1302512 -> 1303500: 13.3-STABLE start in stable/13 branch
1303000 .. 1303001: updated __FreeBSD_version for 13.3-RELEASE in releng/13.3 branch

[The ????5?? examples could have ????[5-9]?? for a stable/* .]

> Would that be true for
> package builds for 14 before 14.1-R goes out of support and 14.2-R
> becomes the new "build base"?
> 
> Do we do special builds for releases with a source tree (sys/sys/param.h
> -> OSVERSION) matching that release?


Official package builds were/are/will-be based on:

1400097 (or the likes of 1400??? with ??? <= 499)
1401000 (or the likes of 1401??? with ??? <= 499)
1402000 (or the likes of 1402??? with ??? <= 499)

No examples of 140*??? with 500 <= ??? . No special official
releases of packages.

But folks can build their own packages and use those instead.
That can lead to any of the __FreeBSD_version values being
involved in those contexts.

===
Mark Millard
marklmi at yahoo.com