You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by GitBox <gi...@apache.org> on 2020/07/07 22:13:36 UTC

[GitHub] [incubator-nuttx] adamfeuer opened a new pull request #1382: checkrelease.sh script now tries to build sim:nsh

adamfeuer opened a new pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382


   ## Summary
   
   - checkrelease.sh script now builds sim:nsh
   - usage has changed to use command line options
   - can check a directory on disk as well as a URL or release name
   
   ## Impact
   
   - none if you don't use the script
   - script usage options have changed
   
   ## Usage
   
   ```
   Usage: ./tools/checkrelease.sh [--verbose] [--url <URL-of-release-dir>] [--release <name-of-release] [--dir <path-to-directory>] [--tempdir <path-to-directory>]
      Given release full URL, release name, or a local directory, downloads or copies
      all files in that directory (which for a release should include nuttx and nuttx-apps, sha512, 
      asc, and tar.gz files), checks the release SHA512 and GPG signatures, checks the unpacked 
      directories for required files, and tries to build NuttX for sim:nsh.
   
      If tempdir is specified, it will be removed and recreated; if it is not specified, /tmp/nuttx-checkrelease
      is used.
   
      If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to 
      build for their platform.
   
   Examples:
   
     ./tools/checkrelease.sh --release 9.1.0-RC1
     ./tools/checkrelease.sh --url https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC1/
     ./tools/checkrelease.sh --dir ./some-dir-that-has-nuttx-and-apps
   ```
   
   ## Testing
   
   - manual, I used 9.1.0-RC1 and a modified working version of 9.1.0-RC1 (with `init.d/rcS` file)
   
   
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452619821



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1

Review comment:
       @xiaoxiang781216 I thought more about @btashton's comment above, and removed the option to quiet the GPG invocation completely. He suggested seeing the output since there's info there that would be lost with a simple "Ok". So I'm having the GPG output show on every run.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r451249909



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT

Review comment:
       don't need "cd $ORIGINAL_DIR;" and could remove $ORIGINAL_DIR

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"

Review comment:
       change to TEMPDIR="/tmp/nuttx-checkrelease" and remove TMP

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"

Review comment:
       Don't need

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
     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
-    usage
-    exit 0
-fi
+POSITIONAL=()
+while [[ $# -gt 0 ]]
+do
+key="$1"
 
-if [ -z "$1" ]; then
+URL=""
+DIRECTORY=""
+
+case $key in
+    -U|--url)
+    URL="$2"
+    shift # past argument
+    shift # past value
+    ;;
+    -R|--release)
+    RELEASE="$2"
+    URL="$BASE_URL/$RELEASE/"
+    shift # past argument
+    shift # past value
+    ;;
+    -D|--dir)
+    DIRECTORY="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -T|--tempdir)
+    TEMPDIR="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -h|--help)
+    shift # past argument
     usage
     exit 0
-fi
+    ;;
+    -V|--verbose)
+    VERBOSE=1
+    shift # past argument
+    shift # past value
+    ;;
+    *)    # unknown option
+    POSITIONAL+=("$1") # save it in an array for later
+    shift # past argument
+    ;;
+esac
+done
+set -- "${POSITIONAL[@]}" # restore positional parameters
 
-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 
+if [[ -n "$URL" ]]; then
+  check_nuttx
+  check_nuttx_apps
+else

Review comment:
       Why not directly call check_nuttx and check_nuttx_apps?

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
     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
-    usage
-    exit 0
-fi
+POSITIONAL=()
+while [[ $# -gt 0 ]]
+do
+key="$1"
 
-if [ -z "$1" ]; then
+URL=""
+DIRECTORY=""
+
+case $key in
+    -U|--url)
+    URL="$2"
+    shift # past argument
+    shift # past value
+    ;;
+    -R|--release)
+    RELEASE="$2"
+    URL="$BASE_URL/$RELEASE/"
+    shift # past argument
+    shift # past value
+    ;;
+    -D|--dir)
+    DIRECTORY="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -T|--tempdir)
+    TEMPDIR="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -h|--help)
+    shift # past argument
     usage
     exit 0
-fi
+    ;;
+    -V|--verbose)
+    VERBOSE=1
+    shift # past argument
+    shift # past value
+    ;;
+    *)    # unknown option
+    POSITIONAL+=("$1") # save it in an array for later
+    shift # past argument

Review comment:
       Move shift after esac but before done, so we can avoid dup shift in each case.

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  fi

Review comment:
       Could simplify to:
   ```
     if [[ -n "$URL" ]]; then
       wget -r --nd -np "$URL"
       DIRECTORY=.
     fi
   
     if [[ -n "$DIRECTORY" ]]; then
         cp -r "$DIRECTORY" "$TEMPDIR"
         cd "$TEMPDIR"
     else
       echo "One of --dir or --url is required!"
       exit 1
     fi
   ```
   and remove DIST_DIR

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"

Review comment:
       Should we need 2>&1 like gpg

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0

Review comment:
       Remove ERROR and directly use RETURN_CODE

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"

Review comment:
       Remove too

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "

Review comment:
       /tmp to tmpdir

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then

Review comment:
       Remove VERBOSE? let's always save the build log into output and show to the user only the error happen.

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"

Review comment:
       Why not reuse TEMPDIR?

##########
File path: tools/checkrelease.sh
##########
@@ -28,13 +28,23 @@ TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
+function validate_url(){

Review comment:
       add space before {

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
     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
-    usage
-    exit 0
-fi
+POSITIONAL=()

Review comment:
       change to UNKNOWN

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1

Review comment:
       Move 2>&1 into ()




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454532491



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,225 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+URL=""
+DIRECTORY=""
+
+while [[ $# -gt 0 ]]
+do
+  key="$1"
+
+  case $key 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
+      ;;
+      -V|--verbose)
+      VERBOSE=1
+      ;;
+      *)    # unknown option
+      UNKNOWN+=("$1") # save it in an array for later
+      ;;
+  esac
+  shift
+done
+set -- "${UNKNOWN[@]}" # restore unknown positional parameters
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
+if [[ (-n "$UNKNOWN") ]]; then
+  usage
+  exit 1
 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 
+if [[ -n "$URL" ]]; then
+  # download and check
+  check_nuttx
+  check_nuttx_apps
+else
+  # check directories without downloading
+  check_required_files "nuttx"
+  check_required_files "apps"
+fi
+check_sim_nsh_build

Review comment:
       @xiaoxiang781216 Ok, pushed changes to make the `wget` invocation work the way you suggested. It requires a trailing slash at the end of every URL. If the user gives a URL I add the slash because extra slashes are ok.
   
   My testing setup was ok— all the options (`--url`, `--release`, `--dir`) all work for me. 




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452588721



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
     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
-    usage
-    exit 0
-fi
+POSITIONAL=()
+while [[ $# -gt 0 ]]
+do
+key="$1"
 
-if [ -z "$1" ]; then
+URL=""
+DIRECTORY=""
+
+case $key in
+    -U|--url)
+    URL="$2"
+    shift # past argument
+    shift # past value
+    ;;
+    -R|--release)
+    RELEASE="$2"
+    URL="$BASE_URL/$RELEASE/"
+    shift # past argument
+    shift # past value
+    ;;
+    -D|--dir)
+    DIRECTORY="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -T|--tempdir)
+    TEMPDIR="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -h|--help)
+    shift # past argument
     usage
     exit 0
-fi
+    ;;
+    -V|--verbose)
+    VERBOSE=1
+    shift # past argument
+    shift # past value
+    ;;
+    *)    # unknown option
+    POSITIONAL+=("$1") # save it in an array for later
+    shift # past argument

