Another refactor

This commit is contained in:
thomas 2022-02-24 00:02:53 +01:00
parent 9c0cb8c32f
commit a767208c33
14 changed files with 116 additions and 149 deletions

View file

@ -1,7 +1,7 @@
#!/bin/bash
if [ ! "$1" == "" ];
then
source /tmp/dist/$1
source /tmp/src/$1
shift
FUNC=$1
shift

View file

@ -1,12 +1,82 @@
#!/bin/bash
DEBOOTSTRAP_DIR=cache/debootstrap/
source ressources/${APP}/${APP}
CACHE_APP=cache/${APP}/
MOUNT_APP=/mnt/debmaker/${APP}/
DEBOOTSTRAP_DIR=cache/debootstrap/
MOUNT_PATH=/mnt/debmaker
[ -d ${CACHE_APP} ] || mkdir -p ${CACHE_APP}
zdebmaker_getDep(){
[ -d ${DEBOOTSTRAP_DIR} ] || debmaker_debootstrapUpdate
}
########################## SUB FUNCTION ##########################
zdebmaker_createOS(){
dd if=/dev/zero of=cache/${DEBIAN_VERSION_CODENAME}.tmp bs=100M count=5
sudo mkfs.ext4 cache/${DEBIAN_VERSION_CODENAME}.tmp
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(){
[ -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
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(){
sudo mount cache/${APP} ${MOUNT_PATH}/${APP}/
[ -d ${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 cp -fr ressources/${APP}/* ${MOUNT_PATH}/${APP}/tmp/src
sudo cp -fr lib/exec_in_chroot.sh ${MOUNT_PATH}/${APP}/tmp/src
sudo umount ${MOUNT_PATH}/${APP}/
}
debmaker_mount_proc_sys(){
OPEN_FILE=$1
OPEN_DIR=$2
[ -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
sudo umount ${OPEN_DIR}/sys
sudo umount ${OPEN_DIR}/proc
sudo umount ${OPEN_DIR}
}
debmaker_chroot() {
OPEN_FILE=$1
debmaker_mount_proc_sys ${OPEN_FILE} ${MOUNT_PATH}/${APP}/
sudo chroot ${MOUNT_PATH}/${APP}/
debmaker_umount_proc_sys ${MOUNT_PATH}/${APP}/
}
debmaker_run(){
[ -f cache/${APP} ] || zdebmaker_createAppOS
zdebmaker_inject
debmaker_mount_proc_sys cache/${APP} ${MOUNT_PATH}/${APP}/
for CURRENT_STEP in ${STEP}
do
sudo chroot ${MOUNT_PATH}/${APP}/ /tmp/src/exec_in_chroot.sh ${APP} ${CURRENT_STEP} ${GIT_VERSION} ${DEB_VERSION}
done
find ${MOUNT_PATH}/${APP}/tmp/dist/ -name *.deb -exec cp {} dist/ \;
debmaker_umount_proc_sys ${MOUNT_PATH}/${APP}/
}
debmaker_debootstrapUpdate(){
[ -d ${DEBOOTSTRAP_DIR} ] || mkdir ${DEBOOTSTRAP_DIR}
@ -15,110 +85,5 @@ debmaker_debootstrapUpdate(){
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