summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xbuild-apk.sh14
-rwxr-xr-xbuild.sh39
-rwxr-xr-xprepare_release.sh51
-rwxr-xr-xversion_metadata.sh89
4 files changed, 119 insertions, 74 deletions
diff --git a/build-apk.sh b/build-apk.sh
index 43c9eabaef..0c98439138 100755
--- a/build-apk.sh
+++ b/build-apk.sh
@@ -31,11 +31,19 @@ if [[ "$BUILD_TYPE" == "debug" || "$(git describe)" != "$PRODUCT_VERSION" ]]; th
echo "Modifying product version to $PRODUCT_VERSION"
fi
-cd "$SCRIPT_DIR/android"
+pushd "$SCRIPT_DIR/android"
./gradlew --console plain clean
-mkdir -p "${SCRIPT_DIR}/android/build/extraJni"
+mkdir -p "build/extraJni"
+popd
-cd "$SCRIPT_DIR"
+function restore_metadata_backups() {
+ pushd "$SCRIPT_DIR"
+ ./version_metadata.sh restore-backup
+ popd
+}
+trap 'restore_metadata_backups' EXIT
+
+./version_metadata.sh inject $PRODUCT_VERSION
ARCHITECTURES="aarch64 armv7 x86_64 i686"
for ARCHITECTURE in $ARCHITECTURES; do
diff --git a/build.sh b/build.sh
index e8659b47d9..fe54d39bd6 100755
--- a/build.sh
+++ b/build.sh
@@ -63,22 +63,16 @@ else
fi
echo "Building Mullvad VPN $PRODUCT_VERSION"
-SEMVER_VERSION=$(echo $PRODUCT_VERSION | sed -Ee 's/($|-.*)/.0\1/g')
function restore_metadata_backups() {
pushd "$SCRIPT_DIR"
+ echo "Restoring version metadata files..."
+ ./version_metadata.sh restore-backup
if [[ "$BUILD_MODE" == "dev" ]]; then
mv gui/electron-builder.yml.bak gui/electron-builder.yml || true
fi
- mv gui/package.json.bak gui/package.json || true
mv gui/package-lock.json.bak gui/package-lock.json || true
mv Cargo.lock.bak Cargo.lock || true
- mv mullvad-daemon/Cargo.toml.bak mullvad-daemon/Cargo.toml || true
- mv mullvad-cli/Cargo.toml.bak mullvad-cli/Cargo.toml || true
- mv mullvad-problem-report/Cargo.toml.bak mullvad-problem-report/Cargo.toml || true
- mv talpid-openvpn-plugin/Cargo.toml.bak talpid-openvpn-plugin/Cargo.toml || true
- mv android/build.gradle.bak android/build.gradle || true
- mv dist-assets/windows/version.h.bak dist-assets/windows/version.h || true
popd
}
trap 'restore_metadata_backups' EXIT
@@ -92,35 +86,11 @@ if [[ "$BUILD_MODE" == "dev" ]]; then
echo "compression: store" >> gui/electron-builder.yml
fi
+echo "Updating version in metadata files..."
cp gui/package-lock.json gui/package-lock.json.bak
-sed -i.bak -Ee "s/\"version\": \"[^\"]+\",/\"version\": \"$SEMVER_VERSION\",/g" \
- gui/package.json
-
cp Cargo.lock Cargo.lock.bak
-sed -i.bak \
- -Ee "s/^version = \"[^\"]+\"\$/version = \"$SEMVER_VERSION\"/g" \
- mullvad-daemon/Cargo.toml \
- mullvad-cli/Cargo.toml \
- mullvad-problem-report/Cargo.toml \
- talpid-openvpn-plugin/Cargo.toml
-
-cp android/build.gradle android/build.gradle.bak
-sed -i.bak -Ee "s/versionName \"[^\"]+\"/versionName \"$PRODUCT_VERSION\"/g" \
- android/build.gradle
+./version_metadata.sh inject $PRODUCT_VERSION
-SEMVER_ARRAY=($(echo $SEMVER_VERSION | sed -Ee 's/[.-]+/ /g'))
-SEMVER_MAJOR=${SEMVER_ARRAY[0]}
-SEMVER_MINOR=${SEMVER_ARRAY[1]}
-SEMVER_PATCH=${SEMVER_ARRAY[2]}
-
-cp dist-assets/windows/version.h dist-assets/windows/version.h.bak
-
-cat <<EOF > dist-assets/windows/version.h
-#define MAJOR_VERSION $SEMVER_MAJOR
-#define MINOR_VERSION $SEMVER_MINOR
-#define PATCH_VERSION $SEMVER_PATCH
-#define PRODUCT_VERSION "$PRODUCT_VERSION"
-EOF
################################################################################
# Compile and link all binaries.
@@ -213,6 +183,7 @@ esac
popd
+SEMVER_VERSION=$(echo $PRODUCT_VERSION | sed -Ee 's/($|-.*)/.0\1/g')
for semver_path in dist/*$SEMVER_VERSION*; do
product_path=$(echo $semver_path | sed -Ee "s/$SEMVER_VERSION/$PRODUCT_VERSION/g")
echo "Moving $semver_path -> $product_path"
diff --git a/prepare_release.sh b/prepare_release.sh
index fdf73ff5d6..b55744403a 100755
--- a/prepare_release.sh
+++ b/prepare_release.sh
@@ -10,52 +10,25 @@ if [[ "$#" != "1" ]]; then
echo "For example: '2018.1-beta3' for a beta release, or '2018.6' for a stable one."
exit 1
fi
-VERSION=$1
-
-# Regex that only matches valid Mullvad VPN versions. It also captures
-# relevant values into capture groups, read out via BASH_REMATCH[x]
-VERSION_REGEX="^20([0-9]{2})\.([1-9][0-9]?)(-beta([1-9][0-9]?))?$"
-if [[ ! $VERSION =~ $VERSION_REGEX ]]; then
- echo "Invalid version format. Please specify version as:"
- echo "<YEAR>.<NUMBER>[-beta<NUMBER>]"
- exit 1
-fi
-VERSION_YEAR=$(printf "%02d" ${BASH_REMATCH[1]})
-VERSION_NUMBER=$(printf "%02d" ${BASH_REMATCH[2]})
-VERSION_PATCH="00"
-VERSION_BETA=$(printf "%02d" ${BASH_REMATCH[4]:-99})
-ANDROID_VERSION_CODE=${VERSION_YEAR}${VERSION_NUMBER}${VERSION_PATCH}${VERSION_BETA}
-
-SEMVER_VERSION=$(echo $VERSION | sed -Ee 's/($|-.*)/.0\1/g')
+PRODUCT_VERSION=$1
if [[ $(git diff --shortstat 2> /dev/null | tail -n1) != "" ]]; then
echo "Dirty working directory! Will not accept that for an official release."
exit 1
fi
-if [[ $(grep $VERSION CHANGELOG.md) == "" ]]; then
- echo "It looks like you did not add $VERSION to the changelog?"
+if [[ $(grep $PRODUCT_VERSION CHANGELOG.md) == "" ]]; then
+ echo "It looks like you did not add $PRODUCT_VERSION to the changelog?"
echo "Please make sure the changelog is up to date and correct before you proceed."
exit 1
fi
echo "Updating version in metadata files..."
-sed -i.bak -Ee "s/\"version\": \"[^\"]+\",/\"version\": \"$SEMVER_VERSION\",/g" \
- gui/package.json
-sed -i.bak -Ee "s/^version = \"[^\"]+\"\$/version = \"$SEMVER_VERSION\"/g" \
- mullvad-daemon/Cargo.toml \
- mullvad-cli/Cargo.toml \
- mullvad-problem-report/Cargo.toml
-
-sed -i.bak -Ee "s/versionCode [0-9]+/versionCode $ANDROID_VERSION_CODE/g" \
- android/build.gradle
-sed -i.bak -Ee "s/versionName \"[^\"]+\"/versionName \"$VERSION\"/g" \
- android/build.gradle
-
+./version_metadata.sh inject $PRODUCT_VERSION
echo "Syncing Cargo.lock with new version numbers"
source env.sh ""
-cargo build
+cargo +stable build
(cd gui/ && npm install) || exit 1
@@ -66,21 +39,25 @@ git commit -S -m "Updating version in package files" \
mullvad-daemon/Cargo.toml \
mullvad-cli/Cargo.toml \
mullvad-problem-report/Cargo.toml \
- Cargo.lock
+ talpid-openvpn-plugin/Cargo.toml \
+ Cargo.lock \
+ android/build.gradle \
+ dist-assets/windows/version.h
-echo "Tagging current git commit with release tag $VERSION..."
-git tag -s $VERSION -m $VERSION
+echo "Tagging current git commit with release tag $PRODUCT_VERSION..."
+git tag -s $PRODUCT_VERSION -m $PRODUCT_VERSION
+./version_metadata.sh delete-backup
echo "==================================================="
echo "DONE preparing for a release! Now do the following:"
echo " 1. Push the commit and tag created by this script"
echo " after you have verified they are correct"
echo " $ git push"
-echo " $ git push origin $VERSION"
+echo " $ git push origin $PRODUCT_VERSION"
echo " 2. On each platform where you want to create a"
echo " release artifact, check out the tag and build:"
echo " $ git fetch"
-echo " $ git checkout $VERSION"
+echo " $ git checkout $PRODUCT_VERSION"
echo " $ ./build.sh"
echo "==================================================="
diff --git a/version_metadata.sh b/version_metadata.sh
new file mode 100755
index 0000000000..eae33eafa6
--- /dev/null
+++ b/version_metadata.sh
@@ -0,0 +1,89 @@
+#!/usr/bin/env bash
+#
+# Can inject correctly formatted version strings/numbers in all the various
+# project metadata files. Can also back them up and restore them.
+
+set -eu
+
+# Regex that only matches valid Mullvad VPN versions. It also captures
+# relevant values into capture groups, read out via BASH_REMATCH[x].
+VERSION_REGEX="^20([0-9]{2})\.([1-9][0-9]?)(-beta([1-9][0-9]?))?(-dev-[0-9a-f]+)?$"
+
+case "$1" in
+ "inject")
+ PRODUCT_VERSION=$2
+ if [[ ! $PRODUCT_VERSION =~ $VERSION_REGEX ]]; then
+ echo "Invalid version format. Please specify version as:"
+ echo "<YEAR>.<NUMBER>[-beta<NUMBER>]"
+ exit 1
+ fi
+
+ VERSION_YEAR=$(printf "%02d" ${BASH_REMATCH[1]})
+ VERSION_NUMBER=$(printf "%02d" ${BASH_REMATCH[2]})
+ VERSION_PATCH="00" # Not used for now.
+ VERSION_BETA=$(printf "%02d" ${BASH_REMATCH[4]:-99})
+ ANDROID_VERSION_CODE=${VERSION_YEAR}${VERSION_NUMBER}${VERSION_PATCH}${VERSION_BETA}
+
+ SEMVER_VERSION=$(echo $PRODUCT_VERSION | sed -Ee 's/($|-.*)/.0\1/g')
+ SEMVER_MAJOR="20${BASH_REMATCH[1]}"
+ SEMVER_MINOR=${BASH_REMATCH[2]}
+ SEMVER_PATCH="0"
+
+ # Electron GUI
+ sed -i.bak -Ee "s/\"version\": \"[^\"]+\",/\"version\": \"$SEMVER_VERSION\",/g" \
+ gui/package.json
+
+ # Rust crates
+ sed -i.bak -Ee "s/^version = \"[^\"]+\"\$/version = \"$SEMVER_VERSION\"/g" \
+ mullvad-daemon/Cargo.toml \
+ mullvad-cli/Cargo.toml \
+ mullvad-problem-report/Cargo.toml \
+ talpid-openvpn-plugin/Cargo.toml
+
+ # Windows C++
+ cp dist-assets/windows/version.h dist-assets/windows/version.h.bak
+ cat <<EOF > dist-assets/windows/version.h
+#define MAJOR_VERSION $SEMVER_MAJOR
+#define MINOR_VERSION $SEMVER_MINOR
+#define PATCH_VERSION $SEMVER_PATCH
+#define PRODUCT_VERSION "$PRODUCT_VERSION"
+EOF
+
+ # Android
+ cp android/build.gradle android/build.gradle.bak
+ sed -i -Ee "s/versionCode [0-9]+/versionCode $ANDROID_VERSION_CODE/g" \
+ android/build.gradle
+ sed -i -Ee "s/versionName \"[^\"]+\"/versionName \"$PRODUCT_VERSION\"/g" \
+ android/build.gradle
+ ;;
+ "restore-backup")
+ # Electron GUI
+ mv gui/package.json.bak gui/package.json || true
+ # Rust crates
+ mv mullvad-daemon/Cargo.toml.bak mullvad-daemon/Cargo.toml || true
+ mv mullvad-cli/Cargo.toml.bak mullvad-cli/Cargo.toml || true
+ mv mullvad-problem-report/Cargo.toml.bak mullvad-problem-report/Cargo.toml || true
+ mv talpid-openvpn-plugin/Cargo.toml.bak talpid-openvpn-plugin/Cargo.toml || true
+ # Windows C++
+ mv dist-assets/windows/version.h.bak dist-assets/windows/version.h || true
+ # Android
+ mv android/build.gradle.bak android/build.gradle || true
+ ;;
+ "delete-backup")
+ # Electron GUI
+ rm gui/package.json.bak || true
+ # Rust crates
+ rm mullvad-daemon/Cargo.toml.bak || true
+ rm mullvad-cli/Cargo.toml.bak || true
+ rm mullvad-problem-report/Cargo.toml.bak || true
+ rm talpid-openvpn-plugin/Cargo.toml.bak || true
+ # Windows C++
+ rm dist-assets/windows/version.h.bak || true
+ # Android
+ rm android/build.gradle.bak || true
+ ;;
+ *)
+ echo "Invalid command. Use inject or restore"
+ exit 1
+ ;;
+esac \ No newline at end of file