Skip site navigation (1)Skip section navigation (2)
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>