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