release.sh (fb539361f71a6ae2f1123990d2d172036c7ecd60) release.sh (a12fa24967c5d53433d728392e91e8c67a3a6766)
1#!/bin/sh
2#-
3# Copyright (c) 2013-2015 The FreeBSD Foundation
4# Copyright (c) 2013 Glen Barber
5# Copyright (c) 2011 Nathan Whitehorn
6# All rights reserved.
7#
8# Portions of this software were developed by Glen Barber

--- 37 unchanged lines hidden (view full) ---

46load_target_env() { }
47buildenv_setup() { }
48
49usage() {
50 echo "Usage: $0 [-c release.conf]"
51 exit 1
52}
53
1#!/bin/sh
2#-
3# Copyright (c) 2013-2015 The FreeBSD Foundation
4# Copyright (c) 2013 Glen Barber
5# Copyright (c) 2011 Nathan Whitehorn
6# All rights reserved.
7#
8# Portions of this software were developed by Glen Barber

--- 37 unchanged lines hidden (view full) ---

46load_target_env() { }
47buildenv_setup() { }
48
49usage() {
50 echo "Usage: $0 [-c release.conf]"
51 exit 1
52}
53
54# env_setup(): Set up the default build environment variables, such as the
55# CHROOTDIR, VCSCMD, SVNROOT, etc. This is called before the release.conf
56# file is sourced, if '-c <release.conf>' is specified.
54env_setup() {
55 # The directory within which the release will be built.
56 CHROOTDIR="/scratch"
57 RELENGDIR="$(realpath $(dirname $(basename ${0})))"
58
59 # The default version control system command to obtain the sources.
60 VCSCMD="svn checkout"
61

--- 41 unchanged lines hidden (view full) ---

103 WITH_VMIMAGES=
104 WITH_COMPRESSED_VMIMAGES=
105 XZ_THREADS=0
106
107 # Set to non-empty value to build virtual machine images for various
108 # cloud providers as part of the release.
109 WITH_CLOUDWARE=
110
57env_setup() {
58 # The directory within which the release will be built.
59 CHROOTDIR="/scratch"
60 RELENGDIR="$(realpath $(dirname $(basename ${0})))"
61
62 # The default version control system command to obtain the sources.
63 VCSCMD="svn checkout"
64

--- 41 unchanged lines hidden (view full) ---

106 WITH_VMIMAGES=
107 WITH_COMPRESSED_VMIMAGES=
108 XZ_THREADS=0
109
110 # Set to non-empty value to build virtual machine images for various
111 # cloud providers as part of the release.
112 WITH_CLOUDWARE=
113
111 CHROOT_MAKEENV="${CHROOT_MAKEENV} MAKEOBJDIRPREFIX=${CHROOTDIR}/tmp/obj"
112 CHROOT_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${CONF_FILES}"
113 CHROOT_IMAKEFLAGS="${CONF_FILES}"
114 CHROOT_DMAKEFLAGS="${CONF_FILES}"
115 RELEASE_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${ARCH_FLAGS} ${CONF_FILES}"
116 RELEASE_KMAKEFLAGS="${MAKE_FLAGS} ${KERNEL_FLAGS} KERNCONF=\"${KERNEL}\" ${ARCH_FLAGS} ${CONF_FILES}"
117 RELEASE_RMAKEFLAGS="${ARCH_FLAGS} KERNCONF=\"${KERNEL}\" ${CONF_FILES} \
118 ${DOCPORTS} WITH_DVD=${WITH_DVD} WITH_VMIMAGES=${WITH_VMIMAGES} \
119 WITH_CLOUDWARE=${WITH_CLOUDWARE} XZ_THREADS=${XZ_THREADS}"
120
121 return 0
122} # env_setup()
123
114 return 0
115} # env_setup()
116
117# env_check(): Perform sanity tests on the build environment, such as ensuring
118# files/directories exist, as well as adding backwards-compatibility hacks if
119# necessary. This is called unconditionally, and overrides the defaults set
120# in env_setup() if '-c <release.conf>' is specified.
124env_check() {
125 # Fix for backwards-compatibility with release.conf that does not have the
126 # trailing '/'.
127 case ${SVNROOT} in
128 *svn*)
129 SVNROOT="${SVNROOT}/"
130 ;;
131 *)

