With poudriere how does one create a jail of a slightly older RELEASE ?
Date: Sat, 24 May 2025 21:37:06 UTC
This may seem trivial but trying to create a jail for a release
from just a few years ago is not working well :
t# poudriere jails -c -a amd64 -j 132amd64 -v 13.2-RELEASE
[00:00:00] Creating 132amd64 fs at /export/poudriere/jails/132amd64... done
[00:00:00] Fetching MANIFEST for FreeBSD 13.2-RELEASE amd64
fetch:
https://download.freebsd.org/releases/amd64/amd64/13.2-RELEASE/MANIFEST:
Not Found
fetch:
https://download.freebsd.org/releases/amd64/amd64/13.2-RELEASE/MANIFEST:
Not Found
[00:00:01] Error: Failed to fetch from
https://download.freebsd.org/releases/amd64/amd64/13.2-RELEASE/MANIFEST
[00:00:01] Error while creating jail, cleaning up.
[00:00:01] Removing 132amd64 jail... done
[00:00:01] Cleaning 132amd64 data... done
t#
That makes perfect sense.
So then build from source?
That does not work either :
t#
t# uname -apKU
FreeBSD titan 15.0-CURRENT FreeBSD 15.0-CURRENT #1
main-n277353-19419d36cf2a: Mon May 19 20:40:28 UTC 2025
root@titan:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64 amd64 1500043
1500043
t#
t# cc --version
FreeBSD clang version 19.1.7 (https://github.com/llvm/llvm-project.git
llvmorg-19.1.7-0-gcd708029e0b2)
Target: x86_64-unknown-freebsd15.0
Thread model: posix
InstalledDir: /usr/bin
Build config: +assertions
t#
t# env | sort
BLOCKSIZE=K
ENV=/root/.shrc
HOME=/root
LANG=C.UTF-8
MAIL=/var/mail/root
MM_CHARSET=UTF-8
OLDPWD=/root
PAGER=less
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
PWD=/root
SHELL=/bin/sh
TERM=xterm
USER=root
t#
t# /usr/bin/time -p idprio 0 poudriere jail -c -j 132amd64 -a amd64 \
-v releng/13.2 \
-J 1 -b -D -m git+https -U https://git.freebsd.org/src.git
[00:00:00] Creating 132amd64 fs at /export/poudriere/jails/132amd64... done
[00:00:00] Checking out the sources with git+https... done
[00:04:25] Starting make buildworld with 1 jobs
make[1]: /export/poudriere/jails/132amd64/usr/src/Makefile.inc1:340:
SYSTEM_COMPILER: libclang will be built for bootstrapping a cross-compiler.
make[1]: /export/poudriere/jails/132amd64/usr/src/Makefile.inc1:345:
SYSTEM_LINKER: libclang will be built for bootstrapping a cross-linker.
--------------------------------------------------------------
>>> World build started on Sat May 24 21:12:02 UTC 2025
--------------------------------------------------------------
--------------------------------------------------------------
>>> Rebuilding the temporary build tree
--------------------------------------------------------------
rm -rf /usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp
cd /export/poudriere/jails/132amd64/usr/src/tools/build; make
DIRPRFX=tools/build/
DESTDIR=/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy
installdirs
mkdir -p
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/bin
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/lib/casper
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/lib/geom
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/include/casper
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/include/private/ucl
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/include/private/zstd
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/lib
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/libdata/pkgconfig
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/libexec
ln -sfn bin
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/sbin
ln -sfn ../bin
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/bin
ln -sfn ../bin
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/sbin
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/sys"
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/casper"
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/ufs/ufs"
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/ufs/ffs"
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/fs/msdosfs"
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/sys/disk"
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/machine"
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/rpc"
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/crypto/chacha20"
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/x86"
cd /export/poudriere/jails/132amd64/usr/src/tools/build; make
DIRPRFX=tools/build/
DESTDIR=/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy
host-symlinks
Linking host tools into
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/bin
rm -f
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/libexec/flua
cp -pf /usr/libexec/flua
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/libexec/flua
--------------------------------------------------------------
>>> stage 1.1: legacy release compatibility shims
--------------------------------------------------------------
.
.
.
*********************************************************
* Here I just wait and let things happen. I have tried *
* this with -J 32 and it fails everytime. So I figure *
* using -J 1 may keeps things in chronological order. *
*********************************************************
.
.
.
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/machine"
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/rpc"
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/crypto/chacha20"
mkdir -p
"/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy//usr/include/x86"
--------------------------------------------------------------
>>> stage 1.2: bootstrap tools
--------------------------------------------------------------
cd /export/poudriere/jails/132amd64/usr/src; INSTALL="sh
/export/poudriere/jails/132amd64/usr/src/tools/install.sh"
TOOLS_PREFIX=/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp
PATH=/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/sbin:/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/bin:/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/bin:/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/libexec:/sbin:/bin:/usr/sbin:/usr/bin
WORLDTMP=/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp MAKEFLAGS="-m /export/poudriere/jails/132amd64/usr/src/tools/build/mk -j 1 -J 15,16 -m /export/poudriere/jails/132amd64/usr/src/share/mk" make -f Makefile.inc1 DESTDIR= OBJTOP='/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/obj-tools' OBJROOT='${OBJTOP}/' MAKEOBJDIRPREFIX= BOOTSTRAPPING=1500043 BWPHASE=bootstrap-tools -DNO_CPU_CFLAGS -DNO_LINT -DNO_PIC -DNO_SHARED MK_CTF=no MK_CLANG_EXTRAS=no MK_CLANG_FORMAT=no MK_CLANG_FULL=no MK_HTML=no MK_MAN=no MK_PROFILE=no MK_RETPOLINE=no MK_SSP=no MK_TESTS=no MK_WERROR=no MK_INCLUDES=yes MK_MAN_UTILS=yes MK_LLVM_TARGET_ALL=no bootstrap-tools
===> lib/clang/libllvmminimal (obj,all,install)
.
.
.
objcopy --only-keep-debug vtfontcvt.full vtfontcvt.debug
objcopy --strip-debug --add-gnu-debuglink=vtfontcvt.debug vtfontcvt.full
vtfontcvt
sh /export/poudriere/jails/132amd64/usr/src/tools/install.sh -s -o root
-g wheel -m 555 vtfontcvt
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/bin/vtfontcvt
sh /export/poudriere/jails/132amd64/usr/src/tools/install.sh -o root -g
wheel -m 444 vtfontcvt.debug
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/lib/debug/usr/bin/vtfontcvt.debug
===> usr.sbin/zic (obj,all,install)
[Creating objdir
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/obj-tools/usr.sbin/zic...]
echo zic.full: /usr/lib/libc.a
/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/lib/libegacy.a
>> .depend
/usr/local/bin/ccache cc -O2 -pipe -fno-common
-I/export/poudriere/jails/132amd64/usr/src/contrib/tzcode -include
tzconfig.h -g -MD -MF.depend.zic.o -MTzic.o -std=gnu99
-Wno-format-zero-length -Wsystem-headers -Wall -Wno-format-y2k -W
-Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes
-Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch
-Wshadow -Wunused-parameter -Wcast-align -Wchar-subscripts
-Wnested-externs -Wredundant-decls -Wold-style-definition
-Wno-pointer-sign -Wmissing-variable-declarations -Wthread-safety
-Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable
-Wno-error=unused-but-set-variable -Qunused-arguments
-I/usr/obj/export/poudriere/jails/132amd64/usr/src/amd64.amd64/tmp/legacy/usr/include
-c /export/poudriere/jails/132amd64/usr/src/contrib/tzcode/zic.c -o zic.o
/export/poudriere/jails/132amd64/usr/src/contrib/tzcode/zic.c:464:8:
error: an attribute list cannot appear here
464 | static ATTRIBUTE_NORETURN void
| ^~~~~~~~~~~~~~~~~~
/export/poudriere/jails/132amd64/usr/src/contrib/tzcode/private.h:471:30:
note: expanded from macro 'ATTRIBUTE_NORETURN'
471 | # define ATTRIBUTE_NORETURN [[noreturn]]
| ^~~~~~~~~~~~
/export/poudriere/jails/132amd64/usr/src/contrib/tzcode/zic.c:471:8:
error: an attribute list cannot appear here
471 | static ATTRIBUTE_NORETURN void
| ^~~~~~~~~~~~~~~~~~
/export/poudriere/jails/132amd64/usr/src/contrib/tzcode/private.h:471:30:
note: expanded from macro 'ATTRIBUTE_NORETURN'
471 | # define ATTRIBUTE_NORETURN [[noreturn]]
| ^~~~~~~~~~~~
/export/poudriere/jails/132amd64/usr/src/contrib/tzcode/zic.c:669:8:
error: an attribute list cannot appear here
669 | static ATTRIBUTE_NORETURN void
| ^~~~~~~~~~~~~~~~~~
/export/poudriere/jails/132amd64/usr/src/contrib/tzcode/private.h:471:30:
note: expanded from macro 'ATTRIBUTE_NORETURN'
471 | # define ATTRIBUTE_NORETURN [[noreturn]]
| ^~~~~~~~~~~~
/export/poudriere/jails/132amd64/usr/src/contrib/tzcode/zic.c:3778:8:
error: an attribute list cannot appear here
3778 | static ATTRIBUTE_NORETURN void
| ^~~~~~~~~~~~~~~~~~
/export/poudriere/jails/132amd64/usr/src/contrib/tzcode/private.h:471:30:
note: expanded from macro 'ATTRIBUTE_NORETURN'
471 | # define ATTRIBUTE_NORETURN [[noreturn]]
| ^~~~~~~~~~~~
4 errors generated.
*** [zic.o] Error code 1
make[3]: stopped making "all" in
/export/poudriere/jails/132amd64/usr/src/usr.sbin/zic
make[3]: 1 error
make[3]: stopped making "all" in
/export/poudriere/jails/132amd64/usr/src/usr.sbin/zic
make[2]: stopped making "bootstrap-tools" in
/export/poudriere/jails/132amd64/usr/src
make[1]: stopped making "buildworld" in
/export/poudriere/jails/132amd64/usr/src
make: stopped making "buildworld" in
/export/poudriere/jails/132amd64/usr/src
[00:08:18] Error: Failed to 'make buildworld'
[00:08:18] Error while creating jail, cleaning up.
[00:08:18] Removing 132amd64 jail... done
[00:08:21] Cleaning 132amd64 data... done
real 501.40
user 619.18
sys 158.12
t#
So perhaps there is a way to create a jail for an older release using
just some tarballs extracted and then I can hack up something that looks
correct in /usr/local/etc/poudriere.d/jails/132amd64 directory.
Something similar to :
t#
t# ls -lap /usr/local/etc/poudriere.d/jails/142amd64/
total 13
drwxr-xr-x 2 root wheel 9 May 19 22:25 ./
drwxr-xr-x 4 root wheel 4 May 24 21:31 ../
-rw-r--r-- 1 root wheel 6 Apr 16 23:00 arch
-rw-r--r-- 1 root wheel 31 Apr 16 23:00 fs
-rw-r--r-- 1 root wheel 5 Apr 16 23:00 method
-rw-r--r-- 1 root wheel 33 Apr 16 23:00 mnt
-rw-r--r-- 1 root wheel 2 Apr 16 23:01 pkgbase
-rw-r--r-- 1 root wheel 11 May 19 22:25 timestamp
-rw-r--r-- 1 root wheel 16 Apr 16 23:02 version
t#
t#
t# cat /usr/local/etc/poudriere.d/jails/142amd64/method
http
t#
t# cat /usr/local/etc/poudriere.d/jails/142amd64/mnt
/export/poudriere/jails/142amd64
t#
t# cat /usr/local/etc/poudriere.d/jails/142amd64/pkgbase
0
t#
t# cat /usr/local/etc/poudriere.d/jails/142amd64/timestamp
1747693542
t#
t# cat /usr/local/etc/poudriere.d/jails/142amd64/version
14.2-RELEASE-p3
t#
t# cat /usr/local/etc/poudriere.d/jails/142amd64/fs
zroot/poudriere/jails/142amd64
t#
t# cat /usr/local/etc/poudriere.d/jails/142amd64/arch
amd64
t#
Well the "method" will not be http as that does not work.
Is there any other way to build a jail for an older release?
--
--
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken