#!/bin/bash DEBOOTSTRAP_DIR=cache/debootstrap/ source ressources/${APP}/${APP} CACHE_APP=cache/${APP}/ MOUNT_APP=/mnt/debmaker/${APP}/ [ -d ${CACHE_APP} ] || mkdir -p ${CACHE_APP} ########################## SUB FUNCTION ########################## 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} } zdebmaker_getDep(){ [ -d ${DEBOOTSTRAP_DIR} ] || debmaker_debootstrapUpdate } valideStep(){ CURRENT_STEP=$1 RESULT=0 for tmp in ${STEP} do if [ $tmp == ${CURRENT_STEP} ] ; then RESULT=1 break fi done if [ $RESULT -eq 0 ] then echo invalid step fi } getSizeImage(){ [ "${IMAGE_SIZE}" == "" ] && IMAGE_SIZE=2 } createImage(){ dd if=/dev/zero of=${CACHE_APP}/os bs=1G count=${IMAGE_SIZE} sudo mkfs.ext4 ${CACHE_APP}/os } previousStep(){ CURRENT_STEP=$1 TMP_STEP=os; for tmp in ${STEP} do PREV=${TMP_STEP} TMP_STEP=$tmp if [ $tmp == $CURRENT_STEP ] ; then break fi done echo $PREV } ########################## FUNCTION ########################## debmaker_mountStep(){ CURRENT_STEP=$1 [ -d ${MOUNT_APP}/${CURRENT_STEP} ] || sudo mkdir -p ${MOUNT_APP}/${CURRENT_STEP} sudo mount ${CACHE_APP}/${CURRENT_STEP} ${MOUNT_APP}/${CURRENT_STEP} [ -d ${MOUNT_APP}/${CURRENT_STEP}/proc ] || sudo mkdir -p ${MOUNT_APP}/${CURRENT_STEP}/proc sudo mount -t proc proc ${MOUNT_APP}/${CURRENT_STEP}/proc [ -d ${MOUNT_APP}/${CURRENT_STEP}/sys ] || sudo mkdir -p ${MOUNT_APP}/${CURRENT_STEP}/sys sudo mount -t sysfs sys ${MOUNT_APP}/${CURRENT_STEP}/sys sleep 2 } debmaker_umountStep(){ CURRENT_STEP=$1 sudo umount ${MOUNT_APP}/${CURRENT_STEP}/sys sudo umount ${MOUNT_APP}/${CURRENT_STEP}/proc sudo umount ${MOUNT_APP}/${CURRENT_STEP} } debmaker_chrootStep(){ CURRENT_STEP=$1 debmake_mountStep ${CURRENT_STEP} [ -d ${MOUNT_APP}/${CURRENT_STEP}/tmp/dist/${APP} ] && sudo rm -rf ${MOUNT_APP}/${CURRENT_STEP}/tmp/dist/ sudo mkdir -p ${MOUNT_APP}/${CURRENT_STEP}/tmp/dist sudo cp -fr ressources/${APP}/* ${MOUNT_APP}/${CURRENT_STEP}/tmp/dist sudo cp -fr lib/exec_in_chroot.sh ${MOUNT_APP}/${CURRENT_STEP}/tmp/dist shift sudo chroot ${MOUNT_APP}${CURRENT_STEP}/ $* find ${MOUNT_APP}${CURRENT_STEP}/tmp/dist/ -name *.deb -exec cp {} dist/ \; debmake_umountStep ${CURRENT_STEP} } ########################## FUNCTION ########################## debmaker_runStepOS() { CURRENT_STEP=os getSizeImage createImage debmake_mountStep ${CURRENT_STEP} sudo ${DEBOOTSTRAP_DIR}/debootstrap ${DEBIAN_VERSION_CODENAME} ${MOUNT_APP}/os/ debmake_umountStep ${CURRENT_STEP} } debmaker_runStepCustom() { CURRENT_STEP=$1 valideStep ${CURRENT_STEP} PREVIOUS=$(previousStep ${CURRENT_STEP}) echo -n copy $PREVIOUS in $CURRENT_STEP ... cp ${CACHE_APP}/${PREVIOUS} ${CACHE_APP}/${CURRENT_STEP} echo ": OK" debmake_chrootStep $1 /tmp/dist/exec_in_chroot.sh ${APP} ${CURRENT_STEP} ${GIT_VERSION} ${DEB_VERSION} } debmaker_runAllStep(){ debmake_runStepOS for tmp in ${STEP} do debmake_runStepCustom $tmp done } zdebmaker_getDep