git: 32ae9a6b3937 - main - release: Build UFS and ZFS VM images
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 09 Aug 2023 22:45:16 UTC
The branch main has been updated by cperciva:
URL: https://cgit.FreeBSD.org/src/commit/?id=32ae9a6b39372808f3d662300c15157513704aff
commit 32ae9a6b39372808f3d662300c15157513704aff
Author: Colin Percival <cperciva@FreeBSD.org>
AuthorDate: 2023-08-07 01:53:16 +0000
Commit: Colin Percival <cperciva@FreeBSD.org>
CommitDate: 2023-08-09 22:44:54 +0000
release: Build UFS and ZFS VM images
A new option 'VMFSLIST' controls the list of filesystems for which VM
images will be built; the default is to build both UFS and ZFS.
The vm-install target installs these as ${OSRELEASE}-${FS}.${FORMAT},
e.g. FreeBSD-14.0-CURRENT-amd64-zfs.vmdk. For backwards compatibility,
the ${VMFS} image is linked to the previously used ${OSRELEASE}.${FORMAT}
name.
Cloudware building will be updated in a later commit.
Reviewed by: gjb
Reviewed by: emaste, markj (previous version)
Sponsored by: https://www.patreon.com/cperciva
Differential Revision: https://reviews.freebsd.org/D41340
---
release/Makefile.vm | 33 +++++++++++++++++++++++++--------
share/man/man7/release.7 | 13 ++++++++++++-
2 files changed, 37 insertions(+), 9 deletions(-)
diff --git a/release/Makefile.vm b/release/Makefile.vm
index ce86fabdfe5e..0ab683c090ef 100644
--- a/release/Makefile.vm
+++ b/release/Makefile.vm
@@ -9,6 +9,7 @@ VMTARGETS= vm-image
VMFORMATS?= vhd vmdk qcow2 raw
VMSIZE?= 5120m
VMFS?= ufs
+VMFSLIST?= ufs zfs
SWAPSIZE?= 1g
VMBASE?= vm
@@ -112,8 +113,10 @@ cw${_CW:tl}-package:
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
CLEANDIRS+= ${VMTARGETS}
. for FORMAT in ${VMFORMATS}
-CLEANFILES+= ${FORMAT}.img
-CLEANFILES+= ${VMBASE}.${FORMAT}
+. for FS in ${VMFSLIST}
+CLEANFILES+= ${FORMAT}.${FS}.img
+CLEANFILES+= ${VMBASE}.${FS}.${FORMAT}
+. endfor
. endfor
.endif
@@ -122,12 +125,14 @@ vm-base: vm-image
vm-image:
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
. for FORMAT in ${VMFORMATS}
+. for FS in ${VMFSLIST}
mkdir -p ${.OBJDIR}/${.TARGET}
env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} SWAPSIZE=${SWAPSIZE} \
${.CURDIR}/scripts/mk-vmimage.sh \
- -C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} -F ${VMFS} \
- -i ${.OBJDIR}/${FORMAT}.img -s ${VMSIZE} -f ${FORMAT} \
- -S ${WORLDDIR} -o ${.OBJDIR}/${VMBASE}.${FORMAT}
+ -C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} -F ${FS} \
+ -i ${.OBJDIR}/${FORMAT}.${FS}.img -s ${VMSIZE} -f ${FORMAT} \
+ -S ${WORLDDIR} -o ${.OBJDIR}/${VMBASE}.${FS}.${FORMAT}
+. endfor
. endfor
.endif
touch ${.TARGET}
@@ -154,15 +159,27 @@ vm-install:
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
mkdir -p ${DESTDIR}/vmimages
. for FORMAT in ${VMFORMATS}
- cp -p ${VMBASE}.${FORMAT} \
- ${DESTDIR}/vmimages/${OSRELEASE}.${FORMAT}
+. for FS in ${VMFSLIST}
+ cp -p ${VMBASE}.${FS}.${FORMAT} \
+ ${DESTDIR}/vmimages/${OSRELEASE}-${FS}.${FORMAT}
+. endfor
. endfor
. if defined(WITH_COMPRESSED_VMIMAGES) && !empty(WITH_COMPRESSED_VMIMAGES)
. for FORMAT in ${VMFORMATS}
+. for FS in ${VMFSLIST}
# Don't keep the originals. There is a copy in ${.OBJDIR} if needed.
- ${XZ_CMD} ${DESTDIR}/vmimages/${OSRELEASE}.${FORMAT}
+ ${XZ_CMD} ${DESTDIR}/vmimages/${OSRELEASE}-${FS}.${FORMAT}
+. endfor
. endfor
. endif
+ # Compatibility hardlinks from "foo.bar" to "foo-${VMFS}.bar".
+. for FORMAT in ${VMFORMATS}
+. if defined(WITH_COMPRESSED_VMIMAGES) && !empty(WITH_COMPRESSED_VMIMAGES)
+ ln -f ${DESTDIR}/vmimages/${OSRELEASE}-${VMFS}.${FORMAT}.xz ${DESTDIR}/vmimages/${OSRELEASE}.${FORMAT}.xz
+. else
+ ln -f ${DESTDIR}/vmimages/${OSRELEASE}-${VMFS}.${FORMAT} ${DESTDIR}/vmimages/${OSRELEASE}.${FORMAT}
+. endif
+. endfor
cd ${DESTDIR}/vmimages && sha512 ${OSRELEASE}* > \
${DESTDIR}/vmimages/CHECKSUM.SHA512
cd ${DESTDIR}/vmimages && sha256 ${OSRELEASE}* > \
diff --git a/share/man/man7/release.7 b/share/man/man7/release.7
index 8ce2cf47b4fd..068837ff682f 100644
--- a/share/man/man7/release.7
+++ b/share/man/man7/release.7
@@ -366,13 +366,24 @@ is used, the resulting files compressed with
compress to roughly the same size, regardless of the specified disk image
size.
.It Va VMFS
-Set to specify the file system type to use.
+(Deprecated.)
+Set to specify which of the filesystem(s) listed in
+.Va VMFSLIST
+is linked to the historical non-filesystem-labelled file name.
Valid values are
.Va ufs
and
.Va zfs .
The default value is
.Va ufs .
+.It Va VMFSLIST
+Set to specify the list of file system types to build images for.
+Valid values are one or both of
+.Va ufs
+and
+.Va zfs .
+The default value is
+.Va ufs zfs .
.It Va VMFORMATS
Set to the target virtual disk image format(s) to create.
By default, the