summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMihai Moldovan <ionic@ionic.de>2015-04-03 02:32:25 +0200
committerMihai Moldovan <ionic@ionic.de>2015-04-03 02:38:00 +0200
commit6bc245d846cd4c50609c1439121f202fc037365d (patch)
tree70d5fa60a324727fa067d016746068773d101c61
parent82283aa70233927e563b44dc2c7a73bd545cd4bf (diff)
downloadbuildscripts-6bc245d846cd4c50609c1439121f202fc037365d.tar.gz
buildscripts-6bc245d846cd4c50609c1439121f202fc037365d.tar.bz2
buildscripts-6bc245d846cd4c50609c1439121f202fc037365d.zip
bin/build-deb-package: add cleanup function to not leave random temporary directories around.
-rwxr-xr-xbin/build-deb-package25
1 files changed, 25 insertions, 0 deletions
diff --git a/bin/build-deb-package b/bin/build-deb-package
index b5f63ff..6f25293 100755
--- a/bin/build-deb-package
+++ b/bin/build-deb-package
@@ -45,8 +45,32 @@ test -f "${HOME}/.buildscripts/${PREFIX}.conf" && . "${HOME}/.buildscripts/${PRE
: ${FORCE_BUILD:="no"}
: ${DEB_BUILD_FOR:="debian:${DEBIAN_DISTROS} ubuntu:${UBUNTU_DISTROS}"}
+# These parts are not user-serviceable.
+TEMP_CLEANUP=""
+# End of non-user-serviceable part.
+
set -ex
+# Cleans up temporary directories and files.
+# RFC SHOULD be called by trap handlers.
+cleanup () {
+ typeset -a temp_cleanup_arr
+ typeset OLDIFS="${IFS}"
+ IFS=":"
+ read -a temp_cleanup_arr <<< "${TEMP_CLEANUP}"
+ IFS="${OLDIFS}"
+
+ typeset temp_dir=""
+ for temp_dir in "${temp_cleanup_arr[@]}"; do
+ if [ -d "${temp_dir}" ]; then
+ rm -Rf "${temp_dir}"
+ fi
+ done
+}
+
+# Run cleanup() automatically.
+trap cleanup ERR EXIT SIGTERM SIGINT SIGHUP SIGPIPE SIGALRM SIGUSR1 SIGUSR2
+
set_vars() {
USE_SUDO="yes"
PDEBUILD="pdebuild --pbuilder qemubuilder"
@@ -190,6 +214,7 @@ build_packages() {
test -z "${CODENAMES}" || grep "${CODENAMES}" <<< "${line}" || break
TEMP_DIR="$(mktemp -d --tmpdir=${TEMP_BASE})"
+ TEMP_CLEANUP="${TEMP_CLEANUP}:${TEMP_DIR}"
mkdir -p -- "${TEMP_DIR}/${PROJECT}"
chmod 2770 -Rf -- "${TEMP_DIR}"