check-release-candidate.sh script
Squashed commit of the following: commit 40b788f8a0e79aa90734813a557c17f90fb9cdbe Author: Adam Feuer <adam@adamfeuer.com> Date: Sat Jul 4 14:45:13 2020 -0700 updated license header to APL 2.0; updated usage commit 81984aeeb503d90f30cb1d0c62a888e2a23235ed Author: Adam Feuer <adam@adamfeuer.com> Date: Thu Jul 2 18:32:05 2020 -0700 move tar.gz files to current dir - for convenience, so user can untar them and build commit e1a3100402e39703ea08daa16e2388d4572413dc Author: Adam Feuer <adam@adamfeuer.com> Date: Wed Jul 1 13:17:37 2020 -0700 added trap; copyright header; can take release name - instead of URL, optionally commit e0109214c5b887b4b662120ce59c59520d8a5918 Author: Adam Feuer <adam@adamfeuer.com> Date: Wed Jul 1 12:54:54 2020 -0700 trap and remove tempfile; set -e to catch errors commit 196dc4ca4285b821cce644561296a2034e9a671e Author: Adam Feuer <adam@adamfeuer.com> Date: Wed Jul 1 12:15:01 2020 -0700 using wget recursive and cut-dir to download files - as per PR feedback commit 127c22bbc14cabe2a59b238b75c21711b000e41b Author: Adam Feuer <adam@adamfeuer.com> Date: Wed Jul 1 11:35:01 2020 -0700 intial addition
This commit is contained in:
parent
3472de3500
commit
407c5db66b
129
tools/check-nuttx-release.sh
Executable file
129
tools/check-nuttx-release.sh
Executable file
@ -0,0 +1,129 @@
|
||||
#!/bin/bash
|
||||
#############################################################################
|
||||
# tools/check-nuttx-release.sh
|
||||
#
|
||||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership. The
|
||||
# ASF licenses this file to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance with the
|
||||
# License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
#
|
||||
#############################################################################
|
||||
|
||||
set -e
|
||||
|
||||
BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
|
||||
TEMPDIR="dist.apache.org"
|
||||
ORIGINAL_DIR="$(pwd)"
|
||||
trap "rm -rf $TEMPDIR" EXIT
|
||||
|
||||
function download_release() {
|
||||
rm -rf "$TEMPDIR"
|
||||
wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
|
||||
cd "$TEMPDIR"
|
||||
}
|
||||
|
||||
function check_sha512() {
|
||||
# check release sha512
|
||||
RELEASE_FILE=$1
|
||||
echo "Checking $RELEASE_FILE sha512..."
|
||||
sha512sum -c "$RELEASE_FILE.sha512"
|
||||
}
|
||||
|
||||
function check_gpg() {
|
||||
# check nuttx sha512 and gpg
|
||||
RELEASE_FILE=$1
|
||||
echo "Checking $RELEASE_FILE GPG signature:"
|
||||
gpg --verify "$RELEASE_FILE.asc" "$RELEASE_FILE"
|
||||
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
|
||||
if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
|
||||
echo "LICENSE file not present."
|
||||
ERROR=1
|
||||
fi
|
||||
if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
|
||||
echo "NOTICE file not present."
|
||||
ERROR=1
|
||||
fi
|
||||
if [ ! -f "$RELEASE_DIR/README.txt" ]; then
|
||||
echo "README.txt file not present."
|
||||
ERROR=1
|
||||
fi
|
||||
if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
|
||||
echo "DISCLAIMER-WIP file not present."
|
||||
ERROR=1
|
||||
fi
|
||||
if [ 0 -eq $ERROR ]; then
|
||||
echo "OK: All required files exist."
|
||||
fi
|
||||
}
|
||||
|
||||
function check_nuttx() {
|
||||
# check nuttx sha512 and gpg
|
||||
RELEASE_FILE="$(ls *.tar.gz|head -1)"
|
||||
check_sha512 "$RELEASE_FILE"
|
||||
check_gpg "$RELEASE_FILE"
|
||||
check_required_files "$RELEASE_FILE" "nuttx"
|
||||
mv "$RELEASE_FILE" ..
|
||||
}
|
||||
|
||||
function check_nuttx_apps() {
|
||||
# check nuttx-apps sha512 and gpg
|
||||
RELEASE_FILE="$(ls *.tar.gz|head -2| tail -1)"
|
||||
check_sha512 "$RELEASE_FILE"
|
||||
check_gpg "$RELEASE_FILE"
|
||||
check_required_files "$RELEASE_FILE" "apps"
|
||||
mv "$RELEASE_FILE" ..
|
||||
}
|
||||
|
||||
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 their SHA512 and GPG "
|
||||
echo " signatures, and checks the unpacked directories for required "
|
||||
echo " files. Creates a temporary directory to do its work in."
|
||||
echo
|
||||
echo " nuttx and nuttx-apps tar.gz files are left in the current"
|
||||
echo " directory."
|
||||
echo
|
||||
}
|
||||
|
||||
if [ "-h" == "$1" ]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
ARG=$1
|
||||
if [[ "$ARG" =~ ^"http".* ]]; then
|
||||
URL="$1/"
|
||||
else
|
||||
URL="$BASE_URL/$1/"
|
||||
fi
|
||||
|
||||
download_release
|
||||
check_nuttx
|
||||
check_nuttx_apps
|
||||
cd "$ORIGINAL_DIR"
|
Loading…
x
Reference in New Issue
Block a user