From 1a7bbbe1a3c3035717d96ff521c20bbb17eb5381 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Sun, 26 Jan 2025 11:24:26 +1100 Subject: [PATCH 1/5] build_parameters.py: exit with non-zero exit code on errors --- build_parameters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_parameters.py b/build_parameters.py index 53bd2a09ce..313db41153 100644 --- a/build_parameters.py +++ b/build_parameters.py @@ -509,4 +509,4 @@ def print_versions(commits_to_checkout_and_parse): generate_json(VEHICLES) move_results(VEHICLES) -# sys.exit(error_count) +sys.exit(error_count) From dc60e851e024c3d8a65ca974f10f235e952da714 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Mon, 27 Jan 2025 09:52:20 +1100 Subject: [PATCH 2/5] update.sh: run with -ex so we exit after an error has happened rather than do more damage --- update.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/update.sh b/update.sh index e500f141af..d0355e1dfb 100755 --- a/update.sh +++ b/update.sh @@ -1,9 +1,12 @@ #!/bin/bash # check for changes in docs and run sphinx +set -e +set -x + export PYTHONUNBUFFERED=1 -cd $HOME/build_wiki || exit 1 +cd $HOME/build_wiki START=$(date +%s) From 0f32f1f562c5e29be3e468dc7fd4501043b6d969 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Mon, 27 Jan 2025 09:53:01 +1100 Subject: [PATCH 3/5] build_parameters.py: require at least one commit from html parsing prevents returning an empty set of commits which can make the Wiki's parameters page break --- build_parameters.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build_parameters.py b/build_parameters.py index 313db41153..2a3037b99a 100644 --- a/build_parameters.py +++ b/build_parameters.py @@ -305,6 +305,8 @@ def fetch_commit_hash(version_link, board, file): for i in commits_and_codes: if commits_and_codes[i][0] != 'error': commite_and_codes_cleanned[i] = commits_and_codes[i] + if len(commite_and_codes_cleanned) == 0: + error("Expected at least one commit") return commite_and_codes_cleanned From 8136d732f86b49376d4ef98804fecf0531cb32ea Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Sun, 26 Jan 2025 11:58:26 +1100 Subject: [PATCH 4/5] update.sh: make this much more verbose also create a separate log file for the current build --- update.sh | 77 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 51 insertions(+), 26 deletions(-) diff --git a/update.sh b/update.sh index d0355e1dfb..d0f93b7a36 100755 --- a/update.sh +++ b/update.sh @@ -35,34 +35,49 @@ lock_file build.lck || { exit 1 } +progress() { + echo "[$(date '+%Y-%m-%d %H:%M:%S')] update.sh: $*" +} + +LOGFILE="logs/update-latest.log" +progress "update.sh starting (see $LOGFILE)" + test -n "$FORCEBUILD" || { - (cd ardupilot_wiki && git fetch > /dev/null 2>&1) - (cd sphinx_rtd_theme && git fetch > /dev/null 2>&1) + progress "Fetching ardupilot_wiki" + (cd ardupilot_wiki && git fetch) + progress "Fetching sphinx_rtd_theme" + (cd sphinx_rtd_theme && git fetch) changed=0 + progress "Getting oldhash for ardupilot_wiki" oldhash=$(cd ardupilot_wiki && git rev-parse origin/master) + progress "Getting newhash for ardupilot_wiki" newhash=$(cd ardupilot_wiki && git rev-parse HEAD) [ "$oldhash" = "$newhash" ] || { - echo "ardupilot_wiki has changed $newhash $oldhash" + progress "ardupilot_wiki has changed $newhash $oldhash" changed=1 } + progress "Getting oldhash for sphinx_rtd_theme" oldhash=$(cd sphinx_rtd_theme && git rev-parse origin/master) + progress "Getting newhash for sphinx_rtd_theme" newhash=$(cd sphinx_rtd_theme && git rev-parse HEAD) [ "$oldhash" = "$newhash" ] || { - echo "sphinx_rtd_theme has changed $newhash $oldhash" + progress "sphinx_rtd_theme has changed $newhash $oldhash" changed=1 } + progress "Fetching parameters" PARAMSITES="ArduPlane ArduCopter AntennaTracker Rover AP_Periph Blimp" mkdir -p old_params new_params for site in $PARAMSITES; do - wget "https://autotest.ardupilot.org/Parameters/$site/Parameters.rst" -O new_params/$site.rst 2> /dev/null + wget "https://autotest.ardupilot.org/Parameters/$site/Parameters.rst" -O new_params/$site.rst done + progress "Comparing parameters" for site in $PARAMSITES; do if ! cmp new_params/$site.rst old_params/$site.rst; then - echo "$site.rst has changed" + progress "$site.rst has changed" cp new_params/$site.rst old_params/$site.rst changed=1 fi @@ -71,30 +86,29 @@ test -n "$FORCEBUILD" || { LOGMESSAGESITES="Plane Copter Tracker Rover Blimp" mkdir -p old_logmessages new_logmessages for site in $LOGMESSAGESITES; do - wget "https://autotest.ardupilot.org/LogMessages/$site/LogMessages.rst" -O new_logmessages/$site.rst 2> /dev/null + wget "https://autotest.ardupilot.org/LogMessages/$site/LogMessages.rst" -O new_logmessages/$site.rst done for site in $LOGMESSAGESITES; do if ! cmp new_logmessages/$site.rst old_logmessages/$site.rst; then - echo "$site.rst has changed" + progress "$site.rst has changed" cp new_logmessages/$site.rst old_logmessages/$site.rst changed=1 fi done - [ $changed = 1 ] || exit 0 + [ $changed = 1 ] || { + progress "Nothing changed; no rebuild required, exiting" + exit 0 + } } +progress "update.sh starting build" + ( date -report() { - cat <$LOGFILE 2>&1 || { + progress "update.sh failed; see $LOGFILE" +} +cat $LOGFILE >> logs/update.log -) >> update.log 2>&1 +progress "update.sh finished" From 0a072b3e53b628a976ba24cec007b54461027fb1 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Mon, 27 Jan 2025 09:58:19 +1100 Subject: [PATCH 5/5] update.sh: build versioned parameters unconditionally we're always going to want to do this, and probably fold build_parameters.py into update.py --- update.sh | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/update.sh b/update.sh index d0f93b7a36..e6ff1ce05a 100755 --- a/update.sh +++ b/update.sh @@ -132,20 +132,14 @@ find -name "parameters*rst" -delete # Clean possible built and cached parameters END_UPDATES=$(date +%s) -DO_PARAM_VERSIONING=true -if $DO_PARAM_VERSIONING; then - progress "Starting to build multiple parameters pages" - python3 build_parameters.py || { - progress "build_parameters.py failed" - exit 1 - } - END_BUILD_MPARAMS=$(date +%s) - MPARAMS_TIME=$(echo "($END_BUILD_MPARAMS - $END_UPDATES)" | bc) - progress "Time to run build_parameters.py: $MPARAMS_TIME seconds" -else - # we use this hwne calculating times, below - END_BUILD_MPARAMS=$END_UPDATES -fi +progress "Starting to build multiple parameters pages" +python3 build_parameters.py || { + progress "build_parameters.py failed" + exit 1 +} +END_BUILD_MPARAMS=$(date +%s) +MPARAMS_TIME=$(echo "($END_BUILD_MPARAMS - $END_UPDATES)" | bc) +progress "Time to run build_parameters.py: $MPARAMS_TIME seconds" progress "Starting to build the wiki" # python3 update.py --clean --parallel 4 # Build without versioning for parameters. It is better for editing wiki.