live-build/scripts/build/clean

169 lines
4.1 KiB
Plaintext
Raw Normal View History

2007-09-23 08:04:46 +00:00
#!/bin/sh
## live-build(7) - System Build Scripts
## Copyright (C) 2016-2020 The Debian Live team
## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
##
## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
## This is free software, and you are welcome to redistribute it
## under certain conditions; see COPYING for details.
2007-09-23 08:04:46 +00:00
set -e
# Including common functions
[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh
# Redirecting to auto script if required
if [ "${1}" = "noauto" ]; then
shift
else
Maybe_auto_redirect clean "${@}"
fi
2007-09-23 08:05:11 +00:00
# Setting static variables
DESCRIPTION="Clean up system build directories"
USAGE="${PROGRAM} [--all] [--cache] [--chroot] [--binary] [--purge] [--remove] [--stage] [--source]"
2007-09-23 08:04:48 +00:00
# Reading, preparing and validating config
Read_conffiles $(Common_conffiles)
Prepare_config
#Validate_config
2007-09-23 08:04:48 +00:00
# Avoiding cases were users accidentally nuke their config/binary
if [ ! -d config ] && [ "$(basename ${PWD})" = "config" ]
then
2013-03-11 04:35:40 -01:00
Echo_error "%s is not a good live-build working directory to clean." "${PWD}"
exit 1
fi
Remove_lockfile
2007-09-23 08:05:12 +00:00
if [ $# -eq 0 ]; then
set -- "--all"
fi
STAGEFILES_DIR="$(Stagefiles_dir)"
for ARGUMENT in "${@}"; do
2007-09-23 08:05:18 +00:00
case "${ARGUMENT}" in
--all)
Echo_debug "Running --all"
"${0}" noauto --chroot
"${0}" noauto --binary
"${0}" noauto --stage
"${0}" noauto --source
rmdir --ignore-fail-on-non-empty auto > /dev/null 2>&1 || true
rmdir --ignore-fail-on-non-empty local/bin > /dev/null 2>&1 || true
rmdir --ignore-fail-on-non-empty local > /dev/null 2>&1 || true
2007-09-23 08:05:18 +00:00
;;
--cache)
Echo_debug "Cleaning cache"
rm -rf cache
2007-09-23 08:05:18 +00:00
;;
--chroot)
# This one is not debug because it can potentially take some time
2007-09-23 08:05:18 +00:00
Echo_message "Cleaning chroot"
umount -f chroot/run > /dev/null 2>&1 || true
umount -f chroot/sys > /dev/null 2>&1 || true
umount -f chroot/proc/sys/fs/binfmt_misc > /dev/null 2>&1 || true
umount -f chroot/proc > /dev/null 2>&1 || true
umount -f chroot/lib/init/rw > /dev/null 2>&1 || true
umount -f chroot/dev/shm > /dev/null 2>&1 || true
umount -f chroot/dev/pts > /dev/null 2>&1 || true
umount -f chroot/dev > /dev/null 2>&1 || true
umount -f chroot/var/lib/dpkg > /dev/null 2>&1 || true
umount -f chroot/root/config > /dev/null 2>&1 || true
umount -f chroot/binary.tmp > /dev/null 2>&1 || true
umount -f chroot/dev.tmp/pts > /dev/null 2>&1 || true
rm -rf chroot chroot.tmp
2007-09-23 08:05:18 +00:00
rm -f chroot.packages.live chroot.packages.install
2013-05-06 10:33:07 +00:00
rm -f chroot.files
make temporary state of installed tools recoverable some scripts temporarily install packages to accomplish some work before then removing them. the list of packages installed is kept in memory in a variable. a weakness of this design is that if a failure occurs or the user cancels, and then following this the user re-runs `lb build`, letting it try to pick up and recover from where it left off, that list of packages that had been installed is lost, resulting in those packages that were installed then being a permanent part of the chroot. here we fix this weakness by backing up the list to a file, which is always read from on removal. thus in a recovery situation, any packages still installed from a situation like that just described, will be removed upon the next use of `Remove_package()`. this is not perfect, since we are having to wait for opportunistic execution of the remove function. we need to find a suitable place for the `Cleanup_temp_packages()` function to be used. - doing so in `Init_config_data()` would not be suitable because we don't hold the lock when that's run, even if we ignored the hijacking of that function for taking such action... - doing it in `Exit()` doesn't seem a good fit either. - putting it explicitly in every build script just seems a little messy... perhaps a local exit trap like for removing the lock...? note that `binary_rootfs` skips running the remove function after installing tooling, since it just throws the wrapper chroot away, which then leaves the file around with stale data for the next remove instance to pick up, which then does not actually remove it because it's not installed. this is not ideal either... perhaps the optimisation should be removed from that script? Gbp-Dch: Short
2020-05-05 00:56:36 +00:00
rm -f "$(Installed_tmp_packages_file)"
rm -f "${STAGEFILES_DIR}"/chroot*
2007-09-23 08:05:18 +00:00
;;
--binary)
Echo_debug "Cleaning binary"
umount -f binary.tmp > /dev/null 2>&1 || true
2007-09-23 08:05:18 +00:00
rm -rf binary.tmp binary.deb binary.udeb
rm -f ${LB_IMAGE_NAME}*.iso
rm -f ${LB_IMAGE_NAME}*.img
rm -f ${LB_IMAGE_NAME}*.tar.gz
rm -f ${LB_IMAGE_NAME}*.zsync*
rm -f ${LB_IMAGE_NAME}.sh
rm -f ${LB_IMAGE_NAME}*.contents ${LB_IMAGE_NAME}*.packages ${LB_IMAGE_NAME}*.files
rm -f ${LB_IMAGE_NAME}*.iso-ONIE.bin
2013-01-02 09:27:05 -01:00
rm -f MD5SUMS SHA1SUMS SHA256SUMS SHA512SUMS
rm -f md5sum.txt sha1sum.txt sha256sum.txt sha512sum.txt
2007-09-23 08:05:18 +00:00
rm -rf binary
rm -rf tftpboot
rm -f "${STAGEFILES_DIR}"/binary*
2007-09-23 08:05:18 +00:00
;;
--remove)
Echo_debug "Running --remove"
"${0}" noauto --all
rm -rf cache/packages.*
;;
--purge)
Echo_debug "Running --purge"
"${0}" noauto --all
"${0}" noauto --cache
if [ -e auto/config ]
then
Remove_stagefile config
fi
2007-09-23 08:05:18 +00:00
;;
--stage)
Echo_debug "Cleaning stage files"
rm -rf "${STAGEFILES_DIR}"/*
2007-09-23 08:05:18 +00:00
;;
--source)
Echo_debug "Cleaning source"
rm -f ${LB_IMAGE_NAME}-source*.iso
rm -f ${LB_IMAGE_NAME}-source*.img
rm -f ${LB_IMAGE_NAME}-source*.tar
rm -f ${LB_IMAGE_NAME}-source*.tar.gz
rm -f ${LB_IMAGE_NAME}-source*.list
rm -f ${LB_IMAGE_NAME}-source-selection.txt
2007-09-23 08:05:18 +00:00
rm -rf source
rm -f "${STAGEFILES_DIR}"/source*
2007-09-23 08:05:18 +00:00
;;
-h|--help)
Man
;;
-u|--usage)
Usage --exit
;;
-v|--version)
2012-07-18 19:38:58 +00:00
echo "${VERSION}"
exit 0
;;
2007-09-23 08:05:18 +00:00
*)
Echo_error "invalid arguments"
Usage --fail
2007-09-23 08:05:18 +00:00
;;
esac
done