release: Prepare GCE cloudware images for building as non-root

- Avoid mounting devfs just to list packages and fetch distfiles.
- Add metalog entries.

Reviewed by:	cperciva, emaste
MFC after:	3 days
Sponsored by:	The FreeBSD Foundation
Sponsored by:	Klara, Inc.
Differential Revision:	https://reviews.freebsd.org/D52455
This commit is contained in:
Mark Johnston 2025-09-16 16:54:11 +00:00
parent 8f5791873a
commit f1995d6fc1

View file

@ -21,6 +21,7 @@ vm_extra_install_base() {
echo 'search google.internal' > ${DESTDIR}/etc/resolv.conf
echo 'nameserver 169.254.169.254' >> ${DESTDIR}/etc/resolv.conf
echo 'nameserver 8.8.8.8' >> ${DESTDIR}/etc/resolv.conf
metalog_add ./etc/resolv.conf
}
vm_extra_pre_umount() {
@ -94,25 +95,18 @@ EOF
# ports.txz distributions to the target virtual machine disk image
# and fetch the sources for the third-party software installed on
# the image.
if [ ! -c "${DESTDIR}/dev/null" ]; then
DEVFSISOURS=1
mkdir -p ${DESTDIR}/dev
mount -t devfs devfs ${DESTDIR}/dev
fi
if [ -e "${DESTDIR}/../ftp/src.txz" ]; then
tar fxJ ${DESTDIR}/../ftp/src.txz -C ${DESTDIR}
fi
if [ -e "${DESTDIR}/../ftp/ports.txz" ]; then
tar fxJ ${DESTDIR}/../ftp/ports.txz -C ${DESTDIR}
_INSTALLED_PACKAGES=$(chroot ${DESTDIR} pkg info -o -q -a)
_INSTALLED_PACKAGES=$(pkg -r ${DESTDIR} info -o -q -a)
for PACKAGE in ${_INSTALLED_PACKAGES}; do
chroot ${DESTDIR} \
make -C /usr/ports/${PACKAGE} fetch
make -C ${DESTDIR}/usr/ports/${PACKAGE} fetch \
DISTDIR=${DESTDIR}/usr/ports/distfiles
done
fi
if [ "$DEVFSISOURS" = "1" ]; then
umount_loop ${DESTDIR}/dev
fi
## XXX: Verify this is needed. I do not see this requirement
## in the docs, and it impairs the ability to boot-test a copy
@ -128,6 +122,5 @@ vm_emulation_cleanup() {
if [ -n "${QEMUSTATIC}" ]; then
rm -f ${DESTDIR}/${EMULATOR}
fi
umount_loop ${DESTDIR}/dev
return 0
}