You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by gn...@apache.org on 2020/04/08 23:31:30 UTC

[incubator-nuttx] branch master updated: tools/zipme.sh: Add the possibility to PGP sign the final tarballs. (#756)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 398175b  tools/zipme.sh: Add the possibility to PGP sign the final tarballs. (#756)
398175b is described below

commit 398175b2aecfbedd42bea9d35da4b81f0f27e45f
Author: Abdelatif Guettouche <ab...@gmail.com>
AuthorDate: Thu Apr 9 00:31:22 2020 +0100

    tools/zipme.sh: Add the possibility to PGP sign the final tarballs. (#756)
    
    * tools/zipme.sh: Add the possibility to PGP sign the final tarballs.
    * tools/README.txt: Update the file to add zipme.sh's new commands.
---
 tools/README.txt | 16 ++++++++--
 tools/zipme.sh   | 92 +++++++++++++++++++++++++++++++++++++++++++++-----------
 2 files changed, 89 insertions(+), 19 deletions(-)

diff --git a/tools/README.txt b/tools/README.txt
index d2b3e3b..759924a 100644
--- a/tools/README.txt
+++ b/tools/README.txt
@@ -1121,5 +1121,17 @@ zipme.sh
 --------
 
   I use this script to create the nuttx-xx.yy.tar.gz tarballs for
-  release on Bitbucket.org.  It is handy because it also does the
-  kind of clean that you need to do to make a clean code release.
+  release.  It is handy because it also does the kind of clean up
+  that you need to do to make a clean code release.
+  It can also PGP sign the final tarballs and create their SHA512 hash.
+  Any VCS files or directories are excluded from the final tarballs.
+
+  $ ./tools/zipme.sh -h
+    USAGE="USAGE: ./tools/zipme.sh [-d|h|v|s] [-b <build]> [-e <exclude>] [-k <key-id>] <major.minor>"
+  Examples:
+      ./tools/zipme.sh -s 9.0
+        Create version 9.0 tarballs and sign them.
+      ./tools/zipme.sh -s -k XXXXXX 9.0
+        Same as above but use the key-id XXXXXX to sign the tarballs
+      ./tools/zipme.sh -e "*.swp tmp" 9.0 
+        Create the tarballs but exclude any *.swp file and the "tmp" directory.
diff --git a/tools/zipme.sh b/tools/zipme.sh
index 3732bc1..b2aa6b6 100755
--- a/tools/zipme.sh
+++ b/tools/zipme.sh
@@ -35,15 +35,11 @@
 #set -x
 
 WD=`pwd`
-
 TAR=tar
-
-silent=0
-
-# Get command line parameters
-
-USAGE="USAGE: $0 [-d|h|s] [-b <build]> [-e <exclude>] <major.minor>"
-ADVICE="Try '$0 -h' for more information"
+GPG="gpg -sab"
+SHASUM=sha512sum
+verbose=0
+sign=0
 
 # A list of files and folders to exclude from the final tarball.
 
@@ -52,6 +48,10 @@ EXCLPAT="
   .asf.yaml
 
 "
+# Get command line parameters
+
+USAGE="USAGE: $0 [-d|h|v|s] [-b <build]> [-e <exclude>] [-k <key-id>] <major.minor>"
+ADVICE="Try '$0 -h' for more information"
 
 unset VERSION
 unset VERSIONOPT
@@ -72,8 +72,15 @@ while [ ! -z "$1" ]; do
     shift
     EXCLPAT+=${1}
     ;;
+  -v )
+    verbose=1
+    ;;
   -s )
-    silent=1
+    sign=1
+    ;;
+  -k )
+    shift
+    GPG+=" --default-key $1"
     ;;
   -h )
     echo "$0 is a tool for generation of release versions of NuttX"
@@ -89,10 +96,14 @@ while [ ! -z "$1" ]; do
     echo "  -h"
     echo "     show this help message and exit"
     echo "   -e"
-    echo "     Exclude a list of files or folder"
+    echo "     Exclude a list of files or folders"
     echo "     NOTE: The list must be quoted, example -e \"*.out tmp\""
+    echo "   -v"
+    echo "     Be verbose. The output could be more than you care to see."
     echo "   -s"
-    echo "     Run commands silently"
+    echo "    PGP sign the final tarballs and create digests."
+    echo "   -k"
+    echo "    PGP key ID.  If not provided the default ID will be used."
     echo "  <major.minor>"
     echo "     The NuttX version number expressed as a major and minor number separated"
     echo "     by a period"
