From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6487873763254730752 X-Received: by 10.25.31.13 with SMTP id f13mr557036lff.16.1510575824901; Mon, 13 Nov 2017 04:23:44 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 10.46.25.80 with SMTP id p77ls4091606lje.1.gmail; Mon, 13 Nov 2017 04:23:44 -0800 (PST) X-Google-Smtp-Source: AGs4zMYs6Kbu5SrihOthGhehQ/EPHiKu7y68WAcrxYkHsSzj5Vs59KAZV5VqeW9aG3EVA54Jqu/T X-Received: by 10.46.116.16 with SMTP id p16mr111111ljc.0.1510575824461; Mon, 13 Nov 2017 04:23:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510575824; cv=none; d=google.com; s=arc-20160816; b=01wzBTMVxEteCViU6K0BTiSN4yy8W8yeL4uk095WquI3UDleA+tnChO6FjkJ5U+XbA 9nLnWY4v+Idt//RJIJLgZ5o109r9Xa2aqcrzRA1bVgzL4cLBwX3DSm/g6BG1qbfikh8M D1NCYF95AmHDa0b5+U0n3cNGeA3VmFK9Z1WUzJBCe0EIHr0qfKAJUoy8rgH28gHR9dik 1yaQ98hOE2hNgcrEm9F4hqpWpkk89dRhoSrxQuc5/LmaQIMPvkT+9jaJn8WwwBmocZUN CntVBiZeDwSpphgyUasqJ7d5guV1XCkEJHCKNLTzFWNky8C70NkYFZ+OWr0fUzkHfUGy UNEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:arc-authentication-results; bh=1xm0vI2Hc7hHdw/jEGljJPJj9yNPF3PzMiyCL6BFQiM=; b=UqLrxAOfPs7HqbMCJdpCxcUUr6kH8qX1w3HBMkqtIRtwzc3YfifDIsrMHzy7iSaGde w/41tbFTGfivCZqOUSQeSBjySEWdSiXkk2ZRa2sBVpP69/4ZwRQqNq7d2K649aCDiOPL Nnp6kbOb4518HsCb96c2CwJ8+UBmYXQerc+aseD06cnKuw/kLN8Nzudm42mtleoxtG7c lREvIe0iCZn4EXfJHgCKlcJRbUdkihKUaZGW1enGFFDJZOln4rKk/kfGD9xOLSnrpSoo dyGaOnuKNJTvVmX07kSPn9QMQjF8w44QZ6B7xudau4/920nHDlzg9TlkwHD/jsNRGbB6 8tqQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=christian.storm@siemens.com Return-Path: Received: from david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id 72si1252366ljf.5.2017.11.13.04.23.44 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 Nov 2017 04:23:44 -0800 (PST) Received-SPF: pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.14 as permitted sender) client-ip=192.35.17.14; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of christian.storm@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=christian.storm@siemens.com Received: from mail2.siemens.de (mail2.siemens.de [139.25.208.11]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id vADCNhe3009017 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 13 Nov 2017 13:23:43 +0100 Received: from MD1KR9XC.ww002.siemens.net ([139.25.69.251]) by mail2.siemens.de (8.15.2/8.15.2) with ESMTP id vADCNhaP031540; Mon, 13 Nov 2017 13:23:43 +0100 From: Christian Storm To: isar-users@googlegroups.com Cc: Christian Storm Subject: [PATCH] isar-image-base: fix some dangling mounts Date: Mon, 13 Nov 2017 13:22:39 +0100 Message-Id: <20171113122239.19792-1-christian.storm@siemens.com> X-Mailer: git-send-email 2.15.0 X-TUID: eP5hhPqC0Rbe As bitbake/lib/bb/build.py's shell_trap_code() injects `set -e` into scripts, the premature end of scripts leaves dangling mounts around. Fix these dangling mounts by hooking into the EXIT trap handler also setup by shell_trap_code(). Signed-off-by: Christian Storm --- meta-isar/recipes-core/images/isar-image-base.bb | 10 ++++++++-- meta/classes/dpkg-base.bbclass | 10 ++++++++-- meta/classes/ext4-img.bbclass | 10 ++++++++-- meta/recipes-devtools/buildchroot/buildchroot.bb | 10 ++++++++-- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/meta-isar/recipes-core/images/isar-image-base.bb b/meta-isar/recipes-core/images/isar-image-base.bb index 42aaea3..c2150b1 100644 --- a/meta-isar/recipes-core/images/isar-image-base.bb +++ b/meta-isar/recipes-core/images/isar-image-base.bb @@ -52,8 +52,14 @@ do_rootfs() { -e 's|##ISAR_DISTRO_SUITE##|${DEBDISTRONAME}|g' \ "${WORKDIR}/multistrap.conf.in" > "${WORKDIR}/multistrap.conf" - install -d -m 555 ${IMAGE_ROOTFS}/proc + [ ! -d ${IMAGE_ROOTFS}/proc ] && install -d -m 555 ${IMAGE_ROOTFS}/proc sudo mount -t proc none ${IMAGE_ROOTFS}/proc + _do_rootfs_cleanup() { + ret=$? + sudo umount ${IMAGE_ROOTFS}/proc 2>/dev/null || true + (exit $ret) || bb_exit_handler + } + trap '_do_rootfs_cleanup' EXIT # Create root filesystem sudo multistrap -a ${DISTRO_ARCH} -d "${IMAGE_ROOTFS}" -f "${WORKDIR}/multistrap.conf" @@ -62,7 +68,7 @@ do_rootfs() { sudo chroot ${IMAGE_ROOTFS} /${DISTRO_CONFIG_SCRIPT} ${MACHINE_SERIAL} ${BAUDRATE_TTY} \ ${ROOTFS_DEV} sudo rm "${IMAGE_ROOTFS}/${DISTRO_CONFIG_SCRIPT}" - sudo umount ${IMAGE_ROOTFS}/proc + _do_rootfs_cleanup } addtask rootfs before do_build after do_populate diff --git a/meta/classes/dpkg-base.bbclass b/meta/classes/dpkg-base.bbclass index 9ded3ae..35af6d5 100644 --- a/meta/classes/dpkg-base.bbclass +++ b/meta/classes/dpkg-base.bbclass @@ -21,9 +21,15 @@ dpkg_runbuild() { do_build() { mkdir -p ${BUILDROOT} sudo mount --bind ${WORKDIR} ${BUILDROOT} + _do_build_cleanup() { + ret=$? + sudo umount ${BUILDROOT} 2>/dev/null || true + sudo rmdir ${BUILDROOT} 2>/dev/null || true + (exit $ret) || bb_exit_handler + } + trap '_do_build_cleanup' EXIT dpkg_runbuild - sudo umount ${BUILDROOT} - rm -rf ${BUILDROOT} + _do_build_cleanup } # Install package to dedicated deploy directory diff --git a/meta/classes/ext4-img.bbclass b/meta/classes/ext4-img.bbclass index 18a74ca..83cb137 100644 --- a/meta/classes/ext4-img.bbclass +++ b/meta/classes/ext4-img.bbclass @@ -19,9 +19,15 @@ do_ext4_image() { mkdir -p ${WORKDIR}/mnt sudo mount -o loop ${EXT4_IMAGE_FILE} ${WORKDIR}/mnt + _do_ext4_image_cleanup() { + ret=$? + sudo umount ${WORKDIR}/mnt 2>/dev/null || true + sudo rmdir ${WORKDIR}/mnt 2>/dev/null || true + (exit $ret) || bb_exit_handler + } + trap '_do_ext4_image_cleanup' EXIT sudo cp -r ${IMAGE_ROOTFS}/* ${WORKDIR}/mnt - sudo umount ${WORKDIR}/mnt - rm -r ${WORKDIR}/mnt + _do_ext4_image_cleanup } addtask ext4_image before do_build after do_copy_boot_files diff --git a/meta/recipes-devtools/buildchroot/buildchroot.bb b/meta/recipes-devtools/buildchroot/buildchroot.bb index ace64ba..4cae9fc 100644 --- a/meta/recipes-devtools/buildchroot/buildchroot.bb +++ b/meta/recipes-devtools/buildchroot/buildchroot.bb @@ -52,8 +52,14 @@ do_build() { -e 's|##DIR_HOOKS##|./'"$WORKDIR_REL"'/hooks_multistrap|g' \ "${WORKDIR}/multistrap.conf.in" > "${WORKDIR}/multistrap.conf" - install -d -m 555 ${BUILDCHROOT_DIR}/proc + [ ! -d ${BUILDCHROOT_DIR}/proc ] && install -d -m 555 ${BUILDCHROOT_DIR}/proc sudo mount -t proc none ${BUILDCHROOT_DIR}/proc + _do_build_cleanup() { + ret=$? + sudo umount ${BUILDCHROOT_DIR}/proc 2>/dev/null || true + (exit $ret) || bb_exit_handler + } + trap '_do_build_cleanup' EXIT # Create root filesystem sudo multistrap -a ${DISTRO_ARCH} -d "${BUILDCHROOT_DIR}" -f "${WORKDIR}/multistrap.conf" @@ -63,5 +69,5 @@ do_build() { # Configure root filesystem sudo chroot ${BUILDCHROOT_DIR} /configscript.sh - sudo umount ${BUILDCHROOT_DIR}/proc + _do_build_cleanup } -- 2.15.0