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