diff --git a/dendrite/deb.sh b/dendrite/deb.sh new file mode 100644 index 0000000..b0e03a9 --- /dev/null +++ b/dendrite/deb.sh @@ -0,0 +1,105 @@ +#!/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 +