git: 8dec47387b25 - main - release: Build cloudware with multiple FS types
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 09 Aug 2023 22:45:17 UTC
The branch main has been updated by cperciva:
URL: https://cgit.FreeBSD.org/src/commit/?id=8dec47387b251006df45b7ee3080c62816139850
commit 8dec47387b251006df45b7ee3080c62816139850
Author: Colin Percival <cperciva@FreeBSD.org>
AuthorDate: 2023-08-07 01:54:39 +0000
Commit: Colin Percival <cperciva@FreeBSD.org>
CommitDate: 2023-08-09 22:44:54 +0000
release: Build cloudware with multiple FS types
New ${CW}_FSLIST settings control the list of filesystem types with which
each cloudware image will be built; currently these are all set to "ufs",
i.e. no change from previous.
The cloudware images have their filesystem type as part of their file
name; for backwards compatibilty the ${VMFS} image is linked to the
previously used file name. This compatibility can be removed once all
the cloudware uploading/publishing code has been updated to use the new
image names (possibly more than one of them).
Reviewed by: gjb
Sponsored by: https://www.patreon.com/cperciva
Differential Revision: https://reviews.freebsd.org/D41341
---
release/Makefile.vm | 43 +++++++++++++++++++++++++++++++------------
1 file changed, 31 insertions(+), 12 deletions(-)
diff --git a/release/Makefile.vm b/release/Makefile.vm
index 0ab683c090ef..a76e78a20f21 100644
--- a/release/Makefile.vm
+++ b/release/Makefile.vm
@@ -25,27 +25,35 @@ CLOUDWARE?= BASIC-CI \
VAGRANT-VIRTUALBOX \
VAGRANT-VMWARE
AZURE_FORMAT= vhdf
+AZURE_FSLIST= ufs
AZURE_DESC= Microsoft Azure platform image
AZURE_DISK= ${OSRELEASE}.${AZURE_FORMAT}
BASIC-CI_FORMAT= raw
+BASIC-CI_FSLIST= ufs
BASIC-CI_DESC= Image for CI
BASIC-CI_DISK= ${OSRELEASE}.${BASIC-CI_FORMAT}
EC2_FORMAT= raw
+EC2_FSLIST= ufs
EC2_DESC= Amazon EC2 image
EC2_DISK= ${OSRELEASE}.${EC2_FORMAT}
GCE_FORMAT= raw
+GCE_FSLIST= ufs
GCE_DESC= Google Compute Engine image
GCE_DISK= disk.${GCE_FORMAT}
OCI_FORMAT= qcow2
+OCI_FSLIST= ufs
OCI_DESC= Oracle Cloud Infrastructure image
OCI_DISK= ${OSRELEASE}.${OCI_FORMAT}
OPENSTACK_FORMAT=qcow2
+OPENSTACK_FSLIST= ufs
OPENSTACK_DESC= OpenStack platform image
OPENSTACK_DISK= ${OSRELEASE}.${OPENSTACK_FORMAT}
VAGRANT-VIRTUALBOX_FORMAT= vmdk
+VAGRANT-VIRTUALBOX_FSLIST= ufs
VAGRANT-VIRTUALBOX_DESC= Vagrant Image for VirtualBox
VAGRANT-VIRTUALBOX_DISK= ${OSRELEASE}.vbox.${VAGRANT_FORMAT}
VAGRANT-VMWARE_FORMAT= vmdk
+VAGRANT-VMWARE_FSLIST= ufs
VAGRANT-VMWARE_DESC= Vagrant Image for VMWare
VAGRANT-VMWARE_DISK= ${OSRELEASE}.vmware.${VAGRANT_FORMAT}
@@ -75,27 +83,38 @@ QEMUSTATIC=/usr/local/bin/qemu-${TARGET_ARCH}-static
.if defined(WITH_CLOUDWARE) && !empty(WITH_CLOUDWARE) && !empty(CLOUDWARE)
. for _CW in ${CLOUDWARE}
-CLOUDTARGETS+= cw-${_CW:tl}
-CLEANDIRS+= cw-${_CW:tl}
-CLEANFILES+= ${_CW:tl}.img \
- ${_CW:tl}.${${_CW:tu}_FORMAT} \
- ${_CW:tl}.${${_CW:tu}_FORMAT}.raw \
- cw${_CW:tl}-package
-CLOUDPACKAGE+= cw${_CW:tl}-package
-${_CW:tu}IMAGE= ${_CW:tl}.${${_CW:tu}_FORMAT}
. if exists(${.CURDIR}/tools/${_CW:tl}.conf) && !defined(${_CW:tu}CONF)
${_CW:tu}CONF?= ${.CURDIR}/tools/${_CW:tl}.conf
. endif
+. for _FS in ${${_CW:tu}_FSLIST}
+CLOUDTARGETS+= cw-${_CW:tl}-${_FS}
+CLEANDIRS+= cw-${_CW:tl}-${_FS}
+CLEANFILES+= ${_CW:tl}.${_FS}.img \
+ ${_CW:tl}.${_FS}.${${_CW:tu}_FORMAT} \
+ ${_CW:tl}.${_FS}.${${_CW:tu}_FORMAT}.raw \
+ cw${_CW:tl}-package
+CLOUDPACKAGE+= cw${_CW:tl}-package
+${_CW:tu}${_FS:tu}IMAGE= ${_CW:tl}.${_FS}.${${_CW:tu}_FORMAT}
-cw-${_CW:tl}: emulator-portinstall
+cw-${_CW:tl}-${_FS}: emulator-portinstall
mkdir -p ${.OBJDIR}/${.TARGET}
env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} SWAPSIZE=${SWAPSIZE} \
QEMUSTATIC=${QEMUSTATIC} \
${.CURDIR}/scripts/mk-vmimage.sh \
- -C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} -F ${VMFS} \
- -i ${.OBJDIR}/${_CW:tl}.img -s ${VMSIZE} -f ${${_CW:tu}_FORMAT} \
- -S ${WORLDDIR} -o ${.OBJDIR}/${${_CW:tu}IMAGE} -c ${${_CW:tu}CONF}
+ -C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} -F ${_FS} \
+ -i ${.OBJDIR}/${_CW:tl}.${_FS}.img -s ${VMSIZE} -f ${${_CW:tu}_FORMAT} \
+ -S ${WORLDDIR} -o ${.OBJDIR}/${${_CW:tu}${_FS:tu}IMAGE} -c ${${_CW:tu}CONF}
touch ${.TARGET}
+. endfor
+
+# Hardlinks from "foo.bar" to "foo-${VMFS}.bar". These can go away once all
+# of the cloudware code knows how to handle multiple filesystem images (or
+# at least knows the name of the UFS image).
+CLOUDTARGETS+= cw-${_CW:tl}
+CLEANFILES+= ${_CW:tl}.${${_CW:tu}_FORMAT}
+${_CW:tu}IMAGE= ${_CW:tl}.${${_CW:tu}_FORMAT}
+cw-${_CW:tl}: cw-${_CW:tl}-${VMFS}
+ ln -f ${${_CW:tu}${VMFS:tu}IMAGE} ${${_CW:tu}IMAGE}
cw${_CW:tl}-package:
@# Special target to handle packaging cloud images in the formats