Review comment:
       @xiaoxiang781216 I will look at this to see if I can do it.

##########
File path: tools/checkrelease.sh
##########
@@ -28,13 +28,23 @@ TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
+function validate_url(){

Review comment:
       @xiaoxiang781216 will fix




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] btashton commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
btashton commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658937746


   > > You can do
   > > 
   > > ```
   > > curl https://dist.apache.org/repos/dist/dev/incubator/nuttx/KEYS | gpg --import
   > > ```
   > > 
   > 
   > So the user have to import KEYS manually.
   They are also published in a public keys server, but yeah we don't know what keyid will be used so for updating pulling the latest KEYS file might be best. 
   
   > 
   > > That will import any public keys used by the project for signing. Currently it just contains mine but others would be appended if used.
   > 
   > > But this does do the check already. So maybe I don't understand what you are asking for?
   > 
   > Yes, the script will call gpg, but gpg complain the sign mismatch if user doesn't import KEY yet(most people don't know how to do this). Does it make sense that checkrelease.sh download KEY files too and pass them to gpg directly?
   
   I only worry about messing with someone's local keystore without being explict but maybe its not that big of a worry since our how-to check also suggests this. 
   
   If we wanted to use a temporary keystore (which would also make sure to only check against the KEYS file) we could do
   ```
   export GNUPGHOME="$tmpstore"
   gpg --import KEYS
   ...
   ```
   
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454511044



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,225 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"

Review comment:
       If you don't capture the output, why not remove `echo "$output"`




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658925450


   > You can do
   > 
   > ```
   > curl https://dist.apache.org/repos/dist/dev/incubator/nuttx/KEYS | gpg --import
   > ```
   > 
   
   So the user have to import KEYS manually.
   
   > That will import any public keys used by the project for signing. Currently it just contains mine but others would be appended if used.
   
   > But this does do the check already. So maybe I don't understand what you are asking for?
   
   Yes, the script will call gpg, but gpg complain the sign mismatch if user doesn't import KEY yet(most people don't know how to do this). Does it make sense that checkrelease.sh download KEY files too and pass them to gpg directly?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452592161



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
     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
-    usage
-    exit 0
-fi
+POSITIONAL=()
+while [[ $# -gt 0 ]]
+do
+key="$1"
 
-if [ -z "$1" ]; then
+URL=""
+DIRECTORY=""
+
+case $key in
+    -U|--url)
+    URL="$2"
+    shift # past argument
+    shift # past value
+    ;;
+    -R|--release)
+    RELEASE="$2"
+    URL="$BASE_URL/$RELEASE/"
+    shift # past argument
+    shift # past value
+    ;;
+    -D|--dir)
+    DIRECTORY="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -T|--tempdir)
+    TEMPDIR="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -h|--help)
+    shift # past argument
     usage
     exit 0
-fi
+    ;;
+    -V|--verbose)
+    VERBOSE=1
+    shift # past argument
+    shift # past value
+    ;;
+    *)    # unknown option
+    POSITIONAL+=("$1") # save it in an array for later
+    shift # past argument
+    ;;
+esac
+done
+set -- "${POSITIONAL[@]}" # restore positional parameters
 
-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 
+if [[ -n "$URL" ]]; then
+  check_nuttx
+  check_nuttx_apps
+else

Review comment:
       But check_nuttx/check_nuttx_apps should work with local directory too if my understanding is correct.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] btashton commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
