mirror of https://github.com/cutefishos/calamares
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
3.7 KiB
Bash
116 lines
3.7 KiB
Bash
#! /bin/sh
|
|
#
|
|
# Release script for Calamares
|
|
#
|
|
# This attempts to perform the different steps of the RELEASE.md
|
|
# document automatically. It's not tested on other machines or
|
|
# setups other than [ade]'s development VM.
|
|
#
|
|
# Assumes that the version in CMakeLists.txt has been bumped,
|
|
# and that a release of that version is desired.
|
|
#
|
|
# None of the "update stuff" is done by this script; in preparation
|
|
# for the release, you should have already done:
|
|
# - updating the version
|
|
# - pulling translations
|
|
# - updating the language list
|
|
# - switching to the right branch
|
|
#
|
|
# You can influence the script a little with environment variables:
|
|
# - BUILD_DEFAULT set to false to avoid first build with gcc
|
|
# - BUILD_CLANG set to false to avoid second build with clang
|
|
# - BUILD_ONLY set to true to break after building
|
|
|
|
test -d .git || { echo "Not at top-level." ; exit 1 ; }
|
|
test -d src/modules || { echo "No src/modules." ; exit 1 ; }
|
|
|
|
which cmake > /dev/null 2>&1 || { echo "No cmake(1) available." ; exit 1 ; }
|
|
|
|
test -z "$BUILD_DEFAULT" && BUILD_DEFAULT=true
|
|
test -z "$BUILD_CLANG" && BUILD_CLANG=true
|
|
test -z "$BUILD_ONLY" && BUILD_ONLY=false
|
|
|
|
### Setup
|
|
#
|
|
#
|
|
BUILDDIR=$(mktemp -d --suffix=-build --tmpdir=.)
|
|
|
|
### Build with default compiler
|
|
#
|
|
#
|
|
if test "x$BUILD_DEFAULT" = "xtrue" ; then
|
|
rm -rf "$BUILDDIR"
|
|
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
|
( cd "$BUILDDIR" && cmake .. && make -j4 ) || { echo "Could not perform test-build." ; exit 1 ; }
|
|
( cd "$BUILDDIR" && make test ) || { echo "Tests failed." ; exit 1 ; }
|
|
fi
|
|
|
|
### Build with clang
|
|
#
|
|
#
|
|
if test "x$BUILD_CLANG" = "xtrue" ; then
|
|
if which clang++ > /dev/null 2>&1 ; then
|
|
# Do build again with clang
|
|
rm -rf "$BUILDDIR"
|
|
mkdir "$BUILDDIR" || { echo "Could not create build directory." ; exit 1 ; }
|
|
( cd "$BUILDDIR" && CC=clang CXX=clang++ cmake .. && make -j4 ) || { echo "Could not perform test-build." ; exit 1 ; }
|
|
( cd "$BUILDDIR" && make test ) || { echo "Tests failed." ; exit 1 ; }
|
|
fi
|
|
fi
|
|
|
|
if test "x$BUILD_ONLY" = "xtrue" ; then
|
|
echo "Builds completed, release stopped."
|
|
exit 1
|
|
fi
|
|
|
|
### Get version number for this release
|
|
#
|
|
#
|
|
V=$( cd "$BUILDDIR" && make show-version | grep ^CALAMARES_VERSION | sed s/^[A-Z_]*=// )
|
|
test -n "$V" || { echo "Could not obtain version." ; exit 1 ; }
|
|
|
|
### Create signed tag
|
|
#
|
|
# This is the signing key ID associated with the GitHub account adriaandegroot,
|
|
# which is used to create all "verified" tags in the Calamares repo.
|
|
KEY_ID="128F00873E05AF1D"
|
|
git tag -u "$KEY_ID" -m "Release v$V" "v$V" || { echo "Could not sign tag v$V." ; exit 1 ; }
|
|
|
|
### Create the tarball
|
|
#
|
|
#
|
|
TAR_V="calamares-$V"
|
|
TAR_FILE="$TAR_V.tar.gz"
|
|
git archive -o "$TAR_FILE" --prefix "$TAR_V/" "v$V" || { echo "Could not create tarball." ; exit 1 ; }
|
|
test -f "$TAR_FILE" || { echo "Tarball was not created." ; exit 1 ; }
|
|
SHA256=$(sha256sum "$TAR_FILE" | cut -d" " -f1)
|
|
|
|
### Build the tarball
|
|
#
|
|
#
|
|
D=$(date +%Y%m%d-%H%M%S)
|
|
TMPDIR=$(mktemp -d --suffix="-calamares-$D")
|
|
test -d "$TMPDIR" || { echo "Could not create tarball-build directory." ; exit 1 ; }
|
|
tar xzf "$TAR_FILE" -C "$TMPDIR" || { echo "Could not unpack tarball." ; exit 1 ; }
|
|
test -d "$TMPDIR/$TAR_V" || { echo "Tarball did not contain source directory." ; exit 1 ; }
|
|
( cd "$TMPDIR/$TAR_V" && cmake . && make -j4 && make test ) || { echo "Tarball build failed." ; exit 1 ; }
|
|
|
|
### Cleanup
|
|
#
|
|
rm -rf "$BUILDDIR" # From test-builds
|
|
rm -rf "$TMPDIR" # From tarball
|
|
|
|
### Print subsequent instructions
|
|
#
|
|
#
|
|
cat <<EOF
|
|
# Next steps for this release:
|
|
git push --tags
|
|
gpg -s -u $KEY_ID --detach --armor $TAR_FILE # Sign the tarball
|
|
# Upload tarball $TAR_FILE and the signature $TAR_FILE.asc
|
|
# Announce via https://github.com/calamares/calamares/releases/new
|
|
# SHA256: $SHA256
|
|
EOF
|
|
|
|
exit 0
|