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