Two notes on poudriere(-devel) vs. modern pkg use by FreeBSD
Date: Wed, 08 Oct 2025 03:30:58 UTC
Note 0:
# diff -u5 /usr/local/share/poudriere/common.sh.orig /usr/local/share/poudriere/common.sh
--- /usr/local/share/poudriere/common.sh.orig 2025-10-07 19:02:47.202576000 -0700
+++ /usr/local/share/poudriere/common.sh 2025-10-07 16:33:58.460446000 -0700
@@ -3916,12 +3916,10 @@
-exec chflags -fh schg {} +
chflags -R noschg \
"${tomnt:?}${LOCALBASE:-/usr/local}" \
"${tomnt:?}${PREFIX:-/usr/local}" \
"${tomnt:?}/usr/home" \
- "${tomnt:?}/boot/modules" \
- "${tomnt:?}/boot/firmware" \
"${tomnt:?}/boot"
if [ -n "${CCACHE_STATIC_PREFIX-}" ] && \
[ -x "${CCACHE_STATIC_PREFIX}/bin/ccache" ]; then
# Need to allow ccache-update-links to work.
chflags noschg \
I was getting complaints about modules and firmware
being missing for the above code in jail_start() in
/usr/local/share/poudriere/common.sh .
This lead to the removal of the lines. But the
following boot line would lead to processing modules
and/or firmware, whichever ones happen to exist (if
any): -R schg is recursive below the listed roots as
well. So I do not expect that these specific lines
are needed.
Note 1:
I also set up a test having a modified poudriere-devel
that created a jail based on use of:
-C -x ^FreeBSD-set-minimal-jail ^FreeBSD-set-devel ^FreeBSD-set-lib32 ^FreeBSD-src-sys
instead of the way that has been in use since before
any FreeBSD-set-* existed. (That old code over installs
into any FreeBSD:1[56]:* jail these days as far as I
can tell.)
Note:
Doing this as I did would mean no support for
FreeBSD:14:* since it has not been tracking the
general updates made for 15+ and I did not need
backward compatibility for what I was testing.
Technically, no support is the FreeBSD:14:* official
status, as I understand. Also, making poudriere have
to deal with two different ways of doing things in
order to span FreeBSD:14:* has its own set of
issues.
End Note.
I did this testing on both amd64 (443 port-package
build tested) and on aarch64 (260 port-package
build tested. The builds did not run into anything
being missing. (Unfortunately bulk -ca tests take
days and I do not want to dedicate such machine
time.)
My change for the purpose of the test was:
# diff -u /usr/local/share/poudriere/jail.sh.orig /usr/local/share/poudriere/jail.sh
--- /usr/local/share/poudriere/jail.sh.orig 2025-10-06 10:19:59.000000000 -0700
+++ /usr/local/share/poudriere/jail.sh 2025-10-07 16:51:44.842240000 -0700
@@ -921,22 +921,14 @@
enabled: yes
}
EOF
- cat <<EOF > "${JAILMNT}/etc/pkg/FreeBSD2.conf"
-FreeBSD: {
- enabled: no
-}
-EOF
- pkg -o IGNORE_OSVERSION=yes -o REPOS_DIR="${JAILMNT}/etc/pkg" -o ABI="FreeBSD:${VERSION}:${ARCH}" -r ${JAILMNT}/ update
- # Omit the man/debug/kernel/src and tests packages, unneeded for us.
- pkg -o IGNORE_OSVERSION=yes -o REPOS_DIR="${JAILMNT}/etc/pkg" -o ABI="FreeBSD:${VERSION}:${ARCH}" -r ${JAILMNT}/ search -qCx '^FreeBSD-.*' | grep -vE -- '-man|-dbg|-kernel-|-tests|-src-' | xargs pkg -o REPOS_DIR="${JAILMNT}/etc/pkg" -r ${JAILMNT}/ install -y
- pkg -o IGNORE_OSVERSION=yes -o REPOS_DIR="${JAILMNT}/etc/pkg" -o ABI="FreeBSD:${VERSION}:${ARCH}" -r ${JAILMNT}/ search -q '^FreeBSD-src-sys' | xargs pkg -o REPOS_DIR="${JAILMNT}/etc/pkg" -r ${JAILMNT}/ install -y
+ pkg -o IGNORE_OSVERSION=yes -o REPOS_DIR="${JAILMNT}/etc/pkg" -o ABI="FreeBSD:${VERSION}:${ARCH}" -r ${JAILMNT}/ update -rpkgbase
+ pkg -o IGNORE_OSVERSION=yes -o REPOS_DIR="${JAILMNT}/etc/pkg" -o ABI="FreeBSD:${VERSION}:${ARCH}" -r ${JAILMNT}/ install -rpkgbase -y \
+ -C -x ^FreeBSD-set-minimal-jail ^FreeBSD-set-devel ^FreeBSD-set-lib32 ^FreeBSD-src-sys
if [ -n "${KERNEL}" ]; then
- pkg -o IGNORE_OSVERSION=yes -o REPOS_DIR="${JAILMNT}/etc/pkg" -o ABI="FreeBSD:${VERSION}:${ARCH}" -r ${JAILMNT}/ install -y FreeBSD-kernel-"${KERNEL}" || \
+ pkg -o IGNORE_OSVERSION=yes -o REPOS_DIR="${JAILMNT}/etc/pkg" -o ABI="FreeBSD:${VERSION}:${ARCH}" -r ${JAILMNT}/ install -rpkgbase -y -C -x ^FreeBSD-kernel-"${KERNEL}" || \
err 1 "Failed to install FreeBSD-kernel-${KERNEL}"
fi
-
- rm "${JAILMNT}/etc/pkg/FreeBSD2.conf"
}
create_jail() {
The existing code seemed to:
) not cover "FreeBSD-ports:" and "FreeBSD-ports-kmods:" as
additions to the historical "FreeBSD:" alternative. I used
-rpkgbase to to avoid such (and any other repositories).
This should have been good enough for the test, even if
overall it is too restrictive to be in a poudriere-devel
release.
) not use any FreeBSD-set-* to advantage. (This is what I was
trying to explore.) I ended up avoiding xargs style usage
and I followed my same notations for the
FreeBSD-kernel-"${KERNEL}" as well, not that I tested having
a kernel involved, however. I did not attempt FreeBSD:14:*
compatibility.
The test does suggest that, ignoring FreeBSD:14:* ,
-C -x ^FreeBSD-set-minimal-jail ^FreeBSD-set-devel ^FreeBSD-set-lib32 ^FreeBSD-src-sys
has a chance of being the basis for something viable
for populating poudriere(-devel) jails.
===
Mark Millard
marklmi at yahoo.com