debmaker/lib/function.sh

114 lines
4.0 KiB
Bash

#!/bin/bash
LANGUAGE=C
LC_ALL=C
LANG=C
DEBOOTSTRAP_DIR=cache/debootstrap/
MOUNT_PATH=/mnt/debmaker
zdebmaker_getDep(){
sudo sleep 0
[ -d cache ] || mkdir cache
[ -d dist ] || mkdir dist
[ -d ${DEBOOTSTRAP_DIR} ] || debmaker_debootstrapUpdate
}
zdebmaker_createOS(){
zdebmaker_getDep
dd if=/dev/zero of=cache/${DEBIAN_VERSION_CODENAME}.tmp bs=100M count=5
sudo mkfs.ext4 cache/${DEBIAN_VERSION_CODENAME}.tmp
[ -d ${MOUNT_PATH}/${DEBIAN_VERSION_CODENAME}/ ] || sudo mkdir -p ${MOUNT_PATH}/${DEBIAN_VERSION_CODENAME}/
sudo mount cache/${DEBIAN_VERSION_CODENAME}.tmp ${MOUNT_PATH}/${DEBIAN_VERSION_CODENAME}
sudo DEBOOTSTRAP_DIR=cache/debootstrap/ ${DEBOOTSTRAP_DIR}/debootstrap ${DEBIAN_VERSION_CODENAME} ${MOUNT_PATH}/${DEBIAN_VERSION_CODENAME}/
sudo umount ${MOUNT_PATH}/${DEBIAN_VERSION_CODENAME}
mv cache/${DEBIAN_VERSION_CODENAME}.tmp cache/${DEBIAN_VERSION_CODENAME}
}
zdebmaker_createAppOS(){
zdebmaker_getDep
[ -f cache/${DEBIAN_VERSION_CODENAME} ] || zdebmaker_createOS
[ "${IMAGE_SIZE}" == "" ] && IMAGE_SIZE=2
dd if=/dev/zero of=cache/${APP}.tmp bs=1G count=${IMAGE_SIZE}
sudo mkfs.ext4 cache/${APP}.tmp
[ -d ${MOUNT_PATH}/${APP}/ ] || sudo mkdir -p ${MOUNT_PATH}/${APP}/
[ -d ${MOUNT_PATH}/${DEBIAN_VERSION_CODENAME}/ ] || sudo mkdir -p ${MOUNT_PATH}/${DEBIAN_VERSION_CODENAME}/
sudo mount cache/${APP}.tmp ${MOUNT_PATH}/${APP}/
sudo mount cache/${DEBIAN_VERSION_CODENAME} ${MOUNT_PATH}/${DEBIAN_VERSION_CODENAME}
sudo rsync -h -X -A --numeric-ids -aH --no-whole-file --inplace --one-file-system ${MOUNT_PATH}/${DEBIAN_VERSION_CODENAME}/* ${MOUNT_PATH}/${APP}/
sudo umount ${MOUNT_PATH}/${DEBIAN_VERSION_CODENAME}
sudo umount ${MOUNT_PATH}/${APP}/
mv cache/${APP}.tmp cache/${APP}
}
zdebmaker_inject(){
zdebmaker_getDep
sudo mount cache/${APP} ${MOUNT_PATH}/${APP}/
[ -d ${MOUNT_PATH}/${APP}/tmp/dist ] && sudo rm -fr ${MOUNT_PATH}/${APP}/tmp/dist/
sudo mkdir ${MOUNT_PATH}/${APP}/tmp/dist/
[ -d ${MOUNT_PATH}/${APP}/tmp/src ] && sudo rm -rf ${MOUNT_PATH}/${APP}/tmp/src/
sudo mkdir -p ${MOUNT_PATH}/${APP}/tmp/src
sudo echo . /tmp/src/exec_in_chroot.sh | sudo tee ${MOUNT_PATH}/${APP}/root/.bashrc
sudo cp -pfr ressources/${APP}/* ${MOUNT_PATH}/${APP}/tmp/src
sudo cp lib/exec_in_chroot.sh ${MOUNT_PATH}/${APP}/tmp/src
sudo find ${MOUNT_PATH}/${APP}/tmp/src -name .gitkeep -exec rm {} \;
sudo umount ${MOUNT_PATH}/${APP}/
}
debmaker_mount_proc_sys(){
OPEN_FILE=$1
OPEN_DIR=$2
zdebmaker_getDep
[ -d ${OPEN_FILE} ] || sudo mkdir -p ${OPEN_DIR}
sudo mount ${OPEN_FILE} ${OPEN_DIR}
[ -d ${OPEN_DIR}/proc ] || sudo mkdir -p ${OPEN_DIR}/proc
sudo mount -t proc proc ${OPEN_DIR}/proc
[ -d ${OPEN_DIR}/sys ] || sudo mkdir -p ${OPEN_DIR}/sys
sudo mount -t sysfs sys ${OPEN_DIR}/sys
}
debmaker_umount_proc_sys(){
OPEN_DIR=$1
zdebmaker_getDep
sudo umount ${OPEN_DIR}/sys
sudo umount ${OPEN_DIR}/proc
sudo umount ${OPEN_DIR}
}
debmaker_chroot() {
OPEN_FILE=cache/$2${APP}
zdebmaker_getDep
[ -f cache/${APP} ] || zdebmaker_createAppOS
zdebmaker_inject
debmaker_mount_proc_sys ${OPEN_FILE} ${MOUNT_PATH}/${APP}/
sudo chroot ${MOUNT_PATH}/${APP}/
debmaker_umount_proc_sys ${MOUNT_PATH}/${APP}/
}
debmaker_run(){
zdebmaker_getDep
[ -f cache/${APP} ] || zdebmaker_createAppOS
zdebmaker_inject
debmaker_mount_proc_sys cache/${APP} ${MOUNT_PATH}/${APP}/
if [ "$STEP" == "" ]
then
sudo chroot ${MOUNT_PATH}/${APP}/ /tmp/src/exec_in_chroot.sh main
else
for CURRENT_STEP in ${STEP}
do
sudo chroot ${MOUNT_PATH}/${APP}/ /tmp/src/exec_in_chroot.sh ${CURRENT_STEP}
done
fi
rm -fr dist/${APP}*
find ${MOUNT_PATH}/${APP}/tmp/dist/ -name *.deb -exec cp -v {} dist/ \;
debmaker_umount_proc_sys ${MOUNT_PATH}/${APP}/
}
debmaker_debootstrapUpdate(){
[ -d ${DEBOOTSTRAP_DIR} ] || mkdir ${DEBOOTSTRAP_DIR}
URL=https://salsa.debian.org/installer-team/debootstrap/-/archive/master/debootstrap-master.tar.gz
FILES="debootstrap-master/debootstrap debootstrap-master/scripts/ debootstrap-master/functions"
wget -qO - ${URL} | tar -C ${DEBOOTSTRAP_DIR} --strip-components=1 -zx ${FILES}
}