You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
5.0 KiB

#!/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