old shared lib is missing on installworld (by poudriere)

From: Matthias Apitz <guru_at_unixarea.de>
Date: Wed, 22 Oct 2025 06:56:12 UTC
Hello,

I did on a 15-CURRENT system compiled and installed in March,
now with sources from git:

make buildworld
make buildkernel
make installkernel

and installed it in single user mode with

reboot to single user
make installworld
reboot to multiuser

The new system boots fine (if I not count outdated entries in
/etc/sysctl.conf causing panic with messages about ACPI).

But now, creating jails after also updated /usr/ports fails with:


# uname -a
FreeBSD jet 16.0-CURRENT FreeBSD 16.0-CURRENT #0 main-n281256-7d6221ff1447: Sun Oct 19 12:57:22 CEST 2025     guru@jet:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64

# poudriere jail -c -j 160-CURRENT -m src=/usr/src
[00:00:00] Creating 160-CURRENT fs at /usr/local/poudriere/jails/160-CURRENT... done
[00:00:01] Copying /usr/src to /usr/local/poudriere/jails/160-CURRENT/usr/src... done
[00:02:57] Starting make installworld
--- installworld ---
make[1]: /usr/obj/usr/src/amd64.amd64/toolchain-metadata.mk:1: Using cached toolchain metadata from build at jet on Sun Oct 19 10:12:02 CEST 2025
--- _installcheck_world ---
--------------------------------------------------------------
>>> Install check world started on Wed Oct 22 07:28:02 CEST 2025
--------------------------------------------------------------
--- installworld ---
mkdir -p /tmp/install.DDxtHqxvPf
progs=$(for prog in [ awk cap_mkdb cat chflags chmod chown cmp cp  date echo egrep find grep id install  ln make mkdir mtree mv pwd_mkdb  rm sed services_mkdb sh sort strip sysctl test time true uname wc tzsetup makewhatis ; do  if progpath=`env PATH=/usr/obj/usr/src/amd64.amd64/tmp/bin:/usr/obj/usr/src/amd64.amd64/tmp/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/libexec:/sbin:/bin:/usr/sbin:/usr/bin which $prog`; then  echo $progpath;  else  echo "Required tool $prog not found in PATH ("/usr/obj/usr/src/amd64.amd64/tmp/bin:/usr/obj/usr/src/amd64.amd64/tmp/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/libexec:/sbin:/bin:/usr/sbin:/usr/bin")." >&2;  exit 1;  fi;  done);  if [ -z "" ] ; then  libs=$(ldd -f "%o %p\n" -f "%o %p\n" $progs 2>/dev/null | sort -u | grep -Ev '\[.*]' |  while read line; do  $line;  if [ "$2 $3" != "not found" ]; then  echo $2;  else  echo "Required library $1 not found." >&2;  exit 1;  fi;  done);  fi;  cp $libs $progs /tmp/install.DDxtHqxvPf
Required library libutil.so.9 not found.
*** [installworld] Error code 1

make[1]: stopped making "installworld" in /usr/src
make[1]: 1 error

make[1]: stopped making "installworld" in /usr/src

make: stopped making "installworld" in /usr/src
[00:02:57] Error: /usr/local/share/poudriere/jail.sh:installworld:12:Failed to 'make installworld'
[00:02:57] Error while creating jail, cleaning up.
[00:02:57] Removing 160-CURRENT jail... done

I investigated the problem and two commands in
/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin are missing libutil.so.9:

/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin/cmp
/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin/mtree

Note, this reads here poudriere related, but I'm sure and tested
it that the next 

# cd /usr/src
# make installworld DESTDIR=/foo

would face the same problem. 

A workaround was:

# cp -p /usr/local/poudriere/jails/150-CURRENT/lib/libutil.so.9 /lib

...
install -N /usr/src/etc  -C -o root  -g wheel -m 644  /usr/src/usr.sbin/pkg/FreeBSD.conf.latest /usr/local/poudriere/jails/160-CURRENT/etc/pkg/FreeBSD.conf
[00:05:36] Recording filesystem state for clean... done
[00:05:37] Jail 160-CURRENT 16.0-CURRENT 1600001 amd64 is ready to be used

Sould I file a PR?

	matthias

-- 
Matthias Apitz, ✉ guru@unixarea.de, http://www.unixarea.de/ +49-176-38902045
Public GnuPG key: http://www.unixarea.de/key.pub