#!/bin/bash GIT_URL="https://github.com/matrix-org/dendrite.git" SCRIPT_PATH=$(dirname $(realpath $0)) REPO_DIR="${SCRIPT_PATH}/repo" PACK_DIR="${SCRIPT_PATH}/package" BUILD_DIR="$REPO_DIR/bin" ROOTFS="${SCRIPT_PATH}/rootfs" ACTION="initialze" function err_occur { echo "Error occurred in $ACTION" } trap err_occur ERR set -o errexit set -o errtrace function usage() { echo "$0 usage:" echo " -b the build release number" } BUILD_REL="" while getopts ":b" arg do case "$arg" in b) BUILD_REL="$OPTARG" ;; *) usage ;; esac done function download() { ACTION="download" echo "downloading/update sources..." if [ ! -d "$REPO_DIR" ] then git clone "$GIT_URL" "$REPO_DIR" else git -C "$REPO_DIR" fetch --all fi LATEST_TAG=$(git -C "$REPO_DIR" describe --tags $(git -C "$REPO_DIR" rev-list --tags --max-count=1)) echo "switching to tag: $LATEST_TAG" git -C "$REPO_DIR" switch --detach "$LATEST_TAG" } function build() { ACTION="build" echo "building the program..." cd "$REPO_DIR" bash build.sh } function package() { ACTION="package" echo "packaging the binaries..." rm -rf "$ROOTFS"/* install -D -t $ROOTFS/usr/local/lib/dendrite $BUILD_DIR/* install -D -t $ROOTFS/etc/dendrite $REPO_DIR/dendrite-sample.polylith.yaml install -D -t $ROOTFS/etc/dendrite $REPO_DIR/dendrite-sample.monolith.yaml export VERSION=$($BUILD_DIR/dendrite-monolith-server --version) if [ -n "${BUILD_REL}" ] then VERSION=$VERSION-brel$BUILD_REL fi mkdir -p $ROOTFS/DEBIAN sed "s/+++VERSION+++/${VERSION}/" > $ROOTFS/DEBIAN/control << EOF Package: dendrite Version: +++VERSION+++ Priority: optional Architecture: all Maintainer: leafee98 Description: Dendrite is a second-generation Matrix homeserver written in Go! Dendrite is a second-generation Matrix homeserver written in Go. It intends to provide an efficient, reliable and scalable alternative to Synapse. EOF mkdir -p "$PACK_DIR" dpkg-deb --build --root-owner-group $ROOTFS $PACK_DIR/dendrite-$VERSION.deb } download build package