aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/webtry/setup
diff options
context:
space:
mode:
authorGravatar humper <humper@google.com>2014-10-01 14:27:31 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-10-01 14:27:31 -0700
commitb77955e1b1b94f5a472b4f5fc620d5dc83425a1f (patch)
tree0c8a9358ce4a2bf6d6d347ce35cb15c94f528eab /experimental/webtry/setup
parent4942e7550ec80796132ab1ce2cc935a5dd1b464c (diff)
complete overhaul of webtry work partition between jail and host
Diffstat (limited to 'experimental/webtry/setup')
-rwxr-xr-xexperimental/webtry/setup/continue_install61
-rwxr-xr-xexperimental/webtry/setup/continue_install.sh32
-rwxr-xr-xexperimental/webtry/setup/continue_install_jail.sh42
-rwxr-xr-xexperimental/webtry/setup/setup_jail.sh6
-rwxr-xr-xexperimental/webtry/setup/webtry_setup.sh48
5 files changed, 112 insertions, 77 deletions
diff --git a/experimental/webtry/setup/continue_install b/experimental/webtry/setup/continue_install
deleted file mode 100755
index 405d0dc3d9..0000000000
--- a/experimental/webtry/setup/continue_install
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/bash
-#
-# Don't execute this script directly, instead it is copied into the webtry
-# user's directory and executed as the user webtry by the webtry_setup.sh
-# script.
-#
-# See the README file for detailed installation instructions.
-cd
-pwd
-
-# Install depot_tools.
-if [ -d depot_tools ]; then
- (cd depot_tools && git pull);
-else
- git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git;
-fi
-export PATH=$PATH:$HOME/depot_tools
-
-# Install Go
-if [ -d go ]; then
- echo Go already installed.
-else
- wget https://go.googlecode.com/files/go1.2.1.linux-amd64.tar.gz
- tar -xzf go1.2.1.linux-amd64.tar.gz
-fi
-export GOROOT=$HOME/go
-mkdir=$HOME/golib
-export GOPATH=$HOME/golib
-
-export PATH=$PATH:$GOROOT/bin
-
-mkdir /home/webtry/cache
-mkdir /home/webtry/cache/src
-mkdir /home/webtry/inout
-chmod 777 /home/webtry/inout
-
-# Sometimes you need to test patches on the server, to do that uncomment
-# the following commented out lines and update the PATCH env variable to the
-# name of the codereview to use.
-
-# rm -rf skia
-
-# Checkout the skia code and dependencies.
-mkdir skia
-cd skia
-gclient config --name . https://skia.googlesource.com/skia.git
-gclient sync
-git checkout master
-
-# PATCH=issue196723021_100001.diff
-# rm $PATCH
-# wget https://codereview.chromium.org/download/$PATCH
-# git apply $PATCH
-
-GYP_GENERATORS=ninja ./gyp_skia gyp/webtry.gyp gyp/most.gyp -Dskia_gpu=0
-ninja -C out/Release webtry
-
-cd experimental/webtry
-
-go get -d
-./build \ No newline at end of file
diff --git a/experimental/webtry/setup/continue_install.sh b/experimental/webtry/setup/continue_install.sh
new file mode 100755
index 0000000000..3cf54570cc
--- /dev/null
+++ b/experimental/webtry/setup/continue_install.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+#
+# The continue_install script updates the jail's copy of depot tools and the latest
+# verion of skia. It then builds the skia libraries inside the jail, and builds the webtry
+# server outside the jail.
+#
+# See the README file for detailed installation instructions.
+
+CHROOT_JAIL=/srv/chroot/webtry_gyp
+sudo cp continue_install_jail.sh ${CHROOT_JAIL}/bin/continue_install_jail.sh
+sudo chmod 755 ${CHROOT_JAIL}/bin/continue_install_jail.sh
+sudo chroot ${CHROOT_JAIL} /bin/continue_install_jail.sh
+sudo chown -R webtry:webtry ${CHROOT_JAIL}/skia_build/skia
+cd
+
+# Install Go
+if [ -d go ]; then
+ echo Go already installed.
+else
+ wget https://storage.googleapis.com/golang/go1.3.3.linux-amd64.tar.gz
+ tar -xzf go1.3.3.linux-amd64.tar.gz
+fi
+
+mkdir ${HOME}/golib
+export GOROOT=${HOME}/go
+export GOPATH=${HOME}/golib
+export PATH=$PATH:$GOROOT/bin
+
+cd skia/experimental/webtry
+
+go get -d
+./build
diff --git a/experimental/webtry/setup/continue_install_jail.sh b/experimental/webtry/setup/continue_install_jail.sh
new file mode 100755
index 0000000000..7c303bb96f
--- /dev/null
+++ b/experimental/webtry/setup/continue_install_jail.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+# this script runs as root inside the chroot environment and updates the depot tools, go environment,
+# and skia source.
+
+# need to mount /dev/shm first so that python will execute properly.
+
+mount /dev/shm
+
+SKIA_BUILD=/skia_build
+cd ${SKIA_BUILD}
+
+# Install depot_tools.
+if [ -d depot_tools ]; then
+ (cd depot_tools && git pull);
+else
+ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git;
+fi
+export PATH=$PATH:${SKIA_BUILD}/depot_tools
+
+# Sometimes you need to test patches on the server, to do that uncomment
+# the following commented out lines and update the PATCH env variable to the
+# name of the codereview to use.
+
+# rm -rf skia
+
+# Checkout the skia code and dependencies.
+mkdir skia
+cd skia
+gclient config --name . https://skia.googlesource.com/skia.git
+gclient sync
+git checkout master
+
+# PATCH=issue196723021_100001.diff
+# rm $PATCH
+# wget https://codereview.chromium.org/download/$PATCH
+# git apply $PATCH
+
+SKIA_GYP_OUTPUT_DIR=${SKIA_BUILD}/skia/out GYP_GENERATORS=ninja ./gyp_skia -Dskia_gpu=0
+
+ninja -C ${SKIA_BUILD}/skia/out/Release skia_lib libjpeg libSkKTX libetc1 flags
+
diff --git a/experimental/webtry/setup/setup_jail.sh b/experimental/webtry/setup/setup_jail.sh
new file mode 100755
index 0000000000..6b50c3bf5d
--- /dev/null
+++ b/experimental/webtry/setup/setup_jail.sh
@@ -0,0 +1,6 @@
+apt-get install -y g++ libfreetype6 libfreetype6-dev libpng12-0 libpng12-dev libglu1-mesa-dev mesa-common-dev freeglut3-dev libgif-dev libfontconfig libfontconfig-dev git python wget
+
+mkdir /skia_build
+chmod 777 /skia_build
+
+mkdir /skia_build/bin
diff --git a/experimental/webtry/setup/webtry_setup.sh b/experimental/webtry/setup/webtry_setup.sh
index 3a8e063231..818135276c 100755
--- a/experimental/webtry/setup/webtry_setup.sh
+++ b/experimental/webtry/setup/webtry_setup.sh
@@ -3,32 +3,48 @@
# Script to setup a GCE instance to run the webtry server.
# For full instructions see the README file.
sudo apt-get install schroot debootstrap monit squid3
-sudo apt-get install g++ libfreetype6 libfreetype6-dev libpng12-0 libpng12-dev libglu1-mesa-dev mesa-common-dev freeglut3-dev libgif-dev libfontconfig libfontconfig-dev
+
+# although aufs is being replaced by overlayfs, it's not clear
+# to me if overlayfs is completely supported by schroot yet.
+sudo apt-get install aufs-tools
echo "Adding the webtry user account"
sudo adduser webtry
-sudo cp continue_install /home/webtry/continue_install
-sudo chmod 766 /home/webtry/continue_install
-sudo chown webtry:webtry /home/webtry/continue_install
-sudo su webtry -c /home/webtry/continue_install
+sudo mkdir /home/webtry/cache
+sudo mkdir /home/webtry/cache/src
+sudo mkdir /home/webtry/inout
+sudo chmod 777 /home/webtry/inout
+sudo chmod 777 /home/webtry/cache
+sudo chmod 777 /home/webtry/cache/src
+
+sudo cp ../sys/webtry_schroot /etc/schroot/chroot.d/webtry
-sudo mkdir -p /srv/chroot/webtry
-sudo cp /home/webtry/skia/experimental/webtry/sys/webtry_schroot /etc/schroot/chroot.d/webtry
+CHROOT_JAIL=/srv/chroot/webtry_gyp
+# Build the chroot environment
+if [ ! -d ${CHROOT_JAIL} ]; then
+ sudo mkdir -p ${CHROOT_JAIL}
-sudo mkdir /srv/chroot/webtry/etc
-sudo mkdir /srv/chroot/webtry/bin
-sudo cp /bin/sh /srv/chroot/webtry/bin/sh
+ sudo debootstrap --variant=minbase wheezy ${CHROOT_JAIL}
+ sudo cp setup_jail.sh ${CHROOT_JAIL}/bin
+ sudo chmod 755 ${CHROOT_JAIL}/bin/setup_jail.sh
+ sudo chroot ${CHROOT_JAIL} /bin/setup_jail.sh
+ sudo echo "none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0" >> ${CHROOT_JAIL}/etc/fstab
+fi
-# Copy all the dependent libraries into the schroot.
-sudo cp --parents `ldd /home/webtry/skia/out/Debug/webtry | cut -d " " -f 3` /srv/chroot/webtry
-sudo cp --parents `ldd /bin/sh | cut -d " " -f 3` /srv/chroot/webtry
+# the continue_install script will fetch the latest versions of
+# skia and depot_tools. We split up the installation process into
+# two pieces like this so that the continue_install script can
+# be run independently of this one to fetch and build the latest skia.
-sudo cp /home/webtry/skia/experimental/webtry/sys/webtry_init /etc/init.d/webtry
-sudo cp /home/webtry/skia/experimental/webtry/sys/webtry_monit /etc/monit/conf.d/webtry
-sudo cp /home/webtry/skia/experimental/webtry/sys/webtry_squid /etc/squid3/squid.conf
+./continue_install.sh
+
+sudo cp ../sys/webtry_init /etc/init.d/webtry
+sudo cp ../sys/webtry_monit /etc/monit/conf.d/webtry
+sudo cp ../sys/webtry_squid /etc/squid3/squid.conf
sudo chmod 744 /etc/init.d/webtry
# Confirm that monit is happy.
+
sudo monit -t
sudo monit reload