diff options
author | humper <humper@google.com> | 2014-10-01 14:27:31 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-01 14:27:31 -0700 |
commit | b77955e1b1b94f5a472b4f5fc620d5dc83425a1f (patch) | |
tree | 0c8a9358ce4a2bf6d6d347ce35cb15c94f528eab /experimental/webtry/setup | |
parent | 4942e7550ec80796132ab1ce2cc935a5dd1b464c (diff) |
complete overhaul of webtry work partition between jail and host
BUG=skia:
Review URL: https://codereview.chromium.org/619943002
Diffstat (limited to 'experimental/webtry/setup')
-rwxr-xr-x | experimental/webtry/setup/continue_install | 61 | ||||
-rwxr-xr-x | experimental/webtry/setup/continue_install.sh | 32 | ||||
-rwxr-xr-x | experimental/webtry/setup/continue_install_jail.sh | 42 | ||||
-rwxr-xr-x | experimental/webtry/setup/setup_jail.sh | 6 | ||||
-rwxr-xr-x | experimental/webtry/setup/webtry_setup.sh | 48 |
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 |