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 --- |