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
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
|