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