Some more improvements and fixes.

This commit is contained in:
Eli Barzilay 2012-01-08 03:30:51 -05:00
parent 9389947f6f
commit 107615f1fe
2 changed files with 27 additions and 18 deletions

View File

@ -372,7 +372,7 @@ if [[ "$XAUTHORITY" = "" ]]; then export XAUTHORITY="$HOME/.Xauthority"; fi
no_exit_on_error="no"
exit_error() {
echo ""
echo "<<<BOOM>>> (Working on ${machine}(${platform}))" 1>&2
echo "<<<BOOM>>> (Working on $machine($platform))" 1>&2
echo "$@" 1>&2
if [[ "$no_exit_on_error" = "yes" ]]; then
echo ""
@ -730,7 +730,7 @@ write_status() {
header() {
local suffix=""
if [[ "${machine:-$workmachine}" != "$workmachine" ]]; then
suffix=" [${machine}(${platform})]"
suffix=" [$machine($platform)]"
fi
local status=""
case "x$1" in
@ -760,7 +760,7 @@ build_step() { # inputs: name, command
show "Running \"$*\""
start_timer
"$@" || exit_error "\"$jobname\" part of build process failed"
show_time "--==> $jobname on ${machine}(${platform}) done,"
show_time "--==> $jobname on $machine($platform) done,"
}
cur_secs() {
@ -923,7 +923,7 @@ html_begin() { # inputs: title [output-name]
local htmltitle="$1"; shift
htmloutput="$index"
if [[ "$1" != "" ]]; then htmloutput="$1"; shift; fi
if [[ "$htmloutput" != /* ]]; then htmloutput="$(pwd)/htmloutput"; fi
if [[ "$htmloutput" != /* ]]; then htmloutput="$(pwd)/$htmloutput"; fi
show "Creating \"$htmloutput\" for \"$htmltitle\""
# the *.title. file marks this for later patching through the web templates,
# so it should be created even if it won't get used later.
@ -1163,7 +1163,7 @@ DO_COPY_BUILD() { # inputs -- machine-name (for ssh)
run_part -bg "$machine" "DO_BUILD" "$releasing" "$@" \
&> "$bglogfile-$machine"
else
header "{{{ Doing ${machine}(${platform}) locally }}}"
header "{{{ Doing $machine($platform) locally }}}"
run_part "$machine" "DO_BUILD" "$releasing" "$@"
fi
@ -1419,7 +1419,7 @@ win_build_step() { # inputs: type, name, [args...]
;;
( * ) exit_error "Unknown type for win_build_step: \"$btype\"" ;;
esac
show_time "--==> $bname on ${machine}(${platform}) done,"
show_time "--==> $bname on $machine($platform) done,"
}
DO_WINDOWS_BUILD() {
@ -2182,6 +2182,8 @@ BUILD_PRE_WEB() {
# Make the status script available for use
if [[ "$prewebdir" = "$prewebdir_default" ]]; then
_cd "$maindir/$prewebdir"
local target="$maindir/$prewebdir/$(basename "$statusscript")"
{
echo "#!/bin/bash"
local v
@ -2190,8 +2192,8 @@ BUILD_PRE_WEB() {
done
echo ""
cat "$PLTHOME/$statusscript"
} > "${prewebdir}/$(basename "$statusscript")"
chmod +x "${prewebdir}/$(basename "$statusscript")"
} > "$target"
chmod +x "$target"
fi
}
@ -2206,12 +2208,12 @@ if [[ "$1" = "--dispatch" ]]; then
machine="$1"; go="$2"; shift 2
init_repo_vars # set the repository variables according to the env vars
machineget platform # set the global platform for dependable script pieces
show "Working on $machine($hostname)"
show "Working on $machine($platform)"
show "Dispatching to $go($*)"
"$go" "$@"
show "Done working on $machine($hostname)"
show "Done working on $machine($platform)"
elif [[ "$scriptlog" = "yes" ]]; then
show "Working on $machine($hostname)"
show "Working on $machine($platform)"
rm -f "$maindir/$scriptlogfile"
{ echo "This is the build log, generated by $buildscript"; echo ""
echo "Search for \"BOOM\" for any errors."; echo ""
@ -2225,7 +2227,7 @@ elif [[ "$scriptlog" = "yes" ]]; then
MAIN "$@" 2>&1 | tee -a "$maindir/$scriptlogfile"
fi
else
show "Working on $machine($hostname)"
show "Working on $machine($platform)"
MAIN "$@"
fi

View File

@ -7,7 +7,8 @@ printf 'Content-type: text/plain\r\n\r\n'
# cache status reports (avoids excessive work during builds)
# use a lockfile as a cheap hack to time cache refreshing
if ! lockfile -r 0 -l 5 -s 0 "$cachelock" && [[ -e "$cache" ]]; then
if ! lockfile -r 0 -l 5 -s 0 "$cachelock" >& /dev/null \
&& [[ -e "$cache" ]]; then
cat "$cache"; exit
fi
@ -21,21 +22,27 @@ if [[ -e "$statusfile_last" ]]; then S1="Y"; else S1="N"; fi
if [[ "$L$S" = "NY" ]]; then
printf 'Last build crashed abnormally.\n'
elif [[ "$S" = "Y" ]]; then
printf 'Running: '; cat "$statusfile"
time_for_file() {
local t="$(($(date +"%s") - $(stat -c "%Z" "$1")))"
printf "%d:%02d:%02d" "$((t/3600))" "$(((t%3600)/60))" "$((t%60))"
}
printf "The build has been running for %s, current step for %s\n" \
"$(time_for_file "$lockfile")" "$(time_for_file "$statusfile")"
printf 'A build is running (%s)\n' "$(time_for_file "$lockfile")"
printf 'Status: %s (%s)\n' "$(cat "$statusfile")" \
"$(time_for_file "$statusfile")"
shopt -s nullglob
if [[ "x$(echo "$bglogfile"*)" != "x" ]]; then
printf '\n%s build jobs running:\n' "$(ls "$bglogfile"* | wc -l)"
for bg in "$bglogfile"*; do
printf ' %s: ' "${bg#$bglogfile-}"
s="$(grep "^### <<< .* >>>" "$bg" | tail -1 \
| sed -e 's/^### <<< \(.*\) >>>/\1/')"
if [[ "x$s" = "x" ]]; then echo "(just starting)"; else echo "$s"; fi
if [[ "x$s" = "x" ]]; then
printf ' %s: (just starting)\n' "${bg#$bglogfile-}"
else
s="${bg#$bglogfile-}: $s"
s="$(echo "$s" \
| sed -e 's/^\(.*\): \(.*\) \[\1(\(.*\))\]$/\3(\1): \2/')"
echo " $s"
fi
done
fi
else