From: Stefan Sperling Subject: Re: tweak got-build-regress.sh To: Omar Polo Cc: gameoftrees@openbsd.org Date: Sun, 8 Jan 2023 15:36:43 +0100 On Sun, Jan 08, 2023 at 01:09:51PM +0100, Omar Polo wrote: > landed here for curiosity. diff below switches got-build-regress.sh > to use the builtin getopts instead of getopt(1) which is nicer for > scripting and runs the trap on EXIT too, so can avoid to remove > $lockfile at every exit point. > > ok? > Sure. There was also commit 6c8da0c69eacfa9be3899f93eb7b1e78bd5533f1 which implemented a switch from getopt to getopts in regress tests. > diff /home/op/w/got > commit - 1a99e0b4097b26cac736de07239a3be7589a48f7 > path + /home/op/w/got > blob - 82afa2028dd0be74054dd2348115d8cc87611e14 > file + util/got-build-regress.sh > --- util/got-build-regress.sh > +++ util/got-build-regress.sh > @@ -22,30 +22,24 @@ args=`getopt b:fR:r:w: $*` > force=0 > testroot="/tmp" > > -args=`getopt b:fR:r:w: $*` > -if [ $? -ne 0 ] > -then > - echo "usage: $usage" >&2 > - exit 1 > -fi > -set -- $args > -while [ $# -ne 0 ]; do > - case "$1" > - in > - -b) > - branch="$2"; shift; shift;; > - -f) > - force=1; shift;; > - -w) > - worktree="$2"; shift; shift;; > - -r) > - fromaddr_arg="-r $2"; shift; shift;; > - -R) > - testroot="$2"; shift; shift;; > - --) > - shift; break;; > +while getopts b:fR:r:w: arg; do > + case $arg in > + b) > + branch="$OPTARG" ;; > + f) > + force=1 ;; > + w) > + worktree="$OPTARG" ;; > + r) > + fromaddr_arg="-r $OPTARG" ;; > + R) > + testroot="$OPTARG" ;; > + ?) > + echo "usage: $usage" >&2 > + exit 1 ;; > esac > done > +shift $(($OPTIND - 1)) > > recipients="$@" > if [ -z "$recipients" ]; then > @@ -63,13 +57,10 @@ cd "$worktree" > ncpu=`sysctl -n hw.ncpuonline` > lockfile=$worktree/.${prog}.lock > > -cd "$worktree" > -if [ $? -ne 0 ]; then > - exit 1 > -fi > +cd "$worktree" || exit 1 > > lockfile -r 3 "$lockfile" || exit 1 > -trap "rm -f '$lockfile'" HUP INT QUIT KILL TERM > +trap "rm -f '$lockfile'" HUP INT QUIT KILL TERM EXIT > > rm -f regress.log failures.log > echo -n "$prog for branch '$branch' on " > build.log > @@ -89,13 +80,11 @@ if [ "$update_status" != "0" ]; then > update_status="$?" > if [ "$update_status" != "0" ]; then > mail $fromaddr_arg -s "$prog update failure" $recipients < build.log > - rm -rf "$lockfile" > exit 0 > fi > new_basecommit=`cat .got/base-commit` > > if [ "$force" != "1" -a "$old_basecommit" == "$new_basecommit" ]; then > - rm -rf "$lockfile" > exit 0 > fi > > @@ -105,7 +94,6 @@ if [ "$build_status" != "0" ]; then > build_status="$?" > if [ "$build_status" != "0" ]; then > mail $fromaddr_arg -s "$prog build failure" $recipients < build.log > - rm -rf "$lockfile" > exit 0 > fi > log_cmd build.log make install > @@ -113,7 +101,6 @@ if [ "$build_status" != "0" ]; then > build_status="$?" > if [ "$build_status" != "0" ]; then > mail $fromaddr_arg -s "$prog build failure" $recipients < build.log > - rm -rf "$lockfile" > exit 0 > fi > > @@ -127,7 +114,6 @@ if [ "$regress_status" != "0" -o "$regress_failure_gre > printf "\n\n\t Test failures:\n\n" >> build.log > cat failures.log >> build.log > mail $fromaddr_arg -s "$prog regress failure" $recipients < build.log > - rm -rf "$lockfile" > exit 0 > fi > > @@ -141,7 +127,6 @@ if [ "$regress_status" != "0" -o "$regress_failure_gre > printf "\n\n\t Test failures:\n\n" >> build.log > cat failures.log >> build.log > mail $fromaddr_arg -s "$prog regress failure" $recipients < build.log > - rm -rf "$lockfile" > exit 0 > fi > > @@ -153,10 +138,7 @@ if [ "$build_status" != "0" ]; then > build_status="$?" > if [ "$build_status" != "0" ]; then > mail $fromaddr_arg -s "$prog release mode build failure" $recipients < build.log > - rm -rf "$lockfile" > exit 0 > fi > > - > -rm -f "$lockfile" > exit 0 > >