svn commit: r264649 - projects/release-embedded/release/cloudware
Glen Barber
gjb at FreeBSD.org
Fri Apr 18 15:46:44 UTC 2014
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 "$@"
More information about the svn-src-projects
mailing list