Add distribution tarball generator script 37/3037/4
authorPhil Miller <phil@hpccharm.com>
Fri, 3 Mar 2017 21:39:42 +0000 (15:39 -0600)
committerPhil Miller <mille121@illinois.edu>
Thu, 5 Oct 2017 16:34:33 +0000 (11:34 -0500)
Change-Id: Id114e1fe2fd8d778cf720a8242f59354b8a233be

package-tarball.sh [new file with mode: 0755]
src/scripts/commitid.sh

diff --git a/package-tarball.sh b/package-tarball.sh
new file mode 100755 (executable)
index 0000000..2a30591
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+# Print commands as they run
+set -v
+
+# Halt on error
+set -e
+
+# Set 'release' mode if requested, influences commitid.sh
+export RELEASE="0"
+if [[ $# -gt 0 ]]
+then
+    arg=$1
+    shift
+
+    if [ "$arg" = "--release" ]
+    then
+        echo Saw $arg
+        RELEASE="1"
+    else
+        echo "Unrecognized argument '$arg'"
+        exit 1
+    fi
+
+    if [[ $# -gt 0 ]]
+    then
+        echo "Unrecognized argument '$arg'"
+        exit 1
+    fi
+fi
+
+# Make sure the working copy and index are completely clean
+git diff --quiet --exit-code HEAD
+
+# Emit a static indicator of the original commit
+pushd src/scripts
+SRCBASE=`pwd` ./commitid.sh
+git add -f VERSION
+rm VERSION.new
+popd
+
+# Stage all of the modified files
+git add -u
+
+# Get an identifier for the current state of the code
+object_id=`git write-tree`
+
+# Construct the target file/folder name
+version="charm-$(cat src/scripts/VERSION)"
+
+# Generate the distribution tarball
+git archive --format=tar.gz --prefix="$version/" -o $version.tar.gz $object_id
+
+# And clean up the mess we made
+git reset --hard
index 84f421ac6c16925aaf4e1ff45e87cead7471a6b5..f69c72983f1c459daab6d9684b4aeeb3e01a1184 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 # Get a string describing the current code, and compare it to the
 # recorded value in VERSION. Copy over that if it's changed, so that
@@ -10,8 +10,15 @@ then
     VOLD=`cat VERSION`
 fi
 
-#git describe --long --dirty --always > VERSION.new || touch VERSION.new
-(cd $SRCBASE && git describe --long --always) > VERSION.new || touch VERSION.new
+# Potentially set by the higher-level package-tarball.sh script
+if [ "$RELEASE" = "1" ]
+then
+    echo Release mode
+    (cd $SRCBASE && git describe --exact-match) > VERSION.new || exit 1
+else
+    echo Dev mode
+    (cd $SRCBASE && git describe --long --always) > VERSION.new || touch VERSION.new
+fi
 
 VNEW=`cat VERSION.new`