btashton commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-655215286


   @adamfeuer I gave it ago against the release I just staged and it seemed to work.  A couple comments:
   1. When I put a bad release name in `9.1.0-RC2A` the downloads 404ed but the script kept running all the checks.  We should probably make sure we have the files that we are looking for.
   2. Can we quiet the wget it
   
   Thanks for putting this together.  The dir option is nice for checking prior to committing to the release staging SVN.
   
   ```
   ❯ curl -s https://raw.githubusercontent.com/apache/incubator-nuttx/9bc97e7c0dfe0d392e39f11419081cf48db3b8fd/tools/checkrelease.sh | bash /dev/stdin --release 9.1.0-RC2
   --2020-07-07 17:43:51--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/
   Resolving dist.apache.org (dist.apache.org)... 13.90.137.153
   Connecting to dist.apache.org (dist.apache.org)|13.90.137.153|:443... connected.
   HTTP request sent, awaiting response... 200 OK
   Length: 886 [text/html]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/index.html’
   
   dist.apache.org/index.html                100%[==================================================================================>]     886  --.-KB/s    in 0s      
   
   2020-07-07 17:43:59 (12.3 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/index.html’ saved [886/886]
   
   Loading robots.txt; please ignore errors.
   --2020-07-07 17:43:59--  https://dist.apache.org/robots.txt
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 165 [text/plain]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/robots.txt’
   
   dist.apache.org/robots.txt                100%[==================================================================================>]     165  --.-KB/s    in 0s      
   
   2020-07-07 17:44:00 (180 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/robots.txt’ saved [165/165]
   
   --2020-07-07 17:44:00--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/apache-nuttx-9.1.0-incubating.tar.gz
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 23767677 (23M) [application/gzip]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-9.1.0-incubating.tar.gz’
   
   dist.apache.org/apache-nuttx-9.1.0-incuba 100%[==================================================================================>]  22.67M  8.90MB/s    in 2.5s    
   
   2020-07-07 17:44:05 (8.90 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-9.1.0-incubating.tar.gz’ saved [23767677/23767677]
   
   --2020-07-07 17:44:05--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/apache-nuttx-9.1.0-incubating.tar.gz.asc
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 833 [application/pgp-signature]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-9.1.0-incubating.tar.gz.asc’
   
   dist.apache.org/apache-nuttx-9.1.0-incuba 100%[==================================================================================>]     833  --.-KB/s    in 0s      
   
   2020-07-07 17:44:07 (34.1 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-9.1.0-incubating.tar.gz.asc’ saved [833/833]
   
   --2020-07-07 17:44:07--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/apache-nuttx-9.1.0-incubating.tar.gz.sha512
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 167 [text/plain]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-9.1.0-incubating.tar.gz.sha512’
   
   dist.apache.org/apache-nuttx-9.1.0-incuba 100%[==================================================================================>]     167  --.-KB/s    in 0s      
   
   2020-07-07 17:44:09 (2.99 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-9.1.0-incubating.tar.gz.sha512’ saved [167/167]
   
   --2020-07-07 17:44:09--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/apache-nuttx-apps-9.1.0-incubating.tar.gz
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 3756073 (3.6M) [application/gzip]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-apps-9.1.0-incubating.tar.gz’
   
   dist.apache.org/apache-nuttx-apps-9.1.0-i 100%[==================================================================================>]   3.58M  5.89MB/s    in 0.6s    
   
   2020-07-07 17:44:11 (5.89 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-apps-9.1.0-incubating.tar.gz’ saved [3756073/3756073]
   
   --2020-07-07 17:44:11--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/apache-nuttx-apps-9.1.0-incubating.tar.gz.asc
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 833 [application/pgp-signature]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-apps-9.1.0-incubating.tar.gz.asc’
   
   dist.apache.org/apache-nuttx-apps-9.1.0-i 100%[==================================================================================>]     833  --.-KB/s    in 0s      
   
   2020-07-07 17:44:14 (13.3 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-apps-9.1.0-incubating.tar.gz.asc’ saved [833/833]
   
   --2020-07-07 17:44:14--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/apache-nuttx-apps-9.1.0-incubating.tar.gz.sha512
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 172 [text/plain]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-apps-9.1.0-incubating.tar.gz.sha512’
   
   dist.apache.org/apache-nuttx-apps-9.1.0-i 100%[==================================================================================>]     172  --.-KB/s    in 0s      
   
   2020-07-07 17:44:16 (2.81 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-apps-9.1.0-incubating.tar.gz.sha512’ saved [172/172]
   
   FINISHED --2020-07-07 17:44:16--
   Total wall clock time: 25s
   Downloaded: 8 files, 26M in 3.2s (8.32 MB/s)
   Checking apache-nuttx-9.1.0-incubating.tar.gz sha512...
    OK: apache-nuttx-9.1.0-incubating.tar.gz sha512 hash matches.
   
   Checking apache-nuttx-9.1.0-incubating.tar.gz GPG signature:
    OK: apache-nuttx-9.1.0-incubating.tar.gz gpg signature matches.
   
   Checking apache-nuttx-9.1.0-incubating.tar.gz for required files:
    OK: all required files exist in nuttx.
   
   Checking apache-nuttx-apps-9.1.0-incubating.tar.gz sha512...
    OK: apache-nuttx-apps-9.1.0-incubating.tar.gz sha512 hash matches.
   
   Checking apache-nuttx-apps-9.1.0-incubating.tar.gz GPG signature:
    OK: apache-nuttx-apps-9.1.0-incubating.tar.gz gpg signature matches.
   
   Checking apache-nuttx-apps-9.1.0-incubating.tar.gz for required files:
    OK: all required files exist in apps.
   
   Trying to build nuttx sim:nsh...
    OK: we were able to build sim:nsh
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658896869


   @xiaoxiang781216 Ok, I removed the duplicate method from the bad merge, retested all the options, squashed, and force pushed. Will you look and see if this is ok? And merge if it is?
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] btashton edited a comment on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
btashton edited a comment on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-655215286


   @adamfeuer I gave it ago against the release I just staged and it seemed to work.  A couple comments:
   1. When I put a bad release name in `9.1.0-RC2A` the downloads 404ed but the script kept running all the checks.  We should probably make sure we have the files that we are looking for.
   2. Can we quiet the wget it
   3. The more verbose GPG output before was nice because you could see if there was an Apache email associated with the signature.
   ```
   Checking apache-nuttx-apps-9.1.0-incubating.tar.gz sha512...
   apache-nuttx-apps-9.1.0-incubating.tar.gz: OK
   Checking apache-nuttx-apps-9.1.0-incubating.tar.gz GPG signature:
   gpg: Signature made Tue 07 Jul 2020 05:06:27 PM PDT
   gpg:                using RSA key 66C4832A165ECC9354895A209750ED7E692B99E2
   gpg: Good signature from "Brennan Ashton <ba...@brennanashton.com>" [ultimate]
   gpg:                 aka "Brennan Ashton <bt...@apache.org>" [ultimate]
   ```
   
   Thanks for putting this together.  The dir option is nice for checking prior to committing to the release staging SVN.
   
   ```
   ❯ curl -s https://raw.githubusercontent.com/apache/incubator-nuttx/9bc97e7c0dfe0d392e39f11419081cf48db3b8fd/tools/checkrelease.sh | bash /dev/stdin --release 9.1.0-RC2
   --2020-07-07 17:43:51--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/
   Resolving dist.apache.org (dist.apache.org)... 13.90.137.153
   Connecting to dist.apache.org (dist.apache.org)|13.90.137.153|:443... connected.
   HTTP request sent, awaiting response... 200 OK
   Length: 886 [text/html]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/index.html’
   
   dist.apache.org/index.html                100%[==================================================================================>]     886  --.-KB/s    in 0s      
   
   2020-07-07 17:43:59 (12.3 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/index.html’ saved [886/886]
   
   Loading robots.txt; please ignore errors.
   --2020-07-07 17:43:59--  https://dist.apache.org/robots.txt
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 165 [text/plain]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/robots.txt’
   
   dist.apache.org/robots.txt                100%[==================================================================================>]     165  --.-KB/s    in 0s      
   
   2020-07-07 17:44:00 (180 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/robots.txt’ saved [165/165]
   
   --2020-07-07 17:44:00--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/apache-nuttx-9.1.0-incubating.tar.gz
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 23767677 (23M) [application/gzip]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-9.1.0-incubating.tar.gz’
   
   dist.apache.org/apache-nuttx-9.1.0-incuba 100%[==================================================================================>]  22.67M  8.90MB/s    in 2.5s    
   
   2020-07-07 17:44:05 (8.90 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-9.1.0-incubating.tar.gz’ saved [23767677/23767677]
   
   --2020-07-07 17:44:05--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/apache-nuttx-9.1.0-incubating.tar.gz.asc
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 833 [application/pgp-signature]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-9.1.0-incubating.tar.gz.asc’
   
   dist.apache.org/apache-nuttx-9.1.0-incuba 100%[==================================================================================>]     833  --.-KB/s    in 0s      
   
   2020-07-07 17:44:07 (34.1 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-9.1.0-incubating.tar.gz.asc’ saved [833/833]
   
   --2020-07-07 17:44:07--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/apache-nuttx-9.1.0-incubating.tar.gz.sha512
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 167 [text/plain]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-9.1.0-incubating.tar.gz.sha512’
   
   dist.apache.org/apache-nuttx-9.1.0-incuba 100%[==================================================================================>]     167  --.-KB/s    in 0s      
   
   2020-07-07 17:44:09 (2.99 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-9.1.0-incubating.tar.gz.sha512’ saved [167/167]
   
   --2020-07-07 17:44:09--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/apache-nuttx-apps-9.1.0-incubating.tar.gz
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 3756073 (3.6M) [application/gzip]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-apps-9.1.0-incubating.tar.gz’
   
   dist.apache.org/apache-nuttx-apps-9.1.0-i 100%[==================================================================================>]   3.58M  5.89MB/s    in 0.6s    
   
   2020-07-07 17:44:11 (5.89 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-apps-9.1.0-incubating.tar.gz’ saved [3756073/3756073]
   
   --2020-07-07 17:44:11--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/apache-nuttx-apps-9.1.0-incubating.tar.gz.asc
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 833 [application/pgp-signature]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-apps-9.1.0-incubating.tar.gz.asc’
   
   dist.apache.org/apache-nuttx-apps-9.1.0-i 100%[==================================================================================>]     833  --.-KB/s    in 0s      
   
   2020-07-07 17:44:14 (13.3 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-apps-9.1.0-incubating.tar.gz.asc’ saved [833/833]
   
   --2020-07-07 17:44:14--  https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC2/apache-nuttx-apps-9.1.0-incubating.tar.gz.sha512
   Reusing existing connection to dist.apache.org:443.
   HTTP request sent, awaiting response... 200 OK
   Length: 172 [text/plain]
   Saving to: ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-apps-9.1.0-incubating.tar.gz.sha512’
   
   dist.apache.org/apache-nuttx-apps-9.1.0-i 100%[==================================================================================>]     172  --.-KB/s    in 0s      
   
   2020-07-07 17:44:16 (2.81 MB/s) - ‘/tmp/nuttx-checkrelease/dist.apache.org/apache-nuttx-apps-9.1.0-incubating.tar.gz.sha512’ saved [172/172]
   
   FINISHED --2020-07-07 17:44:16--
   Total wall clock time: 25s
   Downloaded: 8 files, 26M in 3.2s (8.32 MB/s)
   Checking apache-nuttx-9.1.0-incubating.tar.gz sha512...
    OK: apache-nuttx-9.1.0-incubating.tar.gz sha512 hash matches.
   
   Checking apache-nuttx-9.1.0-incubating.tar.gz GPG signature:
    OK: apache-nuttx-9.1.0-incubating.tar.gz gpg signature matches.
   
   Checking apache-nuttx-9.1.0-incubating.tar.gz for required files:
    OK: all required files exist in nuttx.
   
   Checking apache-nuttx-apps-9.1.0-incubating.tar.gz sha512...
    OK: apache-nuttx-apps-9.1.0-incubating.tar.gz sha512 hash matches.
   
   Checking apache-nuttx-apps-9.1.0-incubating.tar.gz GPG signature:
    OK: apache-nuttx-apps-9.1.0-incubating.tar.gz gpg signature matches.
   
   Checking apache-nuttx-apps-9.1.0-incubating.tar.gz for required files:
    OK: all required files exist in apps.
   
   Trying to build nuttx sim:nsh...
    OK: we were able to build sim:nsh
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452588594



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
     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
-    usage
-    exit 0
-fi
+POSITIONAL=()

Review comment:
       @xiaoxiang781216 will fix
   




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-655219240


   @btashton I will quiet the `wget`. Re: not finding the file... should we quit immediately then...?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 merged pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 merged pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382


   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452587085



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT

Review comment:
       @xiaoxiang781216 will fix

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"

Review comment:
       @xiaoxiang781216 will fix




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 edited a comment on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 edited a comment on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658345919


   It's almost done, I squanch your change and make some clean:
   https://github.com/xiaoxiang781216/incubator-nuttx/commit/b2fd53ae0bdae78ad73b4ae722756789d05a4ab7
   Other major change is:
   1.Keep all content in /tmp/nuttx-release
   2.Assume the content in local folder same as website
   The first change help we identify the root cause if the check fail.
   The second change help we find the problem just before the release is uploaded to the website.
   If these change seem reasonable, please resest your local branch and cherry-pick the change.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r453911733



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+while [[ $# -gt 0 ]]
+do
+  key="$1"
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
-fi
+  URL=""
+  DIRECTORY=""
 
-ARG=$1
-if [[ "$ARG" =~ ^"http".* ]]; then
-  URL="$1/"
-else
-  URL="$BASE_URL/$1/"
+  case $key in
+      -U|--url)
+      URL="$2"
+      shift
+      ;;
+      -R|--release)
+      RELEASE="$2"
+      URL="$BASE_URL/$RELEASE/"
+      shift
+      ;;
+      -D|--dir)
+      DIRECTORY="$(readlink -f $2)"
+      shift
+      ;;
+      -T|--tempdir)
+      TEMPDIR="$(readlink -f $2)"
+      shift
+      ;;
+      -h|--help)
+      usage
+      exit 0
+      ;;
+      -V|--verbose)
+      VERBOSE=1
+      ;;
+      *)    # unknown option
+      POSITIONAL+=("$1") # save it in an array for later
+      shift # past argument

Review comment:
       @xiaoxiang781216 will remove




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-655164156


   @xiaoxiang781216 I added the `sim:nsh` build to the `checkrelease.sh` script as you suggested. Will you take a look?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454512974



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,225 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+URL=""
+DIRECTORY=""
+
+while [[ $# -gt 0 ]]
+do
+  key="$1"
+
+  case $key 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
+      ;;
+      -V|--verbose)
+      VERBOSE=1
+      ;;
+      *)    # unknown option
+      UNKNOWN+=("$1") # save it in an array for later
+      ;;
+  esac
+  shift
+done
+set -- "${UNKNOWN[@]}" # restore unknown positional parameters
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
+if [[ (-n "$UNKNOWN") ]]; then
+  usage

Review comment:
       @xiaoxiang781216 Yes, good idea, will remove the UNKNOWN processing. 




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r453910316



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+while [[ $# -gt 0 ]]
+do
+  key="$1"
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
-fi
+  URL=""
+  DIRECTORY=""
 
-ARG=$1
-if [[ "$ARG" =~ ^"http".* ]]; then
-  URL="$1/"
-else
-  URL="$BASE_URL/$1/"
+  case $key in

Review comment:
       @xiaoxiang781216 using code as documentation, for clarity. I will take this out if you want, let me know.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452587782



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "

Review comment:
       @xiaoxiang781216 will fix




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-655222008


   @btashton I pushed a change that checks the URL, if it doesn't exist the script quits immediately. I also quieted the wget.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452617941



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then

Review comment:
       @xiaoxiang781216 I tried it the way you suggest— what happens is all the newlines get stripped out when being captured, so the output is unreadable for long things like the nuttx compilation. The `--verbose` option lets you see the compilation formatted like you normally see it, it's a lot more readable. I'd like to leave the verbose switch in. But if you feel strongly about it, I'll do it your way, let me know.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452587763



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then

Review comment:
       @xiaoxiang781216 The problem with that is if there is a failure, the error text is often quite long, and obscures the other output. I'll see what I can do to solve that problem.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454507297



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+while [[ $# -gt 0 ]]
+do
+  key="$1"
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
-fi
+  URL=""
+  DIRECTORY=""
 
-ARG=$1
-if [[ "$ARG" =~ ^"http".* ]]; then
-  URL="$1/"
-else
-  URL="$BASE_URL/$1/"
+  case $key in

Review comment:
       I am fine.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454526720



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,225 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+URL=""
+DIRECTORY=""
+
+while [[ $# -gt 0 ]]
+do
+  key="$1"
+
+  case $key 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
+      ;;
+      -V|--verbose)
+      VERBOSE=1
+      ;;
+      *)    # unknown option
+      UNKNOWN+=("$1") # save it in an array for later
+      ;;
+  esac
+  shift
+done
+set -- "${UNKNOWN[@]}" # restore unknown positional parameters
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
+if [[ (-n "$UNKNOWN") ]]; then
+  usage
+  exit 1
 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 
+if [[ -n "$URL" ]]; then
+  # download and check
+  check_nuttx
+  check_nuttx_apps
+else
+  # check directories without downloading
+  check_required_files "nuttx"
+  check_required_files "apps"
+fi
+check_sim_nsh_build

Review comment:
       @xiaoxiang781216 Ah, it's a difference in your invocation of wget vs. mine. When I change to yours, the dist.apache.org directory is not created. So I was testing correctly before, but when I changed to your wget just now, that broke the script.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452617696



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"

Review comment:
       If so, why we don't remove trap directly to keep the result?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] btashton commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
btashton commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658913636


   You can do 
   ```
   curl https://dist.apache.org/repos/dist/dev/incubator/nuttx/KEYS | gpg --import
   ```
   
   That will import any public keys used by the project for signing. Currently it just contains mine but others would be appended if used. 


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452588241



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1

Review comment:
       @xiaoxiang781216 If I do that it, I think it will only apply to the last command, not all of them. I don't think that's what you want— is it?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452609705



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"

Review comment:
       @xiaoxiang781216 This is moving the nuttx and nuttx-apps to the /tmp dir so they are there for the user to unpack and build. This the reason I separated `$TMP` and `$TEMPDIR`. I'm going to leave them in for now. If you have a good way to leave the files somewhere like /tmp, let me know. I can't use `$TEMPDIR` because the trap removes it.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454519482



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo

Review comment:
       @xiaoxiang781216 Here's the output from `wget --version`:
   
   ```
   GNU Wget 1.19.4 built on linux-gnu.
   
   -cares +digest -gpgme +https +ipv6 +iri +large-file -metalink +nls 
   +ntlm +opie +psl +ssl/openssl 
   
   Wgetrc: 
       /etc/wgetrc (system)
   Locale: 
       /usr/share/locale 
   Compile: 
       gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/etc/wgetrc" 
       -DLOCALEDIR="/usr/share/locale" -I. -I../../src -I../lib 
       -I../../lib -Wdate-time -D_FORTIFY_SOURCE=2 -DHAVE_LIBSSL -DNDEBUG 
       -g -O2 -fdebug-prefix-map=/build/wget-Xb5Z7Y/wget-1.19.4=. 
       -fstack-protector-strong -Wformat -Werror=format-security 
       -DNO_SSLv2 -D_FILE_OFFSET_BITS=64 -g -Wall 
   Link: 
       gcc -DHAVE_LIBSSL -DNDEBUG -g -O2 
       -fdebug-prefix-map=/build/wget-Xb5Z7Y/wget-1.19.4=. 
       -fstack-protector-strong -Wformat -Werror=format-security 
       -DNO_SSLv2 -D_FILE_OFFSET_BITS=64 -g -Wall -Wl,-Bsymbolic-functions 
       -Wl,-z,relro -Wl,-z,now -lpcre -luuid -lidn2 -lssl -lcrypto -lpsl 
       ftp-opie.o openssl.o http-ntlm.o ../lib/libgnu.a 
   
   Copyright (C) 2015 Free Software Foundation, Inc.
   License GPLv3+: GNU GPL version 3 or later
   <http://www.gnu.org/licenses/gpl.html>.
   This is free software: you are free to change and redistribute it.
   There is NO WARRANTY, to the extent permitted by law.
   
   Originally written by Hrvoje Niksic <hn...@xemacs.org>.
   Please send bug reports and questions to <bu...@gnu.org>.
   ```
   
   What's your wget version?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-655224913


   @btashton I added a `-G` and `--gpg-output` flag to the script. If you give that option, it will show the verbose GPG output. Let me know if this works for you.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r453921205



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo

Review comment:
       @xiaoxiang781216 re: wget output, here's mine:
   
   ```
   $ tree
   .
   
   0 directories, 0 files
   $ wget -q -r -nd -np https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC1
   $ tree
   .
   ├── 9.1.0-RC1
   ├── apache-nuttx-9.0.0-incubating.tar.gz
   ├── apache-nuttx-9.0.0-incubating.tar.gz.1
   ├── apache-nuttx-9.0.0-incubating.tar.gz.asc
   ├── apache-nuttx-9.0.0-incubating.tar.gz.asc.1
   ├── apache-nuttx-9.0.0-incubating.tar.gz.sha512
   ├── apache-nuttx-9.0.0-incubating.tar.gz.sha512.1
   ├── apache-nuttx-9.1.0-incubating.tar.gz
   ├── apache-nuttx-9.1.0-incubating.tar.gz.1
   ├── apache-nuttx-9.1.0-incubating.tar.gz.2
   ├── apache-nuttx-9.1.0-incubating.tar.gz.asc
   ├── apache-nuttx-9.1.0-incubating.tar.gz.asc.1
   ├── apache-nuttx-9.1.0-incubating.tar.gz.asc.2
   ├── apache-nuttx-9.1.0-incubating.tar.gz.sha512
   ├── apache-nuttx-9.1.0-incubating.tar.gz.sha512.1
   ├── apache-nuttx-9.1.0-incubating.tar.gz.sha512.2
   ├── apache-nuttx-apps-9.0.0-incubating.tar.gz
   ├── apache-nuttx-apps-9.0.0-incubating.tar.gz.1
   ├── apache-nuttx-apps-9.0.0-incubating.tar.gz.asc
   ├── apache-nuttx-apps-9.0.0-incubating.tar.gz.asc.1
   ├── apache-nuttx-apps-9.0.0-incubating.tar.gz.sha512
   ├── apache-nuttx-apps-9.0.0-incubating.tar.gz.sha512.1
   ├── apache-nuttx-apps-9.1.0-incubating.tar.gz
   ├── apache-nuttx-apps-9.1.0-incubating.tar.gz.1
   ├── apache-nuttx-apps-9.1.0-incubating.tar.gz.2
   ├── apache-nuttx-apps-9.1.0-incubating.tar.gz.asc
   ├── apache-nuttx-apps-9.1.0-incubating.tar.gz.asc.1
   ├── apache-nuttx-apps-9.1.0-incubating.tar.gz.asc.2
   ├── apache-nuttx-apps-9.1.0-incubating.tar.gz.sha512
   ├── apache-nuttx-apps-9.1.0-incubating.tar.gz.sha512.1
   ├── apache-nuttx-apps-9.1.0-incubating.tar.gz.sha512.2
   ├── index.html
   ├── index.html.1
   ├── index.html.2
   ├── index.html.3
   ├── index.html.4
   ├── KEYS
   └── robots.txt
   
   0 directories, 38 files
   $ lsb_release -a
   No LSB modules are available.
   Distributor ID:	Ubuntu
   Description:	Ubuntu 18.04.4 LTS
   Release:	18.04
   Codename:	bionic
   ```
   
   On my system that invocation downloads extra files. You can see from the first `tree` command above I'm starting with an empty directory.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454506981



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo

Review comment:
       I hit the similar issue only when the temp directory isn't empty and wget rename the new download to *.1.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658918457


   @xiaoxiang781216 @btashton Thank you for the feedback and help with this script. It's much better code now. 🙂 👍 


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454804482



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,208 @@
 #
 #############################################################################
 
-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 check_sim_nsh_build() {

Review comment:
       Duplicate with line 124, remove?
   Let's squash the commit to make the history clear. Other change looks good.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454523667



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,225 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+URL=""
+DIRECTORY=""
+
+while [[ $# -gt 0 ]]
+do
+  key="$1"
+
+  case $key 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
+      ;;
+      -V|--verbose)
+      VERBOSE=1
+      ;;
+      *)    # unknown option
+      UNKNOWN+=("$1") # save it in an array for later
+      ;;
+  esac
+  shift
+done
+set -- "${UNKNOWN[@]}" # restore unknown positional parameters
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
+if [[ (-n "$UNKNOWN") ]]; then
+  usage
+  exit 1
 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 
+if [[ -n "$URL" ]]; then
+  # download and check
+  check_nuttx
+  check_nuttx_apps
+else
+  # check directories without downloading
+  check_required_files "nuttx"
+  check_required_files "apps"
+fi
+check_sim_nsh_build

Review comment:
       @xiaoxiang781216 I'm not sure what you mean here. Yes, I'm testing the script several times with each modification. You can comment out the trap statement, add `--verbose`, run the script, and verify that `sim:nsh` is built in the correct directory. When I do that I can see it's using the correct temporary directory `/tmp/nuttx-checkrelease`.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658421775


   @xiaoxiang781216 Your changes look good and I cherry-picked them, but they break the `--dir` option for me. I also pushed a small change to fix that `--dir` option problem. If you're ok with this, please merge; or if you want me to squash and rebase against master I can do that too, let me know. Or if you want more changes, let me know.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r453919591



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo

Review comment:
       @xiaoxiang781216 The extra `echo` is there for formatting, to leave a blank line. I can take it out if you want, let me know.
   




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] btashton commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
btashton commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658914234


   But this does do the check already. So maybe I don't understand what you are asking for?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452617210



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
     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
-    usage
-    exit 0
-fi
+POSITIONAL=()
+while [[ $# -gt 0 ]]
+do
+key="$1"
 
-if [ -z "$1" ]; then
+URL=""
+DIRECTORY=""
+
+case $key in
+    -U|--url)
+    URL="$2"
+    shift # past argument
+    shift # past value
+    ;;
+    -R|--release)
+    RELEASE="$2"
+    URL="$BASE_URL/$RELEASE/"
+    shift # past argument
+    shift # past value
+    ;;
+    -D|--dir)
+    DIRECTORY="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -T|--tempdir)
+    TEMPDIR="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -h|--help)
+    shift # past argument
     usage
     exit 0
-fi
+    ;;
+    -V|--verbose)
+    VERBOSE=1
+    shift # past argument
+    shift # past value
+    ;;
+    *)    # unknown option
+    POSITIONAL+=("$1") # save it in an array for later
+    shift # past argument

Review comment:
       @xiaoxiang781216 fixed




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r453223073



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then

Review comment:
       Add quoto like this:
   ```
   echo "$output"
   ```
   You will get the corret format. https://stackoverflow.com/questions/4651437/how-do-i-set-a-variable-to-the-output-of-a-command-in-bash




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-657799320


   @xiaoxiang781216 Ok, I pushed changes to address the resolved comments. I have questions above— the wget invocation you suggest leaves extra files in my directory. I'm on Ubuntu Linux 18.02. See above for the actual output The other unresolved stuff seems stylistic, I'll do it your way if you feel strongly about it, just let me know. 
   
   Thanks for being willing to look at this code! :)


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452618999



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
     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
-    usage
-    exit 0
-fi
+POSITIONAL=()
+while [[ $# -gt 0 ]]
+do
+key="$1"
 
-if [ -z "$1" ]; then
+URL=""
+DIRECTORY=""
+
+case $key in
+    -U|--url)
+    URL="$2"
+    shift # past argument
+    shift # past value
+    ;;
+    -R|--release)
+    RELEASE="$2"
+    URL="$BASE_URL/$RELEASE/"
+    shift # past argument
+    shift # past value
+    ;;
+    -D|--dir)
+    DIRECTORY="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -T|--tempdir)
+    TEMPDIR="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -h|--help)
+    shift # past argument
     usage
     exit 0
-fi
+    ;;
+    -V|--verbose)
+    VERBOSE=1
+    shift # past argument
+    shift # past value
+    ;;
+    *)    # unknown option
+    POSITIONAL+=("$1") # save it in an array for later
+    shift # past argument
+    ;;
+esac
+done
+set -- "${POSITIONAL[@]}" # restore positional parameters
 
