bdisk/lib/03-release_me.func.sh

51 lines
1.4 KiB
Bash

function release_me () {
## check for mountpoints from a manual chroot and umount them if they're still mounted.
## NOTE: you can use findmnt(8) to view a tree of mountpoints, including bindmounts etc.
# Is there an active chroot?
set +e
if [[ "${1}" == "64" ]];
then
local CHROOTDIR="${CHROOTDIR}root.x86_64"
local BUILDDIR="${BUILDDIR}64"
elif [[ "${1}" == "32" ]];
then
local CHROOTDIR="${CHROOTDIR}root.i686"
local BUILDDIR="${BUILDDIR}32"
else
echo "WHOOPS. We hit an error that makes no logical sense."
echo 'Dying.'
exit 1
fi
echo "Checking for and cleaning up mountpoints from the chroot environment..."
for i in tmp run dev/shm dev/pts dev
do
umount -l ${CHROOTDIR}/${i}
done
# and is it using efivars?
if [ -d ${CHROOTDIR}/sys/firmware/efi/efivars ];
then
umount -l ${CHROOTDIR}/sys/firmware/efi/efivars
fi
# and finish cleaning up normal chroots
for i in sys proc
do
umount -l ${CHROOTDIR}/${i}
done
# and is it mounted via two mountpoints a la arch-chroot?
mount | awk '{print $3}' | grep -q ${MOUNTPT}
if [[ ${?} == "0" ]];
then
umount ${MOUNTPT}
fi
if [ -d ${SRCDIR}/efiboot ];
then
umount -l ${SRCDIR}/efiboot
fi
rm -rf ${SRCDIR}/efiboot
#rm -rf ${TEMPDIR}/*
set -e # and go back to failing on non-0 exit status.
CHROOTDIR="${CHROOTDIR_GLOB}"
BUILDDIR="${BUILDDIR_GLOB}"
}