diff --git a/debian/changelog b/debian/changelog index 72b7efce..a57e5280 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,16 @@ livecd-rootfs (2.700) UNRELEASED; urgency=medium + [ David Krauser ] * buildd: produce kernel and initrd as separate artifacts * buildd: call update-initramfs for all installed kernels We only have one kernel installed, so we don't need to specify an explicit version. + [ Patrick Viafore ] + * Replace archive.ubuntu.com and security.ubuntu.com with launchpad + mirrors. This is only done inside a build context, and the original + sources.list file is restored at the end of the build + -- David Krauser Tue, 20 Oct 2020 15:00:38 -0400 livecd-rootfs (2.699) hirsute; urgency=medium diff --git a/live-build/functions b/live-build/functions index 7197a152..aba59859 100644 --- a/live-build/functions +++ b/live-build/functions @@ -87,6 +87,42 @@ mount_image() { return 0 } +use_lp_archives_in_sourceslist(){ + # Use the build environment apt mirror during the build, + # for both archive and security. + # live-build does this in the chroot (lb_chroot_archives) + # but not for the binary hooks + # + # To restore the sourceslist back to the original, call + # recover_sourceslist + + mountpoint="${1}" + MOUNTPOINT_BACKUP_SOURCES_LIST="sources.list.tmp" + . config/bootstrap # For the LB_MIRROR_* variables + cp -a "${mountpoint}/etc/apt/sources.list" "${MOUNTPOINT_BACKUP_SOURCES_LIST}" + sed -i "s#http://archive.ubuntu.com/ubuntu#${LB_PARENT_MIRROR_CHROOT}#g" \ + "${mountpoint}/etc/apt/sources.list" + sed -i "s#http://security.ubuntu.com/ubuntu#${LB_PARENT_MIRROR_CHROOT}#g" \ + "${mountpoint}/etc/apt/sources.list" + + sha256sum "${mountpoint}/etc/apt/sources.list" > sources.list.sha +} + +recover_sourceslist(){ + # Remove the build environment apt mirror from the image + + # Check that the sources.list has not changed. If it has changed then the + # binary hook has modified the file that will be discarded. If the build + # fails here the binary hook needs to alter sources.list.tmp and regenerate + # sources.list.sha + + mountpoint="${1}" + sha256sum --check sources.list.sha + + mv "${MOUNTPOINT_BACKUP_SOURCES_LIST}" "${mountpoint}/etc/apt/sources.list" + unset MOUNTPOINT_BACKUP_SOURCES_LIST +} + setup_mountpoint() { local mountpoint="$1" @@ -109,6 +145,7 @@ setup_mountpoint() { cp /etc/resolv.conf "$mountpoint/etc/resolv.conf" mv "$mountpoint/etc/nsswitch.conf" nsswitch.conf.tmp sed 's/systemd//g' nsswitch.conf.tmp > "$mountpoint/etc/nsswitch.conf" + use_lp_archives_in_sourceslist "${mountpoint}" chroot "$mountpoint" apt-get update } @@ -125,6 +162,7 @@ teardown_mountpoint() { mount --make-private $submount umount $submount done + recover_sourceslist "${mountpoint}" mv resolv.conf.tmp "$mountpoint/etc/resolv.conf" mv nsswitch.conf.tmp "$mountpoint/etc/nsswitch.conf" }