-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 
+if [[ -n "$URL" ]]; then
+  check_nuttx
+  check_nuttx_apps
+else

Review comment:
       @xiaoxiang781216 The check_nuttx/check_nuttx_apps expect tar.gz files and try to decompress them. I thought about adding arguments to suppress them, but factoring the code this way seemed cleaner.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452587870



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"

Review comment:
       @xiaoxiang781216 I'll try that out and see if it works.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r453909883



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+while [[ $# -gt 0 ]]
+do
+  key="$1"
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
-fi
+  URL=""
+  DIRECTORY=""

Review comment:
       @xiaoxiang781216 that's a mistake, will fix 




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452588562



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
     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
-    usage
-    exit 0
-fi
+POSITIONAL=()
+while [[ $# -gt 0 ]]
+do
+key="$1"
 
-if [ -z "$1" ]; then
+URL=""
+DIRECTORY=""
+
+case $key in
+    -U|--url)
+    URL="$2"
+    shift # past argument
+    shift # past value
+    ;;
+    -R|--release)
+    RELEASE="$2"
+    URL="$BASE_URL/$RELEASE/"
+    shift # past argument
+    shift # past value
+    ;;
+    -D|--dir)
+    DIRECTORY="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -T|--tempdir)
+    TEMPDIR="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -h|--help)
+    shift # past argument
     usage
     exit 0
-fi
+    ;;
+    -V|--verbose)
+    VERBOSE=1
+    shift # past argument
+    shift # past value
+    ;;
+    *)    # unknown option
+    POSITIONAL+=("$1") # save it in an array for later
+    shift # past argument
+    ;;
+esac
+done
+set -- "${POSITIONAL[@]}" # restore positional parameters
 
