[26624] in Source-Commits
/svn/athena r25661 - trunk/debathena/scripts/build-server
daemon@ATHENA.MIT.EDU (Jonathan D Reed)
Thu Jul 26 11:35:35 2012
Date: Thu, 26 Jul 2012 11:35:33 -0400
From: Jonathan D Reed <jdreed@MIT.EDU>
Message-Id: <201207261535.q6QFZXup030482@drugstore.mit.edu>
To: source-commits@MIT.EDU
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Author: jdreed
Date: 2012-07-26 11:35:33 -0400 (Thu, 26 Jul 2012)
New Revision: 25661
Modified:
trunk/debathena/scripts/build-server/make-chroot
Log:
- Deal with /run chroots
- Allow $DATA to be overridden for testing purposes
- Add -d option for debugging which won't nuke the directory
on a failure
Modified: trunk/debathena/scripts/build-server/make-chroot
===================================================================
--- trunk/debathena/scripts/build-server/make-chroot 2012-07-25 21:20:24 UTC (rev 25660)
+++ trunk/debathena/scripts/build-server/make-chroot 2012-07-26 15:35:33 UTC (rev 25661)
@@ -6,16 +6,23 @@
# and architecture ARCH, and sets up schroot configuration for it.
# Assumes an approx cache is running at localhost:9999.
+DEBUG=0
BZ2=0
-if [ "$1" = "-z" ]; then
- BZ2=1
- shift
-fi
+while getopts 'dz' opt; do
+ case "$opt" in
+ d)
+ DEBUG=1;;
+ z)
+ BZ2=1;;
+ esac
+done
+shift $((OPTIND-1))
set -xe
: ${CHROOTDIR=/srv}
: ${MIRRORHOST=localhost:9999}
+: ${DATA="$(dirname "$0")"}
SUITE=$1
ARCH=$2
CHROOT="${SUITE}-${ARCH}-sbuild"
@@ -51,8 +58,6 @@
exit 1
fi
-DATA="$(dirname "$0")"
-
SOURCESD="$DATA/sources.list.d"
if [ -e "$SOURCESD/debian/$SUITE.list" ]; then
SOURCES="$SOURCESD/debian/$SUITE.list"
@@ -65,16 +70,29 @@
exit 1
fi
-exittrap() { rm -rf "$TMPDIR" || :; }
+exittrap() {
+ if [ $DEBUG -ne 1 ]; then
+ rm -rf "$TMPDIR" || :
+ else
+ echo "DEBUG MODE: Clean up $TMPDIR by hand!"
+ fi
+}
TMPDIR=$(mktemp -d /var/tmp/make-chroot.XXXXXX)
TARGET="$TMPDIR/root"
+SCRIPTCFG="default/config"
debootstrap --variant=buildd --include=apt,apt-utils,gnupg,build-essential,fakeroot --arch "$ARCH" "$SUITE" "$TARGET" "$MIRROR"
install -m a=rx,u+w "$DATA/policy-rc.d" "$TARGET/usr/sbin/"
mkdir -p "$TARGET/dev/pts"
# /dev/shm is a symlink to /run/shm on modern distros
# So if it's not a symlink, then mkdir (and fail if it's something
-# that's not a symlink or a directory)
-[ -L "$TARGET/dev/shm" ] || mkdir -p "$TARGET/dev/shm"
+# that's not a symlink or a directory) and we have to use an schroot
+# config that bind-mounts /run/shm instead of /dev/shm
+if [ -L "$TARGET/dev/shm" ] &&
+ [ "$(readlink "$TARGET/dev/shm")" = "/run/shm" ]; then
+ SCRIPTCFG="default-slash-run/config"
+else
+ mkdir -p "$TARGET/dev/shm"
+fi
mkdir -p "$TARGET/afs"
mkdir -p "$TARGET/mit"
TAROPTS="cf"
@@ -91,6 +109,7 @@
groups=root,sbuild
root-groups=root,sbuild
source-groups=root
+script-config=$SCRIPTCFG
file=$FILE
location=/root
personality=$PERSONALITY