From owner-svn-src-projects@FreeBSD.ORG Fri Apr 18 15:46:44 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2E86EB25; Fri, 18 Apr 2014 15:46:44 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1AF1B1DBA; Fri, 18 Apr 2014 15:46:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s3IFkhKO017623; Fri, 18 Apr 2014 15:46:43 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s3IFkhLl017621; Fri, 18 Apr 2014 15:46:43 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201404181546.s3IFkhLl017621@svn.freebsd.org> From: Glen Barber Date: Fri, 18 Apr 2014 15:46:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r264649 - projects/release-embedded/release/cloudware X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Apr 2014 15:46:44 -0000 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 "$@"