-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 
+if [[ -n "$URL" ]]; then
+  check_nuttx
+  check_nuttx_apps
+else

Review comment:
       @xiaoxiang781216 I'm not sure what you mean here— do you mean, why am I checking for the $URL? If so, it's because there's an option to check a directory on disk, and those functions assume a URL is given... and so will try to download files...




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454509968



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,225 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+URL=""
+DIRECTORY=""
+
+while [[ $# -gt 0 ]]
+do
+  key="$1"
+
+  case $key 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
+      ;;
+      -V|--verbose)
+      VERBOSE=1
+      ;;
+      *)    # unknown option
+      UNKNOWN+=("$1") # save it in an array for later
+      ;;
+  esac
+  shift
+done
+set -- "${UNKNOWN[@]}" # restore unknown positional parameters
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
+if [[ (-n "$UNKNOWN") ]]; then
+  usage

Review comment:
       If we don't support the unknown argument, why we don't directly quit at line 215:
   ```
   * )
   usage
   exit 1
   ```




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r453916442



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+while [[ $# -gt 0 ]]
+do
+  key="$1"
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
-fi
+  URL=""
+  DIRECTORY=""
 
-ARG=$1
-if [[ "$ARG" =~ ^"http".* ]]; then
-  URL="$1/"
-else
-  URL="$BASE_URL/$1/"
+  case $key in
+      -U|--url)
+      URL="$2"
+      shift

Review comment:
       @xiaoxiang781216 will fix




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452619393



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  fi

Review comment:
       @xiaoxiang781216 I think I want to leave the code as is. I tried the `wget` command options you suggest, but they don't work exactly the same way that @btashton's do. Are you ok if we leave as-is?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454520646



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo

Review comment:
       @xiaoxiang781216 aha. I figured it out. You need the trailing slash at the end of the URL. If I place it there, no duplicate files are created. I don't know why. I'll change the code to use your invocation and ensure there is a trailing slash at the end of the URL.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658319283


   @xiaoxiang781216 Ok, I think I implemented all your suggestions. Anything else left to do?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454512376



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,225 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"

Review comment:
       @xiaoxiang781216 Yes, that's a mistake, will remove. 




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r455203436



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,208 @@
 #
 #############################################################################
 
-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 check_sim_nsh_build() {

Review comment:
       @xiaoxiang781216 Thanks for catching — that's the result of a bad merge. Will fix. I'll squash and force push after that.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454509316



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,225 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+URL=""
+DIRECTORY=""
+
+while [[ $# -gt 0 ]]
+do
+  key="$1"
+
+  case $key 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
+      ;;
+      -V|--verbose)
+      VERBOSE=1
+      ;;
+      *)    # unknown option
+      UNKNOWN+=("$1") # save it in an array for later
+      ;;
+  esac
+  shift
+done
+set -- "${UNKNOWN[@]}" # restore unknown positional parameters
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
+if [[ (-n "$UNKNOWN") ]]; then
+  usage
+  exit 1
 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 
+if [[ -n "$URL" ]]; then
+  # download and check
+  check_nuttx
+  check_nuttx_apps
+else
+  # check directories without downloading
+  check_required_files "nuttx"
+  check_required_files "apps"
+fi
+check_sim_nsh_build

Review comment:
       Do you try build sim:nsh with the download from website? I don't think the script can work as expect, because:
   1.the unzip nuttx/apps is moved to /tmp
   2.but we try to build /tmp/nuttx-release/nuttx




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454525440



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,225 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+URL=""
+DIRECTORY=""
+
+while [[ $# -gt 0 ]]
+do
+  key="$1"
+
+  case $key 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
+      ;;
+      -V|--verbose)
+      VERBOSE=1
+      ;;
+      *)    # unknown option
+      UNKNOWN+=("$1") # save it in an array for later
+      ;;
+  esac
+  shift
+done
+set -- "${UNKNOWN[@]}" # restore unknown positional parameters
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
+if [[ (-n "$UNKNOWN") ]]; then
+  usage
+  exit 1
 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 
+if [[ -n "$URL" ]]; then
+  # download and check
+  check_nuttx
+  check_nuttx_apps
+else
+  # check directories without downloading
+  check_required_files "nuttx"
+  check_required_files "apps"
+fi
+check_sim_nsh_build

Review comment:
       @xiaoxiang781216 Ok, you might be right, something is messed up with how I'm testing. Looking into it.
   




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452590774



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1

Review comment:
       If so, how about we change (2>&1) out $(gpg ...) too?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r454518789



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo

Review comment:
       @xiaoxiang781216 I've tried your invocation several times in empty directories, and get the same result as above. What temp directory are you referring to?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer edited a comment on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer edited a comment on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658421775


   @xiaoxiang781216 Your changes look good and I cherry-picked them, but they break the `--dir` option for me. I pushed a small change to fix that `--dir` option problem. If you're ok with this, please merge; or if you want me to squash and rebase against master I can do that too, let me know. Or if you want more changes, let me know.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452587411



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"

Review comment:
       @xiaoxiang781216 I'll make these consistent

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"

Review comment:
       @xiaoxiang781216 will fix

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"

Review comment:
       @xiaoxiang781216 will fix




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-656480328


   @btashton @xiaoxiang781216 Ok, pushed changes that incorporate most of @xiaoxiang781216's suggestions.
   
   What do you think?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658910457


   LGTM. Since the build check can't  verify the new script, let's merge it now.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658911045


   @btashton the remaining feature is the sign verification, how to find the correct public key for gpg?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r453220120



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  fi

Review comment:
       Here is my output:
   ```
   wget -q -r -nd -np https://dist.apache.org/repos/dist/dev/incubator/nuttx/9.1.0-RC1/
   tree
   .
   ├── apache-nuttx-9.1.0-incubating.tar.gz
   ├── apache-nuttx-9.1.0-incubating.tar.gz.asc
   ├── apache-nuttx-9.1.0-incubating.tar.gz.sha512
   ├── apache-nuttx-apps-9.1.0-incubating.tar.gz
   ├── apache-nuttx-apps-9.1.0-incubating.tar.gz.asc
   ├── apache-nuttx-apps-9.1.0-incubating.tar.gz.sha512
   ├── index.html
   └── robots.txt
   ```
   What's different from yours?

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
     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
-    usage
-    exit 0
-fi
+POSITIONAL=()
+while [[ $# -gt 0 ]]
+do
+key="$1"
 
-if [ -z "$1" ]; then
+URL=""
+DIRECTORY=""
+
+case $key in
+    -U|--url)
+    URL="$2"
+    shift # past argument
+    shift # past value
+    ;;
+    -R|--release)
+    RELEASE="$2"
+    URL="$BASE_URL/$RELEASE/"
+    shift # past argument
+    shift # past value
+    ;;
+    -D|--dir)
+    DIRECTORY="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -T|--tempdir)
+    TEMPDIR="$(readlink -f $2)"
+    shift # past argument
+    shift # past value
+    ;;
+    -h|--help)
+    shift # past argument
     usage
     exit 0
