git: 92d399a3be0e - main - release/vm: add a WITHOUT_QEMU option

From: Brooks Davis <brooks_at_FreeBSD.org>
Date: Wed, 12 Mar 2025 21:07:03 UTC
The branch main has been updated by brooks:

URL: https://cgit.FreeBSD.org/src/commit/?id=92d399a3be0e53622b9af16a82f9b7c7b62b34f7

commit 92d399a3be0e53622b9af16a82f9b7c7b62b34f7
Author:     Brooks Davis <brooks@FreeBSD.org>
AuthorDate: 2025-03-12 21:05:33 +0000
Commit:     Brooks Davis <brooks@FreeBSD.org>
CommitDate: 2025-03-12 21:05:33 +0000

    release/vm: add a WITHOUT_QEMU option
    
    This option disables trying to build a qemu-<target>-static and simply
    doesn't do any of the operations that rely on it.  This disables package
    installation which is required by most, but not all image types.
    
    Disable all CLOUDWARE variants that require pkg when WITHOUT_QEMU is set
    to avoid broken images.
    
    Reviewed by:    emaste
    Sponsored by:   DARPA, AFRL
    Differential Revision:  https://reviews.freebsd.org/D49310
---
 release/Makefile.vm        |  9 ++++++++-
 release/tools/vmimage.subr | 11 +++++++++++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/release/Makefile.vm b/release/Makefile.vm
index ec3e734285ce..b711d7891f11 100644
--- a/release/Makefile.vm
+++ b/release/Makefile.vm
@@ -21,6 +21,10 @@ VMDK_DESC=	VMWare, VirtualBox disk image
 QCOW2_DESC=	Qemu, KVM disk image
 RAW_DESC=	Unformatted raw disk image
 
+.if defined(WITHOUT_QEMU)
+CLOUDWARE_TYPES?= \
+		BASIC-CI
+.else
 CLOUDWARE_TYPES?= AZURE \
 		BASIC-CI \
 		BASIC-CLOUDINIT \
@@ -28,6 +32,7 @@ CLOUDWARE_TYPES?= AZURE \
 		GCE \
 		ORACLE \
 		VAGRANT
+.endif
 AZURE_FORMAT=	vhdf
 AZURE_FSLIST?=	ufs zfs
 AZURE_DESC=	Microsoft Azure platform image
@@ -94,7 +99,7 @@ emulator-portinstall:
 .endif
 	touch ${.TARGET}
 
-.if ${TARGET_ARCH} != ${MACHINE_ARCH}
+.if ${TARGET_ARCH} != ${MACHINE_ARCH} && !defined(WITHOUT_QEMU)
 .if ( ${TARGET_ARCH} != "i386" ) || ( ${MACHINE_ARCH} != "amd64" )
 QEMUSTATIC=/usr/local/bin/qemu-${TARGET_ARCH}-static
 QEMUTGT=emulator-portinstall
@@ -120,6 +125,7 @@ cw-${_CW:tl}-${_FS}-${_FMT}: ${QEMUTGT}
 	mkdir -p ${.OBJDIR}/${.TARGET}
 	env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} SWAPSIZE=${SWAPSIZE} \
 		QEMUSTATIC=${QEMUSTATIC} \
+		WITHOUT_QEMU=${WITHOUT_QEMU:Dtrue} \
 		${.CURDIR}/scripts/mk-vmimage.sh \
 		-C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} -F ${_FS} \
 		-i ${.OBJDIR}/${_CW:tl}.${_FS}.${_FMT}.img -s ${VMSIZE} -f ${_FMT} \
@@ -169,6 +175,7 @@ vm-image:	${QEMUTGT}
 	mkdir -p ${.OBJDIR}/${.TARGET}-${FORMAT}-${FS}
 	env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} SWAPSIZE=${SWAPSIZE} \
 		QEMUSTATIC=${QEMUSTATIC} \
+		WITHOUT_QEMU=${WITHOUT_QEMU:Dtrue} \
 		${.CURDIR}/scripts/mk-vmimage.sh \
 		-C ${.CURDIR}/tools/vmimage.subr \
 		-d ${.OBJDIR}/${.TARGET}-${FORMAT}-${FS} -F ${FS} \
diff --git a/release/tools/vmimage.subr b/release/tools/vmimage.subr
index 7ebf2144efe4..e7bd351c035c 100644
--- a/release/tools/vmimage.subr
+++ b/release/tools/vmimage.subr
@@ -89,6 +89,9 @@ vm_install_base() {
 }
 
 vm_emulation_setup() {
+	if [ -n "${WITHOUT_QEMU}" ]; then
+		return 0
+	fi
 	if ! [ -z "${QEMUSTATIC}" ]; then
 		export EMULATOR=/qemu
 		cp ${QEMUSTATIC} ${DESTDIR}/${EMULATOR}
@@ -130,6 +133,10 @@ vm_extra_enable_services() {
 }
 
 vm_extra_install_packages() {
+	if [ -n "${WITHOUT_QEMU}" ]; then
+		return 0
+	fi
+
 	if [ -z "${VM_EXTRA_PACKAGES}" ]; then
 		return 0
 	fi
@@ -158,6 +165,10 @@ vm_extra_pre_umount() {
 }
 
 vm_emulation_cleanup() {
+	if [ -n "${WITHOUT_QEMU}" ]; then
+		return 0
+	fi
+
 	if ! [ -z "${QEMUSTATIC}" ]; then
 		rm -f ${DESTDIR}/${EMULATOR}
 	fi