Avoid using env(1) to set values passed to mk-vmimage.sh,

and instead pass the values as arguments to the script,
making it easier to run this by hand, without 'make release'.

Add usage_vm_base() and usage_vm_image() usage helpers.

Sponsored by:	The FreeBSD Foundation
This commit is contained in:
gjb 2014-10-01 19:13:42 +00:00
parent 78c1b9246c
commit b2b02a9be6
3 changed files with 100 additions and 20 deletions

View File

@ -317,20 +317,18 @@ install:
vm-base:
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
env IMAKE=${IMAKE} WORLDDIR=${WORLDDIR} \
VMBASE=${VMBASE}.img VMSIZE=${VMSIZE} \
DESTDIR=${.OBJDIR}/${.TARGET} \
TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
${.CURDIR}/${TARGET}/mk-vmimage.sh ${.TARGET}
env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
${.CURDIR}/${TARGET}/mk-vmimage.sh ${.TARGET} \
${VMBASE}.img ${WORLDDIR} ${.OBJDIR}/${.TARGET} ${VMSIZE}
.endif
touch ${.TARGET}
vm-image: vm-base
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
. for FORMAT in ${VMFORMATS}
env FORMAT=${FORMAT} VMIMAGE=${VMBASE}.${FORMAT} VMBASE=${VMBASE}.img \
TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
${.CURDIR}/${TARGET}/mk-vmimage.sh ${.TARGET}
env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
${.CURDIR}/${TARGET}/mk-vmimage.sh ${.TARGET} \
${VMBASE}.img ${FORMAT} ${VMBASE}.${FORMAT}
. endfor
.endif
touch ${.TARGET}

View File

@ -35,8 +35,25 @@
PATH="/bin:/usr/bin:/sbin:/usr/sbin"
export PATH
usage_vm_base() {
echo -n "$(basename ${0}) vm-base <base image> <source tree>"
echo " <dest dir> <disk image size>"
return 0
}
usage_vm_image() {
echo -n "$(basename ${0}) vm-image <base image> <image format>"
echo " <output image>"
return 0
}
usage() {
echo "$(basename ${0}) <command> <target> [...]"
echo "Usage:"
echo "$(basename ${0}) [vm-base|vm-image] [...]"
echo
usage_vm_base
echo
usage_vm_image
exit 1
}
@ -56,6 +73,20 @@ panic() {
vm_create_baseimage() {
# Creates the UFS root filesystem for the virtual machine disk,
# written to the formatted disk image with mkimg(1).
#
# Arguments:
# vm-base <base image> <source tree> <dest dir> <disk image size>
VMBASE="${1}"
WORLDDIR="${2}"
DESTDIR="${3}"
VMSIZE="${4}"
if [ -z "${VMBASE}" -o -z "${WORLDDIR}" -o -z "${DESTDIR}" \
-o -z "${VMSIZE}" ]; then
usage
fi
i=0
mkdir -p ${DESTDIR}
truncate -s ${VMSIZE} ${VMBASE}
@ -63,7 +94,7 @@ vm_create_baseimage() {
newfs -j /dev/${mddev}
mount /dev/${mddev} ${DESTDIR}
cd ${WORLDDIR} && \
${IMAKE} DESTDIR=${DESTDIR} \
make DESTDIR=${DESTDIR} \
installworld installkernel distribution || \
panic 1 "\n\nCannot install the base system to ${DESTDIR}."
chroot ${DESTDIR} /usr/bin/newaliases
@ -89,6 +120,19 @@ vm_create_baseimage() {
}
vm_create_vmdisk() {
# Creates the virtual machine disk image from the raw disk image.
#
# Arguments:
# vm-image <base image> <image format> <output image>"
VMBASE="${1}"
FORMAT="${2}"
VMIMAGE="${3}"
if [ -z "${VMBASE}" -o -z "${FORMAT}" -o -z "${VMIMAGE}" ]; then
usage
fi
mkimg_version=$(mkimg --version 2>/dev/null | awk '{print $2}')
# We need mkimg(1) '--version' output, at minimum, to be able to
@ -124,10 +168,7 @@ vm_create_vmdisk() {
main() {
cmd="${1}"
if [ -z "${MAKEFLAGS}" ]; then
echo "It is probably not safe to run this by hand yet..."
fi
shift 1
case ${cmd} in
vm-base)

View File

@ -35,8 +35,25 @@
PATH="/bin:/usr/bin:/sbin:/usr/sbin"
export PATH
usage_vm_base() {
echo -n "$(basename ${0}) vm-base <base image> <source tree>"
echo " <dest dir> <disk image size>"
return 0
}
usage_vm_image() {
echo -n "$(basename ${0}) vm-image <base image> <image format>"
echo " <output image>"
return 0
}
usage() {
echo "$(basename ${0}) <command> <target> [...]"
echo "Usage:"
echo "$(basename ${0}) [vm-base|vm-image] [...]"
echo
usage_vm_base
echo
usage_vm_image
exit 1
}
@ -56,6 +73,20 @@ panic() {
vm_create_baseimage() {
# Creates the UFS root filesystem for the virtual machine disk,
# written to the formatted disk image with mkimg(1).
#
# Arguments:
# vm-base <base image> <source tree> <dest dir> <disk image size>
VMBASE="${1}"
WORLDDIR="${2}"
DESTDIR="${3}"
VMSIZE="${4}"
if [ -z "${VMBASE}" -o -z "${WORLDDIR}" -o -z "${DESTDIR}" \
-o -z "${VMSIZE}" ]; then
usage
fi
i=0
mkdir -p ${DESTDIR}
truncate -s ${VMSIZE} ${VMBASE}
@ -63,7 +94,7 @@ vm_create_baseimage() {
newfs -j /dev/${mddev}
mount /dev/${mddev} ${DESTDIR}
cd ${WORLDDIR} && \
${IMAKE} DESTDIR=${DESTDIR} \
make DESTDIR=${DESTDIR} \
installworld installkernel distribution || \
panic 1 "\n\nCannot install the base system to ${DESTDIR}."
chroot ${DESTDIR} /usr/bin/newaliases
@ -89,6 +120,19 @@ vm_create_baseimage() {
}
vm_create_vmdisk() {
# Creates the virtual machine disk image from the raw disk image.
#
# Arguments:
# vm-image <base image> <image format> <output image>"
VMBASE="${1}"
FORMAT="${2}"
VMIMAGE="${3}"
if [ -z "${VMBASE}" -o -z "${FORMAT}" -o -z "${VMIMAGE}" ]; then
usage
fi
mkimg_version=$(mkimg --version 2>/dev/null | awk '{print $2}')
# We need mkimg(1) '--version' output, at minimum, to be able to
@ -124,10 +168,7 @@ vm_create_vmdisk() {
main() {
cmd="${1}"
if [ -z "${MAKEFLAGS}" ]; then
echo "It is probably not safe to run this by hand yet..."
fi
shift 1
case ${cmd} in
vm-base)