-fi
+    ;;
+    -V|--verbose)
+    VERBOSE=1
+    shift # past argument
+    shift # past value
+    ;;
+    *)    # unknown option
+    POSITIONAL+=("$1") # save it in an array for later
+    shift # past argument
+    ;;
+esac
+done
+set -- "${POSITIONAL[@]}" # restore positional parameters
 
-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 
+if [[ -n "$URL" ]]; then
+  check_nuttx
+  check_nuttx_apps
+else

Review comment:
       I guess what @btashton want is check the release is good before uploading to https://dist.apache.org/repos/dist/dev/incubator/nuttx/. So the local directory should contain the same files as the website.

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+while [[ $# -gt 0 ]]
+do
+  key="$1"
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
-fi
+  URL=""
+  DIRECTORY=""
 
-ARG=$1
-if [[ "$ARG" =~ ^"http".* ]]; then
-  URL="$1/"
-else
-  URL="$BASE_URL/$1/"
+  case $key in

Review comment:
       key is used only once, why not directly use "case $1" here?

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+while [[ $# -gt 0 ]]
+do
+  key="$1"
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
-fi
+  URL=""
+  DIRECTORY=""

Review comment:
       We clear URL/DIRECTORY in each iteration?

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+while [[ $# -gt 0 ]]
+do
+  key="$1"
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
-fi
+  URL=""
+  DIRECTORY=""
 
-ARG=$1
-if [[ "$ARG" =~ ^"http".* ]]; then
-  URL="$1/"
-else
-  URL="$BASE_URL/$1/"
+  case $key in
+      -U|--url)
+      URL="$2"
+      shift
+      ;;
+      -R|--release)
+      RELEASE="$2"
+      URL="$BASE_URL/$RELEASE/"
+      shift
+      ;;
+      -D|--dir)
+      DIRECTORY="$(readlink -f $2)"
+      shift
+      ;;
+      -T|--tempdir)
+      TEMPDIR="$(readlink -f $2)"
+      shift
+      ;;
+      -h|--help)
+      usage
+      exit 0
+      ;;
+      -V|--verbose)
+      VERBOSE=1
+      ;;
+      *)    # unknown option
+      POSITIONAL+=("$1") # save it in an array for later
+      shift # past argument

