]> git.wh0rd.org - home.git/blob - .bin/cros-cbuildbot
cros-board: update
[home.git] / .bin / cros-cbuildbot
1 #!/bin/bash
2
3 set -e
4
5 vexec() {
6 local i fmt
7 for (( i = 1; i <= $#; ++i )) ; do
8 case ${!i} in
9 *" "*) fmt="'%s'";;
10 *) fmt="%s";;
11 esac
12 printf "${fmt}" "${!i}"
13 if [[ $i -lt $# ]] ; then
14 printf ' '
15 else
16 echo
17 fi
18 done
19 exec "$@"
20 }
21
22 cd ~/chromiumos
23
24 d=/usr/local/google/home/vapier
25 if [[ ! -d ${d} ]] ; then
26 exit 1
27 fi
28
29 if [[ -z ${UNSHARE} ]] ; then
30 if type -P unshare >&/dev/null ; then
31 exec sudo unshare -m -- sudo -u ${USER} \
32 UNSHARE=true PATH="${PATH}" "$0" "$@"
33 fi
34 unset UNSHARE
35 fi
36
37 d+="/trybot"
38 mkdir -p "${d}"
39 if mount | grep -qs $d ; then
40 echo "mounts found in $d"
41 exit 1
42 fi
43 if [[ -L $d ]] ; then
44 rd=$(readlink $d)
45 if mount | grep -qs $rd ; then
46 echo "mounts found in $rd"
47 exit 1
48 fi
49 fi
50
51 if [[ $1 == "--noclean" ]] ; then
52 shift
53 elif [[ " $* " != *" --remote "* ]] ; then
54 echo "Cleaning ${d}"
55 pushd "${d}" >/dev/null
56 clean=(
57 built-sdk.tbz2
58 # chroot
59 new-sdk-chroot
60 sdks
61 src/build
62 test_results.tgz
63 trybot_archive
64 )
65 sudo rm -rf "${clean[@]}"
66 # [[ -L .cache ]] && rm -f .cache || :
67 # mkdir -p .cache
68 # sudo mount --bind -n ~/chromiumos/.cache .cache
69 popd >/dev/null
70 fi
71
72 # find all the buildbot branches
73 echo "Looking up repo branches"
74 repos=$(r b | cut -b4- | awk '$1 == "bb" {
75 # Single repo output:
76 # bb | in src/third_party/portage-stable
77 # Multi repo output:
78 # bb | in:
79 # src/third_party/portage-stable
80 # src/third_party/chromiumos-overlay
81 if ($3 == "in")
82 print $NF
83 while (getline) {
84 if ($2 == "|")
85 break;
86 print $NF;
87 }
88 }')
89 if [[ -n ${repos} ]] ; then
90 echo "Auto pulling patches from 'bb' branch in repos:"
91 printf '\t%s\n' ${repos}
92
93 p_flag=""
94 for r in ${repos} ; do
95 r=$(r list | awk -v r="${r}" '$1 == r { print $NF }')
96 p_flag+="${r}:bb "
97 done
98
99 set -- -p "${p_flag}" "$@"
100 fi
101 set -- --cache-dir=~/chromiumos/.cache "$@"
102
103 vexec cbuildbot --buildroot=${d} "$@"