#!/bin/sh1#-2# Copyright (c) 2014, 2015 The FreeBSD Foundation3#4# This software was developed by Glen Barber under sponsorship5# from the FreeBSD Foundation.6#7# Redistribution and use in source and binary forms, with or without8# modification, are permitted provided that the following conditions9# are met:10# 1. Redistributions of source code must retain the above copyright11# notice, this list of conditions and the following disclaimer.12# 2. Redistributions in binary form must reproduce the above copyright13# notice, this list of conditions and the following disclaimer in the14# documentation and/or other materials provided with the distribution.15#16# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND17# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE18# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE19# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE20# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL21# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS22# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)23# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT24# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY25# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF26# SUCH DAMAGE.27#28# mk-vmimage.sh: Create virtual machine disk images in various formats.29#30#31set -e3233usage() {34echo "${0} usage:"35echo "${@}"36return 137}3839main() {40local arg41VMCONFIG="/dev/null"42while getopts "C:c:d:F:f:i:o:s:S:" arg; do43case "${arg}" in44C)45VMBUILDCONF="${OPTARG}"46;;47c)48VMCONFIG="${OPTARG}"49;;50d)51DESTDIR="${OPTARG}"52;;53F)54VMFS="${OPTARG}"55;;56f)57VMFORMAT="${OPTARG}"58;;59i)60VMBASE="${OPTARG}"61;;62o)63VMIMAGE="${OPTARG}"64;;65s)66VMSIZE="${OPTARG}"67;;68S)69WORLDDIR="${OPTARG}"70;;71*)72;;73esac74done75shift $(( ${OPTIND} - 1))7677if [ -z "${VMBASE}" -o \78-z "${WORLDDIR}" -o \79-z "${DESTDIR}" -o \80-z "${VMSIZE}" -o \81-z "${VMIMAGE}" -o \82-z "${VMFS}" ];83then84usage || exit 085fi8687if [ -z "${VMBUILDCONF}" ] || [ ! -e "${VMBUILDCONF}" ]; then88echo "Must provide the path to vmimage.subr."89return 190fi9192. "${VMBUILDCONF}"9394if [ -n "${VMCONFIG}" ] && [ ! -c "${VMCONFIG}" ]; then95. "${VMCONFIG}"96fi9798vm_create_base99vm_install_base100vm_emulation_setup101vm_extra_install_base102vm_extra_install_packages103vm_extra_install_ports104vm_extra_enable_services105vm_extra_pre_umount106vm_extra_pkg_rmcache107vm_emulation_cleanup108vm_copy_base109vm_create_disk || return 0110vm_extra_create_disk111112return 0113}114115main "$@"116117118