Review comment:
       Remove, otherwise we lose the half unknow argument.

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo
+    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
+    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."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      RETURN_CODE=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      RETURN_CODE=1
     fi
-    if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+    if [ 0 -eq $RETURN_CODE ]; then
+      echo " OK: all required files exist in $RELEASE_DIR."
     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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
+function check_sim_nsh_build() {
+    RELEASE_DIR="nuttx"
+    echo "Trying to build $RELEASE_DIR sim:nsh..."
+    cd "$RELEASE_DIR"
+    if [[ $VERBOSE -eq 0 ]]; then
+      output=$(make distclean ; ./tools/configure.sh sim:nsh ; make) 2>&1
+    else
+      make distclean
+      ./tools/configure.sh sim:nsh
+      make
+    fi
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: we were able to build sim:nsh"
+    else
+      RETURN_CODE=1
+      echo " - Error building sim:nsh:"
+      echo
+      echo $output
+    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 [--verbose] [--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 "   If --url or --release are given, nuttx and nuttx-apps tar.gz files are left in /tmp for the user to "
+    echo "   build for their platform."
+    echo
+    echo "   -V and --verbose are equivalent."
     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
-    usage
-    exit 0
-fi
+UNKNOWN=()
+while [[ $# -gt 0 ]]
+do
+  key="$1"
 
-if [ -z "$1" ]; then
-    usage
-    exit 0
-fi
+  URL=""
+  DIRECTORY=""
 
-ARG=$1
-if [[ "$ARG" =~ ^"http".* ]]; then
-  URL="$1/"
-else
-  URL="$BASE_URL/$1/"
+  case $key in
+      -U|--url)
+      URL="$2"
+      shift

Review comment:
       It's better change all $2 access to:
   ```
   shift
   URL=$1
   ```
   so we always access variable by $1.

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,221 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
-trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
+trap "{ rm -rf $TEMPDIR; }" EXIT
+
+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"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    if [[ $(validate_url "$URL") ]]; then
+      echo "Downloading release files from $URL"
+      wget --quiet -r --no-parent -P "$TEMPDIR" --cut-dirs 100 "$URL"
+      cd "$TEMPDIR"
+      mv $DIST_DIR/apache-nuttx-* .
+    else
+      echo "The URL given doesn't return HTTP 200 OK return code— exiting. ($URL)"
+      exit 1
+    fi
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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 " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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:"
+      echo "$output"
+      echo

Review comment:
       redundant?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-658345919


   It's almost done, I squanch your change and make some clean:
   https://github.com/xiaoxiang781216/incubator-nuttx/commit/b2fd53ae0bdae78ad73b4ae722756789d05a4ab7
   Other major change is:
   1.Keep all content in /tmp/nuttx-release
   2.Assume the content in local folder same as website
   The first change help we identify the root cause if the check fail.
   The second change help we find the problem just before the release is uploaded to the website.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#issuecomment-655222420


   @btashton I'll see if I can add the GPG output back using the `--verbose` flag. Would that work?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] xiaoxiang781216 commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
xiaoxiang781216 commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452617696



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0
     if [ ! -f "$RELEASE_DIR/LICENSE" ]; then
-        echo "LICENSE file not present."
-        ERROR=1
+      echo " - LICENSE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/NOTICE" ]; then
-        echo "NOTICE file not present."
-        ERROR=1
+      echo " - NOTICE file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/README.txt" ]; then
-        echo "README.txt file not present."
-        ERROR=1
+      echo " - README.txt file not present."
+      ERROR=1
     fi
     if [ ! -f "$RELEASE_DIR/DISCLAIMER-WIP" ]; then
-        echo "DISCLAIMER-WIP file not present."
-        ERROR=1
+      echo " - DISCLAIMER-WIP file not present."
+      ERROR=1
     fi
     if [ 0 -eq $ERROR ]; then
-        echo "OK: All required files exist."
+      echo " OK: all required files exist in $RELEASE_DIR."
+    else
+      RETURN_CODE=1
     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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"
 }
 
 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" ..
