diff --git a/debian/changelog b/debian/changelog index 75439c9c..c34e6ef8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +livecd-rootfs (2.635) UNRELEASED; urgency=medium + + * Preserve apt preferences created by any package we install (i.e. + ubuntu-advantage-tools) against live-build's attempt to delete them. + (LP: #1855354) + + -- Michael Hudson-Doyle Thu, 12 Dec 2019 12:55:17 +1300 + livecd-rootfs (2.634) focal; urgency=medium * Only build bootable buildd images for amd64. diff --git a/live-build/auto/build b/live-build/auto/build index 43a706be..c12ba331 100755 --- a/live-build/auto/build +++ b/live-build/auto/build @@ -314,6 +314,12 @@ EOF undivert_grub chroot fi + if [ -d chroot/etc/apt/preferences.d.save ]; then + # https://twitter.com/infinite_scream + mv chroot/etc/apt/preferences.d.save/* chroot/etc/apt/preferences.d/ + rmdir chroot/etc/apt/preferences.d.save + fi + # Let all configuration non multi-layered project here. # If those are moving to a multi-layer layout, this needs to be # done in chroot hooks. diff --git a/live-build/auto/config b/live-build/auto/config index 6ed05a42..0b50f0ff 100755 --- a/live-build/auto/config +++ b/live-build/auto/config @@ -1096,6 +1096,19 @@ rm -f /etc/fstab EOF fi +if [ $PROJECT != ubuntu-cpc ]; then + cat > config/hooks/100-preserve-apt-prefs.chroot <<\EOF +#! /bin/sh -ex + +# live-build "helpfully" removes /etc/apt/preferences.d/* so we put a +# copy somewhere it won't touch it. + +if [ -n "$(ls -A /etc/apt/preferences.d)" ]; then + cp -a /etc/apt/preferences.d /etc/apt/preferences.d.save +fi +EOF +fi + if [ $PROJECT = ubuntukylin ]; then cat > config/hooks/100-ubuntukylin.chroot <