With poudriere how does one create a jail of a slightly older RELEASE ?

From: Dennis Clarke <dclarke_at_blastwave.org>
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