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