This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 407c5db66b696f6d91ba729ccfa664e250e32c53
Author: Adam Feuer <[email protected]>
AuthorDate: Sat Jul 4 14:47:02 2020 -0700

    check-release-candidate.sh script
    
    Squashed commit of the following:
    
    commit 40b788f8a0e79aa90734813a557c17f90fb9cdbe
    Author: Adam Feuer <[email protected]>
    Date:   Sat Jul 4 14:45:13 2020 -0700
    
        updated license header to APL 2.0; updated usage
    
    commit 81984aeeb503d90f30cb1d0c62a888e2a23235ed
    Author: Adam Feuer <[email protected]>
    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 <[email protected]>
    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 <[email protected]>
    Date:   Wed Jul 1 12:54:54 2020 -0700
    
    trap and remove tempfile; set -e to catch errors
    
    commit 196dc4ca4285b821cce644561296a2034e9a671e
    Author: Adam Feuer <[email protected]>
    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 <[email protected]>
    Date:   Wed Jul 1 11:35:01 2020 -0700
    
    intial addition
---
 tools/check-nuttx-release.sh | 129 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 129 insertions(+)

diff --git a/tools/check-nuttx-release.sh b/tools/check-nuttx-release.sh
new file mode 100755
index 0000000..664579d
--- /dev/null
+++ b/tools/check-nuttx-release.sh
@@ -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"

Reply via email to