Date: Fri, 18 Apr 2014 15:46:43 +0000 (UTC) From: Glen Barber <gjb@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r264649 - projects/release-embedded/release/cloudware Message-ID: <201404181546.s3IFkhLl017621@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: gjb Date: Fri Apr 18 15:46:43 2014 New Revision: 264649 URL: http://svnweb.freebsd.org/changeset/base/264649 Log: Add a _chroot() helper function which evaluates TGTISCHROOT. If TGTISCHROOT is set to a non-empty value, command arguments are run through chroot(8), otherwise are run directly without chroot(8). Add a few additional variables: o RELDIR: the directory the result from 'make install' in the release/ directory. o EC2DIR: the work directory for the EC2 image build. o EC2IMG: the md(4) backing file for the image build. o EC2SIZE: the size of the image to create. Add some functionality to diskbuild() to create the md(4) backing file, and destroy it when done. Sponsored by: The FreeBSD Foundation Modified: projects/release-embedded/release/cloudware/ec2.conf projects/release-embedded/release/cloudware/release-ec2.sh Modified: projects/release-embedded/release/cloudware/ec2.conf ============================================================================== --- projects/release-embedded/release/cloudware/ec2.conf Fri Apr 18 15:22:56 2014 (r264648) +++ projects/release-embedded/release/cloudware/ec2.conf Fri Apr 18 15:46:43 2014 (r264649) @@ -6,4 +6,21 @@ # Configuration file for Amazon EC2 AMI builds. +## Set to a non-empty value if the release build was not done +## in a chroot(8), or we are already inside the chroot(8). +#TGTISCHROOT= + +## Set to the directory the release bits have been installed. +#RELDIR="/R" + +## Set to the directory the EC2 work directory. +#EC2DIR="/EC2" + +## Set to the backing vnode file for the md(4) disk. +#EC2IMG="${EC2DIR}/ec2.img" + +## Set to the size of the backing image file. See truncate(1) +## for valid syntax. +#EC2SIZE="25G" + return 0 Modified: projects/release-embedded/release/cloudware/release-ec2.sh ============================================================================== --- projects/release-embedded/release/cloudware/release-ec2.sh Fri Apr 18 15:22:56 2014 (r264648) +++ projects/release-embedded/release/cloudware/release-ec2.sh Fri Apr 18 15:46:43 2014 (r264649) @@ -41,14 +41,52 @@ RELENGDIR="$(realpath $(dirname $(basena # Default settings if a configuration file is not specified: CHROOTDIR="/scratch" +RELDIR="/R" +EC2DIR="/EC2" +EC2IMG="${EC2DIR}/ec2.img" +EC2SIZE="25G" CONF="${RELENGDIR}/ec2.conf" +TGTISCHROOT=1 usage() { echo "${0} [-c /path/to/configuration/file]" exit 1 } -diskbuild() {} +err() { + echo "$@" + exit 1 +} + +_chroot() { + if [ -n "${TGTISCHROOT}" ]; then + eval chroot ${CHROOTDIR} "$@" + else + eval "$@" + fi + return $? +} + +diskbuild() { + if [ -n "${TGTISCHROOT}" ]; then + test -d ${CHROOTDIR} || \ + err "Chroot directory ${CHROOTDIR} missing." + fi + _chroot mkdir -p ${RELDIR} || \ + err "Could not create directory ${RELDIR}" + _chroot mkdir -p ${EC2DIR} || \ + err "Could not create directory ${EC2DIR}" + _chroot test -e ${EC2IMG} && \ + err "Image file ${EC2IMG} already exists." + _chroot truncate -s ${EC2SIZE} ${EC2IMG} || \ + err "Could not create file ${EC2IMG}" + mddev=$(_chroot mdconfig -a -t vnode -f ${EC2IMG}) || \ + err "Could not attach ${EC2IMG} to md(4)." + + _chroot mdconfig -d -u ${mddev} + return 0 +} + imagebuild() {} pushami() {} @@ -65,6 +103,8 @@ main() { done shift $(( ${OPTIND} - 1 )) . ${CONF} + + diskbuild } main "$@"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201404181546.s3IFkhLl017621>