phase2: pass buildbot url to cleanup.sh
[buildbot.git] / phase1 / cleanup.sh
1 #!/bin/bash
2
3 current_slave="$1"
4 current_builder="$2"
5 current_mode="$3"
6
7 running_builders="$(wget -qO- "http://builds.lede-project.org:8010/json/slaves/$current_slave?as_text=1" | sed -ne 's,^.*"builderName": "\(.*\)".*$,\1,p')"
8
9 is_running() {
10 local running_builder
11 for running_builder in $running_builders; do
12 if [ "${running_builder//\//_}" = "${1//\//_}" ]; then
13 return 0
14 fi
15 done
16 return 1
17 }
18
19 do_cleanup() {
20 echo "Cleaning up '$current_builder' work directory..."
21
22 find . -mindepth 1 -maxdepth 1 -print0 | xargs -r -0 rm -vrf | while read entry do
23 printf "."
24 done
25 }
26
27 #
28 # Sanity check, current builder should be in running builders list
29 #
30
31 if ! is_running "$current_builder"; then
32 echo "Current builder '$current_builder' not found in current builders list, aborting cleanup."
33 exit 0
34 fi
35
36
37 #
38 # Clean up leftovers
39 #
40
41 if [ "$current_mode" = full ]; then
42 (
43 if ! flock -x -w 2700 200; then
44 echo "Unable to obtain exclusive lock, aborting cleanup."
45 exit 1
46 fi
47
48 for build_dir in ../../*; do
49
50 build_dir="$(readlink -f "$build_dir")"
51
52 if [ -z "$build_dir" ] || [ ! -d "$build_dir/build/sdk" ]; then
53 continue
54 fi
55
56 current_builder="${build_dir##*/}"
57
58 if is_running "$current_builder"; then
59 echo "Skipping currently active '$current_builder' work directory."
60 continue
61 fi
62
63 (
64 cd "$build_dir/build"
65
66 #if [ -n "$(git status --porcelain | grep -v update_hostkey.sh | grep -v cleanup.sh)" ]; then
67 if [ -d sdk ] || [ -f sdk.tar.bz2 ]; then
68 do_cleanup
69 else
70 echo "Skipping clean '$current_builder' work directory."
71 fi
72 )
73 done
74
75 ) 200>../../cleanup.lock
76
77 #
78 # Clean up current build
79 #
80
81 else
82 do_cleanup
83 fi
84
85 exit 0