--- 50 unchanged lines hidden (view full) ---

182 exit 1
183 fi
184
185 if [ $(id -u) -ne 0 ]; then
186 echo "Needs to be run as root."
187 exit 1
188 fi
189
121env_check() {
122 # Fix for backwards-compatibility with release.conf that does not have the
123 # trailing '/'.
124 case ${SVNROOT} in
125 *svn*)
126 SVNROOT="${SVNROOT}/"
127 ;;
128 *)

--- 50 unchanged lines hidden (view full) ---

179 exit 1
180 fi
181
182 if [ $(id -u) -ne 0 ]; then
183 echo "Needs to be run as root."
184 exit 1
185 fi
186
187 CHROOT_MAKEENV="${CHROOT_MAKEENV} MAKEOBJDIRPREFIX=${CHROOTDIR}/tmp/obj"
188 CHROOT_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${CONF_FILES}"
189 CHROOT_IMAKEFLAGS="${CONF_FILES}"
190 CHROOT_DMAKEFLAGS="${CONF_FILES}"
191 RELEASE_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${ARCH_FLAGS} ${CONF_FILES}"
192 RELEASE_KMAKEFLAGS="${MAKE_FLAGS} ${KERNEL_FLAGS} KERNCONF=\"${KERNEL}\" ${ARCH_FLAGS} ${CONF_FILES}"
193 RELEASE_RMAKEFLAGS="${ARCH_FLAGS} KERNCONF=\"${KERNEL}\" ${CONF_FILES} \
194 ${DOCPORTS} WITH_DVD=${WITH_DVD} WITH_VMIMAGES=${WITH_VMIMAGES} \
195 WITH_CLOUDWARE=${WITH_CLOUDWARE} XZ_THREADS=${XZ_THREADS}"
196
190 return 0
191} # env_check()
192
197 return 0
198} # env_check()
199
200# chroot_setup(): Prepare the build chroot environment for the release build.
193chroot_setup() {
194 load_chroot_env
195 mkdir -p ${CHROOTDIR}/usr
196
197 if [ -z "${SRC_UPDATE_SKIP}" ]; then
198 ${VCSCMD} ${FORCE_SRC_KEY} ${SRCBRANCH} ${CHROOTDIR}/usr/src
199 fi
200 if [ -z "${NODOC}" ] && [ -z "${DOC_UPDATE_SKIP}" ]; then

--- 12 unchanged lines hidden (view full) ---

213 DESTDIR=${CHROOTDIR}
214 fi
215 mount -t devfs devfs ${CHROOTDIR}/dev
216 cp /etc/resolv.conf ${CHROOTDIR}/etc/resolv.conf
217
218 return 0
219} # chroot_setup()
220
201chroot_setup() {
202 load_chroot_env
203 mkdir -p ${CHROOTDIR}/usr
204
205 if [ -z "${SRC_UPDATE_SKIP}" ]; then
206 ${VCSCMD} ${FORCE_SRC_KEY} ${SRCBRANCH} ${CHROOTDIR}/usr/src
207 fi
208 if [ -z "${NODOC}" ] && [ -z "${DOC_UPDATE_SKIP}" ]; then

--- 12 unchanged lines hidden (view full) ---

221 DESTDIR=${CHROOTDIR}
222 fi
223 mount -t devfs devfs ${CHROOTDIR}/dev
224 cp /etc/resolv.conf ${CHROOTDIR}/etc/resolv.conf
225
226 return 0
227} # chroot_setup()
228
229# extra_chroot_setup(): Prepare anything additional within the build
230# necessary for the release build.
221extra_chroot_setup() {
222 # If MAKE_CONF and/or SRC_CONF are set and not character devices (/dev/null),
223 # copy them to the chroot.
224 if [ -e ${MAKE_CONF} ] && [ ! -c ${MAKE_CONF} ]; then
225 mkdir -p ${CHROOTDIR}/$(dirname ${MAKE_CONF})
226 cp ${MAKE_CONF} ${CHROOTDIR}/${MAKE_CONF}
227 fi
228 if [ -e ${SRC_CONF} ] && [ ! -c ${SRC_CONF} ]; then

--- 19 unchanged lines hidden (view full) ---

248 ${PBUILD_FLAGS} OPTIONS_UNSET="FOP IGOR" \
249 install clean distclean
250 fi
251 fi
252
253 return 0
254} # extra_chroot_setup()
255
231extra_chroot_setup() {
232 # If MAKE_CONF and/or SRC_CONF are set and not character devices (/dev/null),
233 # copy them to the chroot.
234 if [ -e ${MAKE_CONF} ] && [ ! -c ${MAKE_CONF} ]; then
235 mkdir -p ${CHROOTDIR}/$(dirname ${MAKE_CONF})
236 cp ${MAKE_CONF} ${CHROOTDIR}/${MAKE_CONF}
237 fi
238 if [ -e ${SRC_CONF} ] && [ ! -c ${SRC_CONF} ]; then

--- 19 unchanged lines hidden (view full) ---

258 ${PBUILD_FLAGS} OPTIONS_UNSET="FOP IGOR" \
259 install clean distclean
260 fi
261 fi
262
263 return 0
264} # extra_chroot_setup()
265
266# chroot_build_target(): Build the userland and kernel for the build target.
256chroot_build_target() {
257 buildenv_setup
258 load_target_env
259 eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_WMAKEFLAGS} buildworld
260 eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_KMAKEFLAGS} buildkernel
261
262 # Embedded builds do not use the 'make release' target.
263 if [ -n "${EMBEDDEDBUILD}" ]; then