@@ -118,10 +129,10 @@ done
 
 TAR+=" --exclude-vcs-ignores --exclude-vcs"
 
-if [ $silent != 0 ] ; then
-  TAR+=" -czf"
-else
+if [ $verbose != 0 ] ; then
   TAR+=" -czvf"
+else
+  TAR+=" -czf"
 fi
 
 # Make sure we know what is going on
@@ -184,6 +195,10 @@ NUTTX_TARNAME=apache-nuttx-${VERSION}-incubating.tar
 APPS_TARNAME=apache-nuttx-apps-${VERSION}-incubating.tar
 NUTTX_ZIPNAME=${NUTTX_TARNAME}.gz
 APPS_ZIPNAME=${APPS_TARNAME}.gz
+NUTTX_ASCNAME=${NUTTX_ZIPNAME}.asc
+APPS_ASCNAME=${APPS_ZIPNAME}.asc
+NUTTX_SHANAME=${NUTTX_ZIPNAME}.sha512
+APPS_SHANAME=${APPS_ZIPNAME}.sha512
 
 # Prepare the nuttx directory
 
@@ -232,10 +247,10 @@ cd ${TRUNKDIR} || \
 
 echo "Cleaning the repositories"
 
-if [ $silent != 0 ] ; then
-  make -C ${NUTTXDIR} distclean 1>/dev/null
-else
+if [ $verbose != 0 ] ; then
   make -C ${NUTTXDIR} distclean
+else
+  make -C ${NUTTXDIR} distclean 1>/dev/null
 fi
 
 # Remove any previous tarballs
@@ -264,6 +279,32 @@ if [ -f ${APPS_ZIPNAME} ] ; then
      { echo "rm ${APPS_ZIPNAME} failed!" ; exit 1 ; }
 fi
 
+# Remove any previous signatures or digests
+
+if [ -f ${NUTTX_ASCNAME} ] ; then
+  echo "Removing ${TRUNKDIR}/${NUTTX_ASCNAME}"
+  rm -f ${NUTTX_ASCNAME} || \
+     { echo "rm ${NUTTX_ASCNAME} failed!" ; exit 1; }
+fi
+
+if [ -f ${APPS_ASCNAME} ] ; then
+  echo "Removing ${TRUNKDIR}/${APPS_ASCNAME}"
+  rm -f ${APPS_ASCNAME} || \
+     { echo "rm ${APPS_ASCNAME} failed!" ; exit 1; }
+fi
+
+if [ -f ${NUTTX_SHANAME} ] ; then
+  echo "Removing ${TRUNKDIR}/${NUTTX_SHANAME}"
+  rm -f ${NUTTX_SHANAME} || \
+     { echo "rm ${NUTTX_SHANAME} failed!" ; exit 1; }
+fi
+
+if [ -f ${APPS_SHANAME} ] ; then
+  echo "Removing ${TRUNKDIR}/${APPS_SHANAME}"
+  rm -f ${APPS_SHANAME} || \
+     { echo "rm ${APPS_SHANAME} failed!" ; exit 1; }
+fi
+
 # Then tar and zip-up the directories
 
 echo "Archiving and zipping nuttx/"
@@ -274,4 +315,21 @@ echo "Archiving and zipping apps/"
 ${TAR} ${APPS_ZIPNAME} `basename ${APPSDIR}` || \
       { echo "tar of ${APPS_ZIPNAME} failed!" ; exit 1 ; }
 
+# Finally sign the tarballs and create the digests
+
+if [ $sign != 0 ] ; then
+  echo "Signing the tarballs"
+  ${GPG} ${NUTTX_ZIPNAME} || \
+        { echo "Signing ${NUTTX_ZIPNAME} failed!" ; exit 1 ; }
+
+  ${GPG} ${APPS_ZIPNAME} || \
+        { echo "Signing ${APPS_ZIPNAME} failed!" ; exit 1 ; }
+
+  ${SHASUM} ${NUTTX_ZIPNAME} > ${NUTTX_SHANAME} || \
+           { echo "Digest of ${NUTTX_ZIPNAME} failed!" ; exit 1 ; }
+
+  ${SHASUM} ${APPS_ZIPNAME} > ${APPS_SHANAME} || \
+           { echo "Digest of ${APPS_ZIPNAME} failed!" ; exit 1 ; }
+fi
+
 cd ${NUTTXDIR}