]> git.wh0rd.org - home.git/blobdiff - .bin/cros-cbuildbot
test.cc: new C++ test
[home.git] / .bin / cros-cbuildbot
index 7784d465d07b6c5e9264c863493e02b6b87923d2..cdc6b43db2dce5bacd6e86053c6f25eece73ad06 100755 (executable)
@@ -1,20 +1,76 @@
 #!/bin/bash
 
+set -e
+
+vexec() {
+       local i fmt
+       for (( i = 1; i <= $#; ++i )) ; do
+               case ${!i} in
+               *" "*) fmt="'%s'";;
+               *) fmt="%s";;
+               esac
+               printf "${fmt}" "${!i}"
+               if [[ $i -lt $# ]] ; then
+                       printf ' '
+               else
+                       echo
+               fi
+       done
+       exec "$@"
+}
+
+cd ~/chromiumos
+
 d=/usr/local/google/home/vapier
-if [[ -d ${d} ]] ; then
-       d+="/trybot"
-       if mount | grep -qs $d ; then
-               echo "mounts found in $d"
+if [[ ! -d ${d} ]] ; then
+       exit 1
+fi
+
+if [[ -z ${UNSHARE} ]] ; then
+       if type -P unshare >&/dev/null ; then
+               exec sudo unshare -m -- sudo -u ${USER} \
+                       UNSHARE=true PATH="${PATH}" "$0" "$@"
+       fi
+       unset UNSHARE
+fi
+
+d+="/trybot"
+mkdir -p "${d}"
+if mount | grep -qs $d ; then
+       echo "mounts found in $d"
+       exit 1
+fi
+if [[ -L $d ]] ; then
+       rd=$(readlink $d)
+       if mount | grep -qs $rd ; then
+               echo "mounts found in $rd"
                exit 1
        fi
+fi
 
+if [[ $1 == "--noclean" ]] ; then
+       shift
+elif [[ " $* " != *" --remote "* ]] ; then
        echo "Cleaning ${d}"
-       sudo rm -rf ${d}
-else
-       exit 1
+       pushd "${d}" >/dev/null
+       clean=(
+               built-sdk.tbz2
+#              chroot
+               new-sdk-chroot
+               sdks
+               src/build
+               test_results.tgz
+               trybot_archive
+       )
+       sudo rm -rf "${clean[@]}"
+#      [[ -L .cache ]] && rm -f .cache || :
+#      mkdir -p .cache
+#      sudo mount --bind -n ~/chromiumos/.cache .cache
+       popd >/dev/null
 fi
 
 # find all the buildbot branches
+echo "Looking up repo branches"
 repos=$(r b | cut -b4- | awk '$1 == "bb" {
        # Single repo output:
        #   bb                        | in src/third_party/portage-stable
@@ -42,6 +98,6 @@ if [[ -n ${repos} ]] ; then
 
        set -- -p "${p_flag}" "$@"
 fi
+set -- --cache-dir=~/chromiumos/.cache "$@"
 
-vexec() { echo "$@"; exec "$@"; }
 vexec cbuildbot --buildroot=${d} "$@"