Package: live-build Version: 5.0~a2-1 Tags: patch Patch attached to disable the early exit in chroot_archives removal when chroot and binary mirrors are identical, which incorrectly prevents some of the removal code being executed.
I've had this sitting around in my WIP 'restructuring' branch for a while, and a mailing list discussion just prompted me to extract and submit it. As noted in the fixme comment it introduces, the implementation of the patch is just a quick fix and there are additional issues to be addressed in this script, which I intend to resolve as part of the restructuring work.
commit cfb644e22512dc693e682d52532d57e4d3064edc Author: jnqnfe <jnq...@gmail.com> Date: Sat Nov 29 02:22:25 2014 +0000 Temporarily disable early exit in 'chroot_archives remove'. diff --git a/scripts/build/chroot_archives b/scripts/build/chroot_archives index 4c51cd7..8c2e192 100755 --- a/scripts/build/chroot_archives +++ b/scripts/build/chroot_archives @@ -551,17 +551,30 @@ then Chroot_unbind_path chroot "$(echo ${LB_PARENT_MIRROR_CHROOT} | sed -e 's|file:||')" fi - # Configure generic indices - # Don't do anything if it's not required - if [ "${LB_PARENT_MIRROR_CHROOT}" = "${LB_PARENT_MIRROR_BINARY}" ] && \ - [ "${LB_PARENT_MIRROR_CHROOT_SECURITY}" = "${LB_PARENT_MIRROR_BINARY_SECURITY}" ] && \ - [ ! -d chroot/root/packages ] - then - # Removing stage file - rm -f .build/chroot_archives - - exit 0 - fi +# FIXME: +# Temporarily disabling this early-exit code that was put here for efficiency, +# but which causes a lot of code to be skipped that really shouldn't be skipped. +# To elaborate, the regeneration of the archive source file isn't needed if the +# mirrors are the same, however blocking the rest causes the following issues: +# - Small bits of code towards the end, such as that needed to honor the +# --apt-indices parameter when set to false, are not executed. +# - This script is executed multiple times throughout the process, and should +# toggle the apt config cleanly between chroot and binary modes. It does not +# do this perfectly though. Part of the problem is this early exit, however +# the issue also extends into the install (chroot config) code above not +# removing the remove (binary) config components correctly, and neither +# removing the keys each other installs. + # # Configure generic indices + # # Don't do anything if it's not required + # if [ "${LB_PARENT_MIRROR_CHROOT}" = "${LB_PARENT_MIRROR_BINARY}" ] && \ + # [ "${LB_PARENT_MIRROR_CHROOT_SECURITY}" = "${LB_PARENT_MIRROR_BINARY_SECURITY}" ] && \ + # [ ! -d chroot/root/packages ] + # then + # # Removing stage file + # rm -f .build/chroot_archives + + # exit 0 + # fi # Cleaning apt list cache rm -rf chroot/var/lib/apt/lists