From b70ef7c982f0509a990aca256050a1d5ef721431 Mon Sep 17 00:00:00 2001 From: gjb Date: Wed, 5 Nov 2014 13:22:19 +0000 Subject: Initial rewrite to consolidate VM image build scripts into one. There may be some very sharp edges here while refactoring. - Move amd64/mk-vmimage.sh -> scripts/mk-vmimage.sh. - Remove vm-base target from Makefile.vm. - In vm-image target, use getopts flags for argument passing. - Create tools/vmimage.subr, containing default and prototype for the following functions that are used to drive the build, run in this order: vm_install_base() vm_extra_install_base() vm_extra_install_packages() vm_extra_install_ports() vm_extra_enable_services() vm_extra_pre_umount() vm_create_disk() vm_extra_create_disk() - In tools/azure.conf, override: vm_extra_install_base() vm_extra_pre_umount() vm_extra_create_disk() - In tools/openstack.conf, override: vm_extra_install_base() vm_extra_pre_umount() Sponsored by: The FreeBSD Foundation --- release/scripts/mk-vmimage.sh | 102 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100755 release/scripts/mk-vmimage.sh (limited to 'release/scripts') diff --git a/release/scripts/mk-vmimage.sh b/release/scripts/mk-vmimage.sh new file mode 100755 index 0000000..b5065b6 --- /dev/null +++ b/release/scripts/mk-vmimage.sh @@ -0,0 +1,102 @@ +#!/bin/sh +#- +# Copyright (c) 2014 The FreeBSD Foundation +# All rights reserved. +# +# This software was developed by Glen Barber under sponsorship +# from the FreeBSD Foundation. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# mk-vmimage.sh: Create virtual machine disk images in various formats. +# +# $FreeBSD$ +# + +main() { + local arg + while getopts "C:c:d:f:i:o:s:S:" arg; do + case "${arg}" in + C) + VMBUILDCONF="${OPTARG}" + ;; + c) + VMCONFIG="${OPTARG}" + ;; + d) + DESTDIR="${OPTARG}" + ;; + f) + VMFORMAT="${OPTARG}" + ;; + i) + VMBASE="${VMBASE}" + ;; + o) + VMIMAGE="${OPTARG}" + ;; + s) + VMSIZE="${OPTARG}" + ;; + S) + WORLDDIR="${OPTARG}" + ;; + *) + ;; + esac + done + shift $(( ${OPTIND} - 1)) + + if [ -z "${VMBASE}" -o \ + -z "${WORLDDIR}" -o \ + -z "${DESTDIR}" -o \ + -z "${VMSIZE}" -o \ + -z "${VMIMAGE}" -o \ + -z "${VMCONFIG}" ]; + then + usage + fi + + if [ -z "${VMBUILDCONF}" ] || [ ! -e "${VMBUILDCONF}" ]; then + echo "Must provide the path to vmimage.subr." + return 1 + fi + + . "${VMBUILDCONF}" + + if [ ! -z "${VMCONFIG}" ] && [ -e "${VMCONFIG}" ]; then + . "${VMCONFIG}" + fi + + vm_install_base + vm_extra_install_base + vm_extra_install_packages + vm_extra_install_ports + vm_extra_enable_services + vm_extra_pre_umount + vm_create_disk + vm_extra_create_disk + + return 0 +} + +main "$@" -- cgit v1.1 From 78882d335bd4e3636c0d9b440bcc091b6d763949 Mon Sep 17 00:00:00 2001 From: gjb Date: Sat, 8 Nov 2014 12:23:50 +0000 Subject: Return if vm_create_disk() is unsuccessful. Sponsored by: The FreeBSD Foundation --- release/scripts/mk-vmimage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/mk-vmimage.sh b/release/scripts/mk-vmimage.sh index b5065b6..27c48b7 100755 --- a/release/scripts/mk-vmimage.sh +++ b/release/scripts/mk-vmimage.sh @@ -93,7 +93,7 @@ main() { vm_extra_install_ports vm_extra_enable_services vm_extra_pre_umount - vm_create_disk + vm_create_disk || return 0 vm_extra_create_disk return 0 -- cgit v1.1 From c4727c6932cc8fcd5f05a4f93c08fcf5dc9ebce0 Mon Sep 17 00:00:00 2001 From: gjb Date: Sat, 8 Nov 2014 12:47:21 +0000 Subject: Move usage() from vmimage.subr to mk-vmimage.sh, in case vmimage.subr has not been sourced. Sponsored by: The FreeBSD Foundation --- release/scripts/mk-vmimage.sh | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/mk-vmimage.sh b/release/scripts/mk-vmimage.sh index 27c48b7..0dd330fa 100755 --- a/release/scripts/mk-vmimage.sh +++ b/release/scripts/mk-vmimage.sh @@ -32,6 +32,12 @@ # $FreeBSD$ # +usage() { + echo "${0} usage:" + echo "${@}" + return 1 +} + main() { local arg while getopts "C:c:d:f:i:o:s:S:" arg; do -- cgit v1.1 From 987e4720872ab85486b66e3d1edc33550e9186c3 Mon Sep 17 00:00:00 2001 From: gjb Date: Sat, 8 Nov 2014 12:59:32 +0000 Subject: Spell 'OPTARG' correctly. Actually call vm_create_base(). Sponsored by: The FreeBSD Foundation --- release/scripts/mk-vmimage.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/mk-vmimage.sh b/release/scripts/mk-vmimage.sh index 0dd330fa..7df7e3d 100755 --- a/release/scripts/mk-vmimage.sh +++ b/release/scripts/mk-vmimage.sh @@ -55,7 +55,7 @@ main() { VMFORMAT="${OPTARG}" ;; i) - VMBASE="${VMBASE}" + VMBASE="${OPTARG}" ;; o) VMIMAGE="${OPTARG}" @@ -93,6 +93,7 @@ main() { . "${VMCONFIG}" fi + vm_create_base vm_install_base vm_extra_install_base vm_extra_install_packages -- cgit v1.1 From 102d6a49cadee1eec91f95417755b0e29f92b800 Mon Sep 17 00:00:00 2001 From: gjb Date: Sat, 8 Nov 2014 16:52:07 +0000 Subject: Call cleanup() after everything is done. Sponsored by: The FreeBSD Foundation --- release/scripts/mk-vmimage.sh | 1 + 1 file changed, 1 insertion(+) (limited to 'release/scripts') diff --git a/release/scripts/mk-vmimage.sh b/release/scripts/mk-vmimage.sh index 7df7e3d..05a64cc 100755 --- a/release/scripts/mk-vmimage.sh +++ b/release/scripts/mk-vmimage.sh @@ -102,6 +102,7 @@ main() { vm_extra_pre_umount vm_create_disk || return 0 vm_extra_create_disk + cleanup return 0 } -- cgit v1.1 From 5d6c87f034dfb472153503733292f86cd7e93156 Mon Sep 17 00:00:00 2001 From: cperciva Date: Thu, 20 Nov 2014 00:16:55 +0000 Subject: Unmount filesystem and destroy md before we read the vnode from disk and package it into a disk image. Otherwise we end up packaging an unclean filesystem. --- release/scripts/mk-vmimage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/mk-vmimage.sh b/release/scripts/mk-vmimage.sh index 05a64cc..bf0e132 100755 --- a/release/scripts/mk-vmimage.sh +++ b/release/scripts/mk-vmimage.sh @@ -100,9 +100,9 @@ main() { vm_extra_install_ports vm_extra_enable_services vm_extra_pre_umount + cleanup vm_create_disk || return 0 vm_extra_create_disk - cleanup return 0 } -- cgit v1.1