Blame


1 18f89b62 2020-04-14 stsp #!/bin/sh
2 18f89b62 2020-04-14 stsp #
3 18f89b62 2020-04-14 stsp # Copyright (c) 2020 Stefan Sperling <stsp@openbsd.org>
4 18f89b62 2020-04-14 stsp #
5 18f89b62 2020-04-14 stsp # Permission to use, copy, modify, and distribute this software for any
6 18f89b62 2020-04-14 stsp # purpose with or without fee is hereby granted, provided that the above
7 18f89b62 2020-04-14 stsp # copyright notice and this permission notice appear in all copies.
8 18f89b62 2020-04-14 stsp #
9 18f89b62 2020-04-14 stsp # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 18f89b62 2020-04-14 stsp # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 18f89b62 2020-04-14 stsp # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 18f89b62 2020-04-14 stsp # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 18f89b62 2020-04-14 stsp # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 18f89b62 2020-04-14 stsp # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 18f89b62 2020-04-14 stsp # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 18f89b62 2020-04-14 stsp
17 18f89b62 2020-04-14 stsp prog=`basename $0`
18 827a167b 2022-08-16 stsp usage="$prog [-f] [-b branch] [-R testroot] [-r from-address] [-w worktree] email-address ..."
19 9c1dd3ec 2021-06-23 stsp branch=main
20 18f89b62 2020-04-14 stsp worktree=$HOME/got
21 e6db6399 2020-09-20 stsp fromaddr_arg=
22 18f89b62 2020-04-14 stsp force=0
23 905472e8 2021-06-23 stsp testroot="/tmp"
24 18f89b62 2020-04-14 stsp
25 de9bfe52 2023-01-08 op while getopts b:fR:r:w: arg; do
26 de9bfe52 2023-01-08 op case $arg in
27 de9bfe52 2023-01-08 op b)
28 de9bfe52 2023-01-08 op branch="$OPTARG" ;;
29 de9bfe52 2023-01-08 op f)
30 de9bfe52 2023-01-08 op force=1 ;;
31 de9bfe52 2023-01-08 op w)
32 de9bfe52 2023-01-08 op worktree="$OPTARG" ;;
33 de9bfe52 2023-01-08 op r)
34 de9bfe52 2023-01-08 op fromaddr_arg="-r $OPTARG" ;;
35 de9bfe52 2023-01-08 op R)
36 de9bfe52 2023-01-08 op testroot="$OPTARG" ;;
37 de9bfe52 2023-01-08 op ?)
38 de9bfe52 2023-01-08 op echo "usage: $usage" >&2
39 de9bfe52 2023-01-08 op exit 1 ;;
40 18f89b62 2020-04-14 stsp esac
41 18f89b62 2020-04-14 stsp done
42 de9bfe52 2023-01-08 op shift $(($OPTIND - 1))
43 18f89b62 2020-04-14 stsp
44 18f89b62 2020-04-14 stsp recipients="$@"
45 18f89b62 2020-04-14 stsp if [ -z "$recipients" ]; then
46 18f89b62 2020-04-14 stsp echo "usage: $usage" >&2
47 18f89b62 2020-04-14 stsp exit 1
48 18f89b62 2020-04-14 stsp fi
49 18f89b62 2020-04-14 stsp
50 18f89b62 2020-04-14 stsp log_cmd() {
51 18f89b62 2020-04-14 stsp logfile=$1
52 18f89b62 2020-04-14 stsp shift
53 18f89b62 2020-04-14 stsp echo \$ $@ >> $logfile
54 18f89b62 2020-04-14 stsp $* >> $logfile 2>&1
55 18f89b62 2020-04-14 stsp }
56 18f89b62 2020-04-14 stsp
57 18f89b62 2020-04-14 stsp ncpu=`sysctl -n hw.ncpuonline`
58 18f89b62 2020-04-14 stsp lockfile=$worktree/.${prog}.lock
59 18f89b62 2020-04-14 stsp
60 243a8f15 2023-01-08 op cd "$worktree" || exit 1
61 18f89b62 2020-04-14 stsp
62 18f89b62 2020-04-14 stsp lockfile -r 3 "$lockfile" || exit 1
63 243a8f15 2023-01-08 op trap "rm -f '$lockfile'" HUP INT QUIT KILL TERM EXIT
64 18f89b62 2020-04-14 stsp
65 18f89b62 2020-04-14 stsp rm -f regress.log failures.log
66 18f89b62 2020-04-14 stsp echo -n "$prog for branch '$branch' on " > build.log
67 18f89b62 2020-04-14 stsp date -u >> build.log
68 18f89b62 2020-04-14 stsp
69 18f89b62 2020-04-14 stsp printf "\nRunning on " >> build.log
70 18f89b62 2020-04-14 stsp sysctl -n kern.version >> build.log
71 18f89b62 2020-04-14 stsp
72 18f89b62 2020-04-14 stsp printf "\n\tCleaning the work tree\n\n" >> build.log
73 18f89b62 2020-04-14 stsp log_cmd build.log got status
74 18f89b62 2020-04-14 stsp log_cmd build.log make clean
75 18f89b62 2020-04-14 stsp
76 18f89b62 2020-04-14 stsp printf "\n\n\tUpdating the work tree\n\n" >> build.log
77 18f89b62 2020-04-14 stsp log_cmd build.log cat .got/base-commit
78 18f89b62 2020-04-14 stsp old_basecommit=`cat .got/base-commit`
79 18f89b62 2020-04-14 stsp log_cmd build.log /usr/local/bin/got update -b "$branch"
80 18f89b62 2020-04-14 stsp update_status="$?"
81 bcfa81c7 2023-02-17 op if [ "$update_status" -ne 0 ]; then
82 e6db6399 2020-09-20 stsp mail $fromaddr_arg -s "$prog update failure" $recipients < build.log
83 18f89b62 2020-04-14 stsp exit 0
84 18f89b62 2020-04-14 stsp fi
85 18f89b62 2020-04-14 stsp new_basecommit=`cat .got/base-commit`
86 18f89b62 2020-04-14 stsp
87 bcfa81c7 2023-02-17 op if [ "$force" -ne 1 -a "$old_basecommit" == "$new_basecommit" ]; then
88 18f89b62 2020-04-14 stsp exit 0
89 18f89b62 2020-04-14 stsp fi
90 18f89b62 2020-04-14 stsp
91 18f89b62 2020-04-14 stsp printf "\n\n\tTesting a regular dev build\n\n" >> build.log
92 18f89b62 2020-04-14 stsp log_cmd build.log make obj
93 18f89b62 2020-04-14 stsp log_cmd build.log make -j $ncpu
94 18f89b62 2020-04-14 stsp build_status="$?"
95 bcfa81c7 2023-02-17 op if [ "$build_status" -ne 0 ]; then
96 e6db6399 2020-09-20 stsp mail $fromaddr_arg -s "$prog build failure" $recipients < build.log
97 18f89b62 2020-04-14 stsp exit 0
98 18f89b62 2020-04-14 stsp fi
99 18f89b62 2020-04-14 stsp log_cmd build.log make install
100 06991378 2022-12-30 tracey log_cmd build.log make -j $ncpu webd
101 18f89b62 2020-04-14 stsp build_status="$?"
102 bcfa81c7 2023-02-17 op if [ "$build_status" -ne 0 ]; then
103 e6db6399 2020-09-20 stsp mail $fromaddr_arg -s "$prog build failure" $recipients < build.log
104 18f89b62 2020-04-14 stsp exit 0
105 18f89b62 2020-04-14 stsp fi
106 d35c69f0 2023-02-17 op log_cmd build.log make -j $ncpu server
107 d35c69f0 2023-02-17 op build_status="$?"
108 d35c69f0 2023-02-17 op if [ "$build_status" -ne 0 ]; then
109 d35c69f0 2023-02-17 op mail $fromaddr_arg -s "$prog build failure" $recipients < build.log
110 d35c69f0 2023-02-17 op exit 0
111 d35c69f0 2023-02-17 op fi
112 18f89b62 2020-04-14 stsp
113 18f89b62 2020-04-14 stsp printf "\n\n\tRunning tests\n\n" >> build.log
114 905472e8 2021-06-23 stsp log_cmd regress.log env PATH=$HOME/bin:$PATH make regress GOT_TEST_ROOT="$testroot"
115 18f89b62 2020-04-14 stsp regress_status="$?"
116 18f89b62 2020-04-14 stsp cat regress.log >> build.log
117 18f89b62 2020-04-14 stsp egrep "test.*failed" regress.log > failures.log
118 18f89b62 2020-04-14 stsp regress_failure_grep="$?"
119 bcfa81c7 2023-02-17 op if [ "$regress_status" -ne 0 -o "$regress_failure_grep" -eq 0 ]; then
120 18f89b62 2020-04-14 stsp printf "\n\n\t Test failures:\n\n" >> build.log
121 18f89b62 2020-04-14 stsp cat failures.log >> build.log
122 e6db6399 2020-09-20 stsp mail $fromaddr_arg -s "$prog regress failure" $recipients < build.log
123 18f89b62 2020-04-14 stsp exit 0
124 18f89b62 2020-04-14 stsp fi
125 18f89b62 2020-04-14 stsp
126 c5c77d29 2021-10-14 stsp printf "\n\n\tRunning tests with pack files\n\n" >> build.log
127 c5c77d29 2021-10-14 stsp log_cmd regress.log env PATH=$HOME/bin:$PATH make regress GOT_TEST_ROOT="$testroot" GOT_TEST_PACK=1
128 c5c77d29 2021-10-14 stsp regress_status="$?"
129 c5c77d29 2021-10-14 stsp cat regress.log >> build.log
130 c5c77d29 2021-10-14 stsp egrep "test.*failed" regress.log > failures.log
131 c5c77d29 2021-10-14 stsp regress_failure_grep="$?"
132 bcfa81c7 2023-02-17 op if [ "$regress_status" -ne 0 -o "$regress_failure_grep" -eq 0 ]; then
133 c5c77d29 2021-10-14 stsp printf "\n\n\t Test failures:\n\n" >> build.log
134 c5c77d29 2021-10-14 stsp cat failures.log >> build.log
135 c5c77d29 2021-10-14 stsp mail $fromaddr_arg -s "$prog regress failure" $recipients < build.log
136 c5c77d29 2021-10-14 stsp exit 0
137 c5c77d29 2021-10-14 stsp fi
138 c5c77d29 2021-10-14 stsp
139 bfeaf206 2023-02-17 op printf "\n\n\tRunning tests with pack files using ref-delta\n\n" >> build.log
140 bfeaf206 2023-02-17 op log_cmd regress.log env PATH=$HOME/bin:$PATH make regress GOT_TEST_ROOT="$testroot" GOT_TEST_PACK=ref-delta
141 bfeaf206 2023-02-17 op regress_status="$?"
142 bfeaf206 2023-02-17 op cat regress.log >> build.log
143 bfeaf206 2023-02-17 op egrep "test.*failed" regress.log > failures.log
144 bfeaf206 2023-02-17 op regress_failure_grep="$?"
145 bfeaf206 2023-02-17 op if [ "$regress_status" -ne 0 -o "$regress_failure_grep" -eq 0 ]; then
146 bfeaf206 2023-02-17 op printf "\n\n\t Test failures:\n\n" >> build.log
147 bfeaf206 2023-02-17 op cat failures.log >> build.log
148 bfeaf206 2023-02-17 op mail $fromaddr_arg -s "$prog regress failure" $recipients < build.log
149 bfeaf206 2023-02-17 op exit 0
150 bfeaf206 2023-02-17 op fi
151 bfeaf206 2023-02-17 op
152 18f89b62 2020-04-14 stsp printf "\n\n\tTesting a release build\n\n" >> build.log
153 18f89b62 2020-04-14 stsp log_cmd build.log make clean
154 18f89b62 2020-04-14 stsp log_cmd build.log make obj
155 bc90a07f 2020-05-05 stsp log_cmd build.log make -j $ncpu GOT_RELEASE=Yes
156 06991378 2022-12-30 tracey log_cmd build.log make -j $ncpu GOT_RELEASE=Yes webd
157 d35c69f0 2023-02-17 op log_cmd build.log make -j $ncpu GOT_RELEASE=Yes server
158 18f89b62 2020-04-14 stsp build_status="$?"
159 bcfa81c7 2023-02-17 op if [ "$build_status" -ne 0 ]; then
160 e6db6399 2020-09-20 stsp mail $fromaddr_arg -s "$prog release mode build failure" $recipients < build.log
161 18f89b62 2020-04-14 stsp exit 0
162 18f89b62 2020-04-14 stsp fi
163 18f89b62 2020-04-14 stsp
164 18f89b62 2020-04-14 stsp exit 0