| #!/bin/bash |
| # |
| # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| # for details. All rights reserved. Use of this source code is governed by a |
| # BSD-style license that can be found in the LICENSE file. |
| # |
| # Script to create a Debian wheezy chroot environment for building Dart |
| # Debian packages. |
| # |
| |
| function usage { |
| USAGE="Usage: $0 i386|amd64 [target dir] [be|dev|<stable version>]]\n |
| \n |
| The first mandatory argument speciifies the CPU architecture using\n |
| the Debian convention (e.g. i386 and amd64).\n |
| \n |
| The second optional argument specifies the destination\n |
| directory. This defaults to 'debian_<architecture>'.\n |
| \n |
| The third optional argument specifies whether the chroot is\n |
| populated with a Dart checkout. Use 'be' for bleeding edge, 'dev'\n |
| for trunk/developer or the specific version number for a stable\n |
| version (e.g. 1.2)." |
| |
| echo -e $USAGE |
| exit 1 |
| } |
| |
| # Expect one to three arguments, architecture, optional directory and |
| # optional channel. |
| if [ $# -lt 1 ] || [ $# -gt 3 ] |
| then |
| usage |
| fi |
| |
| ARCH=$1 |
| |
| if [ -n "$2" ] |
| then |
| CHROOT=$2 |
| else |
| CHROOT=debian_$ARCH |
| fi |
| |
| if [ -n "$3" ] |
| then |
| CHANNEL=$3 |
| fi |
| |
| if [ "$ARCH" != "i386" ] && [ "$ARCH" != "amd64" ] |
| then |
| usage |
| fi |
| |
| SVN_REPRO="http://dart.googlecode.com/svn/" |
| if [ -n "$CHANNEL" ] |
| then |
| if [ "$CHANNEL" == "be" ] |
| then |
| SVN_PATH="branches/bleeding_edge/deps/all.deps" |
| elif [ "$CHANNEL" == "dev" ] |
| then |
| SVN_PATH="trunk/deps/all.deps" |
| else |
| SVN_PATH="branches/$CHANNEL/deps/all.deps" |
| fi |
| fi |
| SRC_URI=$SVN_REPRO$SVN_PATH |
| |
| # Create Debian wheezy chroot. |
| debootstrap --arch=$ARCH --components=main,restricted,universe,multiverse \ |
| wheezy $CHROOT http://http.us.debian.org/debian/ |
| chroot $CHROOT apt-get update |
| mount -o bind /proc $CHROOT/proc # Needed for openjdk-6-jdk. |
| chroot $CHROOT apt-get -y install \ |
| debhelper python g++-4.6 openjdk-6-jdk git subversion |
| |
| # Add chrome-bot user. |
| chroot $CHROOT groupadd --gid 1000 chrome-bot |
| chroot $CHROOT useradd --gid 1000 --uid 1000 --create-home chrome-bot |
| mkdir $CHROOT/b |
| chown 1000:1000 $CHROOT/b |
| |
| # Create trampoline script for running the initialization as chrome-bot. |
| cat << EOF > $CHROOT/b/init_chroot_trampoline.sh |
| #!/bin/sh |
| su -c /b/init_chroot.sh chrome-bot |
| EOF |
| |
| # Create initialization script which does nothing. |
| cat << 'EOF' > $CHROOT/b/init_chroot.sh |
| #!/bin/sh |
| cd /b |
| EOF |
| |
| # If the channel is set extend the initialization script to check out |
| # the Dart sources. This uses two cat commands as the first part needs |
| # to bypass variable interpretation. |
| if [ -n "$SRC_URI" ] |
| then |
| cat << 'EOF' >> $CHROOT/b/init_chroot.sh |
| git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git |
| export PATH=$PATH:/b/depot_tools |
| EOF |
| |
| cat << EOF >> $CHROOT/b/init_chroot.sh |
| gclient config $SRC_URI |
| gclient sync |
| gclient runhooks |
| EOF |
| fi |
| |
| chmod 755 $CHROOT/b/init_chroot_trampoline.sh |
| |
| chown 1000:1000 $CHROOT/b/init_chroot.sh |
| chmod 755 $CHROOT/b/init_chroot.sh |
| chroot $CHROOT /bin/sh /b/init_chroot_trampoline.sh |