]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - release/scripts/mk-vmimage.sh
MFV: zlib: examples: define functions as static ones. (PR #855)
[FreeBSD/FreeBSD.git] / release / scripts / mk-vmimage.sh
1 #!/bin/sh
2 #-
3 # Copyright (c) 2014, 2015 The FreeBSD Foundation
4 #
5 # This software was developed by Glen Barber under sponsorship
6 # from the FreeBSD Foundation.
7 #
8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions
10 # are met:
11 # 1. Redistributions of source code must retain the above copyright
12 #    notice, this list of conditions and the following disclaimer.
13 # 2. Redistributions in binary form must reproduce the above copyright
14 #    notice, this list of conditions and the following disclaimer in the
15 #    documentation and/or other materials provided with the distribution.
16 #
17 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 # SUCH DAMAGE.
28 #
29 # mk-vmimage.sh: Create virtual machine disk images in various formats.
30 #
31 #
32
33 usage() {
34         echo "${0} usage:"
35         echo "${@}"
36         return 1
37 }
38
39 main() {
40         local arg
41         VMCONFIG="/dev/null"
42         while getopts "C:c:d:F:f:i:o:s:S:" arg; do
43                 case "${arg}" in
44                         C)
45                                 VMBUILDCONF="${OPTARG}"
46                                 ;;
47                         c)
48                                 VMCONFIG="${OPTARG}"
49                                 ;;
50                         d)
51                                 DESTDIR="${OPTARG}"
52                                 ;;
53                         F)
54                                 VMFS="${OPTARG}"
55                                 ;;
56                         f)
57                                 VMFORMAT="${OPTARG}"
58                                 ;;
59                         i)
60                                 VMBASE="${OPTARG}"
61                                 ;;
62                         o)
63                                 VMIMAGE="${OPTARG}"
64                                 ;;
65                         s)
66                                 VMSIZE="${OPTARG}"
67                                 ;;
68                         S)
69                                 WORLDDIR="${OPTARG}"
70                                 ;;
71                         *)
72                                 ;;
73                 esac
74         done
75         shift $(( ${OPTIND} - 1))
76
77         if [ -z "${VMBASE}" -o \
78                 -z "${WORLDDIR}" -o \
79                 -z "${DESTDIR}" -o \
80                 -z "${VMSIZE}" -o \
81                 -z "${VMIMAGE}" -o \
82                 -z "${VMFS}" ];
83         then
84                 usage || exit 0
85         fi
86
87         if [ -z "${VMBUILDCONF}" ] || [ ! -e "${VMBUILDCONF}" ]; then
88                 echo "Must provide the path to vmimage.subr."
89                 return 1
90         fi
91
92         . "${VMBUILDCONF}"
93
94         if [ ! -z "${VMCONFIG}" ] && [ ! -c "${VMCONFIG}" ]; then
95                 . "${VMCONFIG}"
96         fi
97
98         vm_create_base
99         vm_install_base
100         vm_extra_install_base
101         vm_extra_install_packages
102         vm_extra_install_ports
103         vm_extra_enable_services
104         vm_extra_pre_umount
105         vm_extra_pkg_rmcache
106         cleanup
107         vm_copy_base
108         vm_create_disk || return 0
109         vm_extra_create_disk
110
111         return 0
112 }
113
114 main "$@"