Files
URBM/packaging/build-package.sh
T

43 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
ROOT=$(cd "$(dirname "$0")/.." && pwd)
VERSION=${VERSION:-0.1.0}
RESTIC_VERSION=0.19.0
RESTIC_SHA256=13176fe6d89d4357947a2cd107218ab2873a5f9d8e1ac2d4cd1c8e07e6839c21
BUILD="$ROOT/build"
STAGE="$BUILD/package"
DIST="$ROOT/dist"
command -v go >/dev/null || { echo "Go 1.23 or newer is required" >&2; exit 1; }
command -v curl >/dev/null || { echo "curl is required" >&2; exit 1; }
command -v bzip2 >/dev/null || { echo "bzip2 is required" >&2; exit 1; }
rm -rf "$BUILD" "$DIST"
mkdir -p "$STAGE/usr/local/sbin" "$STAGE/usr/local/libexec/backupper" "$STAGE/usr/local/emhttp/plugins/backupper/assets" "$STAGE/etc/rc.d" "$STAGE/install" "$DIST"
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags "-s -w -X main.version=$VERSION" -o "$STAGE/usr/local/sbin/backupperd" ./cmd/backupperd
RESTIC_ARCHIVE="$BUILD/restic.bz2"
curl --fail --location --silent --show-error "https://github.com/restic/restic/releases/download/v${RESTIC_VERSION}/restic_${RESTIC_VERSION}_linux_amd64.bz2" -o "$RESTIC_ARCHIVE"
read -r ACTUAL_RESTIC_SHA256 _ < <(sha256sum "$RESTIC_ARCHIVE")
if [ "$ACTUAL_RESTIC_SHA256" != "$RESTIC_SHA256" ]; then
echo "Restic checksum mismatch" >&2
exit 1
fi
bzip2 -dc "$RESTIC_ARCHIVE" > "$STAGE/usr/local/libexec/backupper/restic"
chmod 0755 "$STAGE/usr/local/libexec/backupper/restic" "$STAGE/usr/local/sbin/backupperd"
cp "$ROOT/webgui/Backupper.page" "$STAGE/usr/local/emhttp/plugins/backupper/"
cp "$ROOT/webgui/api.php" "$STAGE/usr/local/emhttp/plugins/backupper/"
cp "$ROOT/webgui/assets/"* "$STAGE/usr/local/emhttp/plugins/backupper/assets/"
cp "$ROOT/plugin/rc.backupper" "$STAGE/etc/rc.d/rc.backupper"
cp "$ROOT/plugin/doinst.sh" "$ROOT/plugin/slack-desc" "$STAGE/install/"
chmod 0755 "$STAGE/etc/rc.d/rc.backupper" "$STAGE/install/doinst.sh"
(cd "$STAGE" && tar --owner=0 --group=0 -cJf "$DIST/backupper-${VERSION}-x86_64-1.txz" .)
(cd "$DIST" && sha256sum "backupper-${VERSION}-x86_64-1.txz" > "backupper-${VERSION}-x86_64-1.txz.sha256")
PACKAGE_SHA256=$(sha256sum "$DIST/backupper-${VERSION}-x86_64-1.txz" | awk '{print $1}')
sed "s/REPLACE_DURING_RELEASE/$PACKAGE_SHA256/" "$ROOT/plugin/backupper.plg" > "$DIST/backupper.plg"
echo "Built $DIST/backupper-${VERSION}-x86_64-1.txz"