checkrelease.sh now tries to build sim:nsh
Squashed commit of the following: commit 2b7e2ef927462f492b94ce0f8f1ae248a4ff1609 Author: Adam Feuer <adam@starcat.io> Date: Wed Jul 15 10:15:37 2020 -0700 remove duplicate method from bad merge commit 31846cfcb5c61804ede3a31159c58dc9e627761e Author: Adam Feuer <adam@starcat.io> Date: Tue Jul 14 14:20:36 2020 -0700 fix --dir option by doing cp "$DIRECTORY"/* . - instead of cp "$DIRECTORY" . commit 01d23a1a0bbaaf74f26c0589705b1f4a41c755bf Author: Adam Feuer <adam@adamfeuer.com> Date: Tue Jul 7 15:08:59 2020 -0700 changes from xiaoxiang781216 - remove verbose option - simplify commit 3db107e6fdebfbf9b2afa16bfe89c846d1ec7352 Author: Adam Feuer <adam@starcat.io> Date: Tue Jul 14 10:39:42 2020 -0700 simplify wget invocation; add slash to all URLS commit fa6b14a649cd311e8316368992a709460823e756 Author: Adam Feuer <adam@starcat.io> Date: Tue Jul 14 10:19:26 2020 -0700 quitting directly after unknown argument - with usage - also removed unneeded echo - as per PR feedback commit bfda65a347a85959d516f05ba579b5539e953816 Author: Adam Feuer <adam@starcat.io> Date: Mon Jul 13 13:44:42 2020 -0700 streamline argument processing as per PR feedback commit b6a8d77ef8000a9be71d044aa929b309e8baca72 Author: Adam Feuer <adam@starcat.io> Date: Thu Jul 9 21:47:51 2020 -0700 PR feedback changes - many commit abf89d2ec28b0386d3dc4117e449c2f5893fca54 Author: Adam Feuer <adam@adamfeuer.com> Date: Tue Jul 7 18:22:20 2020 -0700 added --gpg-output / -G flag - to see GPG output commit f0711df27e5eca2d1b9499d8c7532fc75cb0bc39 Author: Adam Feuer <adam@adamfeuer.com> Date: Tue Jul 7 18:13:14 2020 -0700 quiet wget; check URL exists before downloading commit 9bc97e7c0dfe0d392e39f11419081cf48db3b8fd Author: Adam Feuer <adam@adamfeuer.com> Date: Tue Jul 7 15:08:59 2020 -0700 checkrelease.sh script now builds sim:nsh Squashed commit of the following: commit 80d270b4d50ec10d912e7a67a0e86efe8ca95e98 Author: Adam Feuer <adam@adamfeuer.com> Date: Tue Jul 7 15:06:48 2020 -0700 checkrelease script can use url, release, or dir commit 6a7e8e3210d671d6aa2c60bd8a50701839924cf4 Author: Adam Feuer <adam@adamfeuer.com> Date: Tue Jul 7 11:06:28 2020 -0700 try to build sim:nsh commit 2cf777e062b99c8b3cb7184f55d1f82769c8f989 Author: Adam Feuer <adam@adamfeuer.com> Date: Tue Jul 7 10:21:31 2020 -0700 improved success and error messaging
This commit is contained in:
parent
aef6f4ae09
commit
11a8c3e035
@ -19,114 +19,185 @@
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
set -e
|
||||
RETURN_CODE=0
|
||||
|
||||
BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
|
||||
TEMPDIR="dist.apache.org"
|
||||
ORIGINAL_DIR="$(pwd)"
|
||||
trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
|
||||
TEMPDIR="/tmp/nuttx-checkrelease"
|
||||
|
||||
function validate_url() {
|
||||
if [[ `wget -S --spider $1 2>&1 | grep 'HTTP/1.1 200 OK'` ]]; then echo "true"; fi
|
||||
}
|
||||
|
||||
function download_release() {
|
||||
wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
|
||||
cd "$TEMPDIR"
|
||||
rm -rf "$TEMPDIR"
|
||||
mkdir "$TEMPDIR"
|
||||
cd "$TEMPDIR"
|
||||
|
||||
if [[ -n "$URL" ]]; then
|
||||
if [[ $(validate_url "$URL") ]]; then
|
||||
echo "Downloading release files from $URL"
|
||||
wget -q -r -nd -np "$URL"
|
||||
else
|
||||
echo "The $URL given doesn't return HTTP 200 OK return code— exiting."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
cp -r "$DIRECTORY"/* .
|
||||
fi
|
||||
}
|
||||
|
||||
function check_sha512() {
|
||||
# check release sha512
|
||||
RELEASE_FILE=$1
|
||||
echo "Checking $RELEASE_FILE sha512..."
|
||||
sha512sum -c "$RELEASE_FILE.sha512"
|
||||
output="$(sha512sum -c $RELEASE_FILE.sha512)" 2>&1
|
||||
return_value=$?
|
||||
if [ $return_value -eq 0 ]; then
|
||||
echo " OK: $RELEASE_FILE sha512 hash matches."
|
||||
else
|
||||
RETURN_CODE=1
|
||||
echo "$output"
|
||||
echo " - $RELEASE_FILE sha512 hash does not match."
|
||||
fi
|
||||
echo
|
||||
}
|
||||
|
||||
function check_gpg() {
|
||||
# check nuttx sha512 and gpg
|
||||
RELEASE_FILE=$1
|
||||
echo "Checking $RELEASE_FILE GPG signature:"
|
||||
gpg --verify "$RELEASE_FILE.asc" "$RELEASE_FILE"
|
||||
gpg --verify $RELEASE_FILE.asc $RELEASE_FILE
|
||||
return_value=$?
|
||||
if [ $return_value -eq 0 ]; then
|
||||
echo " OK: $RELEASE_FILE gpg signature matches."
|
||||
else
|
||||
RETURN_CODE=1
|
||||
echo " - Error checking $RELEASE_FILE gpg signature."
|
||||
fi
|
||||
echo
|
||||
}
|
||||
|
||||
function check_required_files() {
|
||||
# check nuttx for required files
|
||||
RELEASE_FILE=$1
|
||||
RELEASE_DIR=$2
|
||||
rm -rf "$RELEASE_DIR"
|
||||
tar xf "$RELEASE_FILE"
|
||||
ERROR=0
|
||||
RELEASE_DIR=$1
|
||||
MISSING_FILE=0
|
||||
echo "Checking $RELEASE_FILE for required files:"
|
||||
if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
|
||||
echo "LICENSE file not present."
|
||||
ERROR=1
|
||||
echo " - LICENSE file not present."
|
||||
MISSING_FILE=1
|
||||
fi
|
||||
if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
|
||||
echo "NOTICE file not present."
|
||||
ERROR=1
|
||||
echo " - NOTICE file not present."
|
||||
MISSING_FILE=1
|
||||
fi
|
||||
if [ ! -f "$RELEASE_DIR/README.txt" ]; then
|
||||
echo "README.txt file not present."
|
||||
ERROR=1
|
||||
echo " - README.txt file not present."
|
||||
MISSING_FILE=1
|
||||
fi
|
||||
if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
|
||||
echo "DISCLAIMER-WIP file not present."
|
||||
ERROR=1
|
||||
echo " - DISCLAIMER-WIP file not present."
|
||||
MISSING_FILE=1
|
||||
fi
|
||||
if [ 0 -eq $ERROR ]; then
|
||||
echo "OK: All required files exist."
|
||||
if [ 0 -eq $MISSING_FILE ]; then
|
||||
echo " OK: all required files exist in $RELEASE_DIR."
|
||||
else
|
||||
RETURN_CODE=$MISSING_FILE
|
||||
fi
|
||||
echo
|
||||
}
|
||||
|
||||
function check_nuttx() {
|
||||
# check nuttx sha512 and gpg
|
||||
RELEASE_FILE="$(ls *.tar.gz|head -1)"
|
||||
check_sha512 "$RELEASE_FILE"
|
||||
RELEASE_DIR="nuttx"
|
||||
check_sha512 "$RELEASE_FILE"
|
||||
check_gpg "$RELEASE_FILE"
|
||||
check_required_files "$RELEASE_FILE" "nuttx"
|
||||
mv "$RELEASE_FILE" ..
|
||||
tar xf "$RELEASE_FILE"
|
||||
check_required_files "$RELEASE_DIR"
|
||||
}
|
||||
|
||||
function check_nuttx_apps() {
|
||||
# check nuttx-apps sha512 and gpg
|
||||
RELEASE_FILE="$(ls *.tar.gz|head -2| tail -1)"
|
||||
RELEASE_DIR="apps"
|
||||
check_sha512 "$RELEASE_FILE"
|
||||
check_gpg "$RELEASE_FILE"
|
||||
check_required_files "$RELEASE_FILE" "apps"
|
||||
mv "$RELEASE_FILE" ..
|
||||
tar xf "$RELEASE_FILE"
|
||||
check_required_files "$RELEASE_DIR"
|
||||
}
|
||||
|
||||
function check_sim_nsh_build() {
|
||||
RELEASE_DIR="nuttx"
|
||||
echo "Trying to build $RELEASE_DIR sim:nsh..."
|
||||
cd "$RELEASE_DIR"
|
||||
output=$(make distclean; ./tools/configure.sh sim:nsh; make) 2>&1
|
||||
return_value=$?
|
||||
if [ $return_value -eq 0 ]; then
|
||||
echo " OK: we were able to build sim:nsh."
|
||||
else
|
||||
RETURN_CODE=1
|
||||
echo "$output"
|
||||
echo " - Error building sim:nsh."
|
||||
fi
|
||||
echo
|
||||
}
|
||||
|
||||
function usage() {
|
||||
echo "Usage: $0 <URL-of-release-candidate-directory-or-release-name>"
|
||||
echo " Given release name or release full URL, downloads all files in"
|
||||
echo " in that directory (which should include nuttx and nuttx-apps"
|
||||
echo " sha512, asc, and tar.gz files), checks the release SHA512 and GPG "
|
||||
echo " signatures, and checks the unpacked directories for required "
|
||||
echo " files. Creates a temporary directory to do its work in."
|
||||
echo "Usage: $0 [--url <URL-of-release-dir>] [--release <name-of-release] [--dir <path-to-directory>] [--tempdir <path-to-directory>]"
|
||||
echo " Given release full URL, release name, or a local directory, downloads or copies"
|
||||
echo " all files in that directory (which for a release should include nuttx and nuttx-apps, sha512, "
|
||||
echo " asc, and tar.gz files), checks the release SHA512 and GPG signatures, checks the unpacked "
|
||||
echo " directories for required files, and tries to build NuttX for sim:nsh."
|
||||
echo
|
||||
echo " If tempdir is specified, it will be removed and recreated; if it is not specified, /tmp/nuttx-checkrelease"
|
||||
echo " is used."
|
||||
echo
|
||||
echo " nuttx and nuttx-apps tar.gz files are left in the current"
|
||||
echo " directory."
|
||||
echo
|
||||
echo "Examples:"
|
||||
echo
|
||||
echo " $0 9.1.0-RC1"
|
||||
echo " $0 https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC1/"
|
||||
echo " $0 --release 9.1.0-RC1"
|
||||
echo " $0 --url https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC1/"
|
||||
echo " $0 --dir ./some-dir-that-has-nuttx-and-apps"
|
||||
echo
|
||||
}
|
||||
|
||||
if [ "-h" == "$1" ]; then
|
||||
URL=""
|
||||
DIRECTORY=""
|
||||
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case $1 in
|
||||
-U|--url)
|
||||
shift
|
||||
URL="$1/"
|
||||
;;
|
||||
-R|--release)
|
||||
shift
|
||||
RELEASE="$1"
|
||||
URL="$BASE_URL/$RELEASE/"
|
||||
;;
|
||||
-D|--dir)
|
||||
shift
|
||||
DIRECTORY="$(readlink -f $1)"
|
||||
;;
|
||||
-T|--tempdir)
|
||||
shift
|
||||
TEMPDIR="$(readlink -f $1)"
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
;;
|
||||
*) # unknown option
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
ARG=$1
|
||||
if [[ "$ARG" =~ ^"http".* ]]; then
|
||||
URL="$1/"
|
||||
else
|
||||
URL="$BASE_URL/$1/"
|
||||
if [[ (-z "$URL") && (-z "$DIRECTORY") ]]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
download_release
|
||||
check_nuttx
|
||||
check_nuttx_apps
|
||||
check_nuttx
|
||||
check_nuttx_apps
|
||||
check_sim_nsh_build
|
||||
|
||||
exit $RETURN_CODE
|
||||
|
Loading…
x
Reference in New Issue
Block a user