--- 18 unchanged lines hidden (view full) ---

282 else
283 # Not embedded.
284 return 0
285 fi
286
287 return 0
288} # chroot_build_target
289
267chroot_build_target() {
268 buildenv_setup
269 load_target_env
270 eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_WMAKEFLAGS} buildworld
271 eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_KMAKEFLAGS} buildkernel
272
273 # Embedded builds do not use the 'make release' target.
274 if [ -n "${EMBEDDEDBUILD}" ]; then

--- 18 unchanged lines hidden (view full) ---

293 else
294 # Not embedded.
295 return 0
296 fi
297
298 return 0
299} # chroot_build_target
300
301# chroot_build_release(): Invoke the 'make release' target.
290chroot_build_release() {
291 buildenv_setup
292 load_target_env
293 eval chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
294 release
295 eval chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
296 install DESTDIR=/R WITH_COMPRESSED_IMAGES=${WITH_COMPRESSED_IMAGES} \
297 WITH_COMPRESSED_VMIMAGES=${WITH_COMPRESSED_VMIMAGES}
298
299 return 0
300} # chroot_build_release()
301
302chroot_build_release() {
303 buildenv_setup
304 load_target_env
305 eval chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
306 release
307 eval chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
308 install DESTDIR=/R WITH_COMPRESSED_IMAGES=${WITH_COMPRESSED_IMAGES} \
309 WITH_COMPRESSED_VMIMAGES=${WITH_COMPRESSED_VMIMAGES}
310
311 return 0
312} # chroot_build_release()
313
314# main(): Start here.
302main() {
303 set -e # Everything must succeed
304 env_setup
305 while getopts c: opt; do
306 case ${opt} in
307 c)
308 RELEASECONF="${OPTARG}"
309 if [ ! -e "${RELEASECONF}" ]; then

--- 23 unchanged lines hidden ---
315main() {
316 set -e # Everything must succeed
317 env_setup
318 while getopts c: opt; do
319 case ${opt} in
320 c)
321 RELEASECONF="${OPTARG}"
322 if [ ! -e "${RELEASECONF}" ]; then

--- 23 unchanged lines hidden ---