Build script for updatemgr

This commit is contained in:
Alexandr Stelnykovych
2025-06-13 13:21:54 +03:00
parent 1292fd7dae
commit 70da66b120

80
cmds/updatemgr/build.sh Executable file
View File

@@ -0,0 +1,80 @@
#!/bin/bash
# This script builds the updatemgr binary for Portmaster.
# It retrieves the current version from git tags, builds the binary,
# and optionally compresses it using UPX if available.
# Usage: ./build.sh
set -e
# #####################################################################
# Initialize 'version' variables
# #####################################################################
# Get source repository
SOURCE="$( (git remote -v | cut -f2 | cut -d" " -f1 | head -n 1) || echo "unknown" )"
# Get build time
BUILD_TIME="$(date -u "+%Y-%m-%dT%H:%M:%SZ" || echo "unknown")"
# Get version from git tags
VERSION="$(git tag --points-at || true)"
if [ -z "${VERSION}" ]; then
dev_version="$(git describe --tags --first-parent --abbrev=0 || true)"
if [ -n "${dev_version}" ]; then
VERSION="${dev_version}_dev_build"
fi
fi
if [ -z "${VERSION}" ]; then
VERSION="dev_build"
fi
echo "Source : $SOURCE"
echo "Build Time : $BUILD_TIME"
echo "Version : $VERSION"
# Create cleaned version without 'v' prefix and without suffix
version_clean="$(echo "${VERSION}" | sed -E 's/^[vV]//' | sed -E 's/_.*$//')"
if echo "${version_clean}" | grep -E '^[0-9]+\.[0-9]+\.[0-9]+([.-].*)?$' > /dev/null; then
VERSION_SemVer="${version_clean}"
echo "VERSION_SemVer: $VERSION_SemVer"
else
echo "VERSION_SemVer: [Empty - not a valid SemVer in Git Tag] - !!! WARNING !!!"
fi
# #####################################################################
# Build updatemgr
# #####################################################################
echo ""
echo "Building updatemgr..."
mkdir -p dist
CGO_ENABLED=0 go build -trimpath -ldflags="-s -w \
-X github.com/safing/portmaster/base/info.version=${VERSION} \
-X github.com/safing/portmaster/base/info.buildSource=${SOURCE} \
-X github.com/safing/portmaster/base/info.buildTime=${BUILD_TIME}" \
-o dist/updatemgr
echo "Build complete."
echo ""
# #####################################################################
# Check if UPX is installed and compress the binary
# #####################################################################
if command -v upx &> /dev/null; then
echo "UPX is installed. UPX can reduce binary size."
read -p "Do you want to compress the binary with UPX? [y/N] " use_upx
if [[ $use_upx =~ ^[Yy]$ ]]; then
echo "Compressing with UPX..."
upx --best dist/updatemgr
echo "Compression complete."
else
echo "Skipping UPX compression."
fi
else
echo "UPX is not installed. Skipping compression."
fi
echo ""
echo "Build script completed. The updatemgr binary is located in the 'dist' directory."