#!/bin/bash ############################################################################################################################ ## root check ############################################################################################################################ if [ $EUID == "0" ]; then echo "USER root not allowed" exit 0 fi ############################################################################################################################ ## vars config ############################################################################################################################ PKG=lxd OWNER=lxc PROTO=https DOM=git.snix.me REPO=$OWNER/$PKG REPO=${REPO}-builder RAW=raw/branch UP=main TEMPLATE=package_version_arch echo "repository domain [$DOM]:" read DOMAIN if [ -z "$DOMAIN" ]; then DOMAIN=$DOM fi URL=$PROTO://$DOMAIN LINK=$URL/$REPO/$RAW/$UP/$TEMPLATE SRC_PATH=$HOME/$PKG echo "$PKG Source Code PATH [$SRC_PATH]:" read SRC_PATH if [ -z "$SRC_PATH" ]; then SRC_PATH=$HOME/$PKG fi BIN_PATH=$HOME/go/bin echo "$PKG binary PATH [$BIN_PATH]:" read BIN_PATH if [ -z "$BIN_PATH" ]; then BIN_PATH=$HOME/go/bin fi VERSION=$($BIN_PATH/lxd version) if [ -z "$VERSION" ]; then echo "$PKG version not detected" echo VERSION: read VERSION fi ARCH=$(dpkg --print-architecture) echo "ARCH [$ARCH]:" read ARCH if [ -z "$ARCH" ]; then ARCH=$(dpkg --print-architecture) fi echo "RELEASE [1]:" read RELEASE if [ -z "$RELEASE" ]; then RELEASE=1 fi echo MAINTAINER [""]: read MAINTAINER if [ -z "$MAINTAINER" ]; then MAINTAINER=anonymous fi ############################################################################################################################ ## check LXD Version for Appropriate DEBIAN/control file & copy package files ############################################################################################################################ PKG_NAME=${PKG}_${VERSION}-${RELEASE}_${ARCH} PKG_ROOT=$HOME/$PKG_NAME CONTROL=control CONTROL_VERSION=5.10 if [[ $(echo -e "${VERSION}\n${CONTROL_VERSION}" | sort -V | tail -n1) == "${CONTROL_VERSION}" ]]; then CONTROL_VERSION=5.9 fi USR=usr LIB_DIR=$USR/lib BIN_DIR=$USR/bin SHARE_DIR=$USR/share DOC_DIR=$SHARE_DIR/doc SYSTEMD=$LIB_DIR/systemd/system SYS_USR=$LIB_DIR/sysusers.d BIN_FILES=(devlxd-client fuidshift lxc lxc-to-lxd lxd lxd-agent lxd-benchmark lxd-migrate lxd-user macaroon-identity sysinfo) DIR=DEBIAN rm -rf ${PKG_ROOT}* if [ ! -d "$TEMPLATE" ]; then FILE=postinst mkdir -p $PKG_ROOT/$DIR curl -s -o $PKG_ROOT/$DIR/$FILE "$LINK/$DIR/$FILE" -O curl -s -o $PKG_ROOT/$DIR/$CONTROL "$LINK/$DIR/${CONTROL}_$CONTROL_VERSION" -O DIR=$SYSTEMD FILE=$PKG mkdir -p $PKG_ROOT/$DIR curl -s -o $PKG_ROOT/$DIR/${FILE}.service "$LINK/$DIR/${FILE}.service" curl -s -o $PKG_ROOT/$DIR/${FILE}@.service "$LINK/$DIR${FILE}@.service" curl -s -o $PKG_ROOT/$DIR/${FILE}.socket "$LINK/$DIR/${FILE}.socket" DIR=$SYS_USR mkdir -p $PKG_ROOT/$DIR curl -s -o $PKG_ROOT/$DIR/${FILE}.conf "$LINK/$DIR/${FILE}.conf" else cp -r $TEMPLATE $PKG_ROOT rm $PKG_ROOT/$DIR/${CONTROL}* cp $TEMPLATE/$DIR/${CONTROL}_$CONTROL_VERSION $PKG_ROOT/$DIR/$CONTROL fi DIR=DEBIAN FILE=postinst chmod 755 $PKG_ROOT/$DIR/$FILE DIR=$BIN_DIR mkdir -p $PKG_ROOT/$BIN_DIR cp "${BIN_FILES[@]/#/$BIN_PATH/}" $PKG_ROOT/$BIN_DIR DIR=$USR/share/licenses/$PKG ORG_FILE=COPYING FILE=LICENSE mkdir -p $PKG_ROOT/$DIR cp $SRC_PATH/$ORG_FILE $PKG_ROOT/$DIR/$FILE DIR=$DOC_DIR mkdir -p $PKG_ROOT/$DIR cp -r $SRC_PATH/doc $PKG_ROOT/$DOC_DIR/$PKG DIR=$SHARE_DIR/bash_completion/completions mkdir -p $PKG_ROOT/$DIR cp $SRC_PATH/scripts/bash/${PKG}-client $PKG_ROOT/$DIR/$PKG ############################################################################################################################ ## adjusting DEBIAN/control file ############################################################################################################################ FILE=$PKG_ROOT/DEBIAN/$CONTROL DATE=$(date +"%Y.%m.%d") sed -i "s/Version:/Version: ${VERSION}/g" $FILE sed -i "s/Architecture:/Architecture: ${ARCH}/g" $FILE if [ ! -z "$MAINTAINER" ]; then sed -i "s/Maintainer:/Maintainer: ${MAINTAINER}/g" $FILE fi sed -i "s/Date:/Date: ${DATE}/g" $FILE ############################################################################################################################ ## building debian package .deb ############################################################################################################################ if [ -f "$PKG_ROOT.deb" ]; then mv $PKG_ROOT.deb ${PKG_ROOT}_$DATE_backup.deb fi dpkg-deb --build --root-owner-group $PKG_ROOT > /dev/null 2>&1 SIZE=$(du -s $PKG_ROOT|awk '{print $1}') sed -i "s/Installed-Size:/Installed-Size: ${SIZE}/g" $FILE rm -f $PKG_ROOT.deb dpkg-deb --build --root-owner-group $PKG_ROOT ############################################################################################################################ ## finish ############################################################################################################################ echo "remove package temp files: [$PKG_ROOT]: y/n" read RM if [ "$RM" == "y" ]; then rm -r $PKG_ROOT fi dpkg --info $PKG_ROOT.deb