Add build script for dendrite
This commit is contained in:
parent
d16b293f1c
commit
59f6e2d64b
105
dendrite/deb.sh
Normal file
105
dendrite/deb.sh
Normal file
|
@ -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 <me@leafee98.com>
|
||||||
|
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
|
||||||
|
|
Loading…
Reference in a new issue