1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
#!/bin/bash
set -ex
RELEASE_TAG=HEAD
while [ $# -gt 0 ]
do
if [ "$1" == "--skip-checks" ]
then
skip_checks=true
fi
if [ "$1" == "--release-tag" ]
then
shift
RELEASE_TAG=$1
fi
shift
done
if [ ! -e tools/make_release_tarball -o "$1" != "" ]
then
echo "Handy script for creating tarball: Use from the checkout directory"
exit 0
fi
set -e
VERSION=$(grep -E "project\(wlcs VERSION [[:digit:]]+(\.[[:digit:]]+)+\)" CMakeLists.txt | grep -E --only-matching "[[:digit:]]+(.[[:digit:]])+")
VERSIONED_NAME=wlcs-$VERSION
SCRATCH_DIR=$(mktemp -d)
BUILD_DIR=$(mktemp -d)
INSTALL_DIR=$(mktemp -d)
function cleanup() {
ARG=$?
[ -d $SCRATCH_DIR ] && rm -r $SCRATCH_DIR
[ -d $BUILD_DIR ] && rm -r $BUILD_DIR
[ -d $INSTALL_DIR ] && rm -r $INSTALL_DIR
exit $ARG
}
trap cleanup EXIT
echo "Generating WLCS tarball…"
git archive --format=tar --prefix=$VERSIONED_NAME/ $RELEASE_TAG | xz -9 > $SCRATCH_DIR/$VERSIONED_NAME.tar.xz
if [ ! -v skip_checks ]
then
(cd $SCRATCH_DIR; tar xvJf $SCRATCH_DIR/$VERSIONED_NAME.tar.xz)
echo "Testing that the tarball is buildable"
(cd $BUILD_DIR ; cmake $SCRATCH_DIR/$VERSIONED_NAME )
make -C $BUILD_DIR -j $(nproc)
echo "Testing that the tarball is installable"
make -C $BUILD_DIR install DESTDIR=$INSTALL_DIR
fi
mv $SCRATCH_DIR/$VERSIONED_NAME.tar.xz .
echo "$VERSIONED_NAME.tar.xz successfully created and tested"
|