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.

195 lines
6.5 KiB

#!/bin/bash
############################################################################################################################
## root check
############################################################################################################################
if [ $EUID == "0" ];
then
echo "USER root not allowed"
exit 0
fi
############################################################################################################################
## vars config
############################################################################################################################
PKG=dqlite
OWNER=canonical
PROTO=https
DOM=git.snix.me
REPO=$OWNER/${PKG}
REPO=${REPO}-builder
RAW=raw/branch
UP=main
TEMPLATE=package_version_arch
SRC_PATH=$HOME/$PKG
echo "repository domain [$DOM]:"
read DOMAIN
if [ -z "$DOMAIN" ];
then
DOMAIN=$DOM
fi
URL=$PROTO://$DOMAIN
LINK=$URL/$REPO/$RAW/$UP/$TEMPLATE
echo "$PKG Source Code PATH [$SRC_PATH]:"
read SRC_PATH
if [ -z "$SRC_PATH" ];
then
SRC_PATH=$HOME/$PKG
else
ln -s $SRC_PATH $HOME/$PKG
SRC_PATH=$HOME/$PKG
fi
############################################################################################################################
## install package on sysroot
############################################################################################################################
WORK_PATH=$PWD
SYSROOT=$HOME/sysroot
rm -rf $SYSROOT
mkdir -p $SYSROOT
cd $SRC_PATH
make DESTDIR=$SYSROOT install > /dev/null 2>&1
#LIB_VERSION=$(ls -1 $SYSROOT/usr/lib/*|grep so.|grep -v 0.0)
#LIB_VERSION=${LIB_VERSION: -1}
LIB_VERSION=0
if [ -z "$LIB_VERSION" ];
then
echo "$PKG library version not detected"
echo exiting ........
rm -rf $SYSROOT
exit 0
fi
cd $WORK_PATH
############################################################################################################################
## vars config
############################################################################################################################
#VERSION=$(cat $SRC_PATH/${PKG}.pc|grep Version|awk '{print $2}')
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
############################################################################################################################
## copy package files
############################################################################################################################
ARCH=$(dpkg --print-architecture)
if [ $ARCH = "amd64" ]
then
LIB_ARCH=x86_64-linux-gnu
elif [ $ARCH = "i386" ]
then
LIB_ARCH=i386-linux-gnu
elif [ $ARCH = "arm64" ]
then
LIB_ARCH=aarch64-linux-gnu
elif [ $ARCH = "armhf" ]
then
LIB_ARCH=arm-linux-gnueabihf
elif [ $ARCH = "armel" ]
then
ARCH=arm-linux-gnueabi
else
echo architecture not found!!!!!!!!!
echo exiting
exit 0
fi
PKG_NAME=lib$PKG
PKG_NAME_LIB=$PKG_NAME$LIB_VERSION
PKG_NAME_DEV=${PKG_NAME}-dev
PKG_DIR_LIB=${PKG_NAME_LIB}_${VERSION}-${RELEASE}_${ARCH}
PKG_DIR_DEV=${PKG_NAME_DEV}_${VERSION}-${RELEASE}_${ARCH}
PKG_ROOT_LIB=$HOME/$PKG_DIR_LIB
PKG_ROOT_DEV=$HOME/$PKG_DIR_DEV
USR=usr
LIB_DIR=$USR/lib
INCLUDE_DIR=$USR/include
rm -rf ${PKG_ROOT_LIB}*
rm -rf ${PKG_ROOT_DEV}*
mkdir -p $PKG_ROOT_LIB/DEBIAN
mkdir -p $PKG_ROOT_DEV/DEBIAN
if [ ! -d "$TEMPLATE" ];
then
DIR=DEBIAN/dev
FILE=control
curl -s -o $PKG_ROOT_DEV/DEBIAN/$FILE "$LINK/$DIR/$FILE" -O
DIR=DEBIAN/lib
curl -s -o $PKG_ROOT_LIB/DEBIAN/$FILE "$LINK/$DIR/$FILE" -O
FILE=debian-binary
curl -s -o $PKG_ROOT_LIB/DEBIAN/$FILE "$LINK/$DIR/$FILE" -O
FILE=shlibs
curl -s -o $PKG_ROOT_LIB/DEBIAN/$FILE "$LINK/$DIR/$FILE" -O
FILE=triggers
curl -s -o $PKG_ROOT_LIB/DEBIAN/$FILE "$LINK/$DIR/$FILE" -O
else
DIR=DEBIAN
cp package_version_arch/DEBIAN/lib/* $PKG_ROOT_LIB/$DIR
cp package_version_arch/DEBIAN/dev/* $PKG_ROOT_DEV/$DIR
fi
DIR=DEBIAN
chmod 644 $PKG_ROOT_LIB/$DIR/*
chmod 644 $PKG_ROOT_DEV/$DIR/*
DIR=$LIB_DIR
DIR=$DIR/$LIB_ARCH
mkdir -p $PKG_ROOT_LIB/$DIR
mkdir -p $PKG_ROOT_DEV/$DIR
mv $SYSROOT/$DIR/*.so* $PKG_ROOT_LIB/$DIR
mv $SYSROOT/$DIR/* $PKG_ROOT_DEV/$DIR
mv $SYSROOT/$INCLUDE_DIR $PKG_ROOT_DEV/$USR
############################################################################################################################
## adjusting DEBIAN/control file
############################################################################################################################
DATE=$(date +"%Y.%m.%d")
CONTROL_LIB=$PKG_ROOT_LIB/DEBIAN/control
CONTROL_DEV=$PKG_ROOT_DEV/DEBIAN/control
sed -i "s/Package: /Package: ${PKG_NAME_LIB}/g" $CONTROL_LIB
sed -i "s/Package: /Package: ${PKG_NAME_DEV}/g" $CONTROL_DEV
sed -i "s/Version:/Version: ${VERSION}/g" $CONTROL_LIB
sed -i "s/Version:/Version: ${VERSION}/g" $CONTROL_DEV
sed -i "s/Architecture:/Architecture: ${ARCH}/g" $CONTROL_LIB
sed -i "s/Architecture:/Architecture: ${ARCH}/g" $CONTROL_DEV
if [ ! -z "$MAINTAINER" ];
then
sed -i "s/Maintainer:/Maintainer: ${MAINTAINER}/g" $CONTROL_LIB
sed -i "s/Maintainer:/Maintainer: ${MAINTAINER}/g" $CONTROL_DEV
fi
sed -i "s/Date:/Date: ${DATE}/g" $CONTROL_DEV
sed -i "s/Date:/Date: ${DATE}/g" $CONTROL_LIB
sed -i "s/Depends: /Depends: ${PKG_NAME_LIB} (= ${VERSION}-${RELEASE})/g" $CONTROL_DEV
############################################################################################################################
## building debian package .deb
############################################################################################################################
dpkg-deb --build --root-owner-group $PKG_ROOT_LIB > /dev/null 2>&1
dpkg-deb --build --root-owner-group $PKG_ROOT_DEV > /dev/null 2>&1
SIZE_LIB=$(du -s $PKG_ROOT_LIB|awk '{print $1}')
SIZE_DEV=$(du -s $PKG_ROOT_DEV|awk '{print $1}')
sed -i "s/Installed-Size: /Installed-Size: ${SIZE_LIB}/g" $CONTROL_LIB
sed -i "s/Installed-Size: /Installed-Size: ${SIZE_DEV}/g" $CONTROL_DEV
rm -f $PKG_ROOT_LIB.deb $PKG_ROOT_DEV.deb
dpkg-deb --build --root-owner-group $PKG_ROOT_LIB
dpkg-deb --build --root-owner-group $PKG_ROOT_DEV
############################################################################################################################
## finish
############################################################################################################################
echo "remove package temp files: [$HOME/${PKG}_${VERSION}-${RELEASE}_${ARCH}]: y/n"
read RM
if [ "$RM" == "y" ];
then
rm -r $PKG_ROOT_LIB
rm -r $PKG_ROOT_DEV
fi
rm -rf $SYSROOT
dpkg --info $PKG_ROOT_LIB.deb
dpkg --info $PKG_ROOT_DEV.deb