+    rm -rf "$RELEASE_DIR"
+    tar xf "$RELEASE_FILE"
+    check_required_files "$RELEASE_DIR"
+    mv "$RELEASE_FILE" "$TMP"

Review comment:
       I don't see any reason why we remove $TEMPDIR but keep $TMP. In my opinion, either we keep both or remove both.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] adamfeuer commented on a change in pull request #1382: checkrelease.sh script now tries to build sim:nsh

Posted by GitBox <gi...@apache.org>.
adamfeuer commented on a change in pull request #1382:
URL: https://github.com/apache/incubator-nuttx/pull/1382#discussion_r452587291



##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  fi

Review comment:
       @xiaoxiang781216 I'll try this out to see how it looks—

##########
File path: tools/checkrelease.sh
##########
@@ -19,114 +19,218 @@
 #
 #############################################################################
 
-set -e
-
+VERBOSE=0
+RETURN_CODE=0
 BASE_URL="https://dist.apache.org/repos/dist/dev/incubator/nuttx"
-TEMPDIR="dist.apache.org"
+DIST_DIR="dist.apache.org"
+TMP="/tmp"
+TEMPDIR="$TMP/nuttx-checkrelease"
 ORIGINAL_DIR="$(pwd)"
 trap "{ cd $ORIGINAL_DIR; rm -rf $TEMPDIR; }" EXIT
 
 function download_release() {
-    wget -r -np -R "index.html*" -P . --cut-dirs 7 "$URL"
+  rm -rf "$TEMPDIR"
+  if [[ -n "$URL" ]]; then
+    mkdir "$TEMPDIR"
+    wget -r --no-parent -P "$TEMPDIR" --cut-dirs 8 "$URL"
     cd "$TEMPDIR"
+    mv $DIST_DIR/apache-nuttx-* .
+  else
+    if [[ -n "$DIRECTORY" ]]; then
+      cp -r "$DIRECTORY" "$TEMPDIR"
+      cd "$TEMPDIR"
+    else
+      echo "One of --dir or --url is required!"
+      exit 1
+    fi
+  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)"
+    return_value=$?
+    if [ $return_value -eq 0 ]; then
+      echo " OK: $RELEASE_FILE sha512 hash matches."
+    else
+      RETURN_CODE=1
+      echo " - $RELEASE_FILE sha512 hash does not match:"
+      echo "$output"
+    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"
+    output="$(gpg --quiet --verify $RELEASE_FILE.asc $RELEASE_FILE 2>&1)"
+    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:"
+      echo "$output"
+      echo
+    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"
+    RELEASE_DIR=$1
+    echo "Checking $RELEASE_FILE for required files:"
     ERROR=0

Review comment:
       @xiaoxiang781216 will fix




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org