Imported 24.04.26 from noble-release pocket.

No reason for CPC update specified.
This commit is contained in:
CloudBuilder 2024-02-06 16:32:58 +00:00
parent 2aeb74e5b8
commit 7256eceb6c
12 changed files with 83 additions and 1165 deletions

44
debian/changelog vendored
View File

@ -1,3 +1,47 @@
livecd-rootfs (24.04.26) noble; urgency=medium
[ Steve Langasek ]
* Share live-build/ubuntu/hooks/020-ubuntu-live.chroot_early across
all flavors using new-style layered squashfs, removing need for
kernel commandline options in debian-cd.
[ dann frazier ]
* Use flock to avoid races with systemd-udevd that cause loop device
partitions to briefly disappear.
-- dann frazier <dann.frazier@canonical.com> Thu, 01 Feb 2024 09:09:17 -0700
livecd-rootfs (24.04.25) noble; urgency=medium
* live-build/auto/config: for ubuntu-server, consider the actual kernel
flavor when dealing with netboot layers - even if we don't really care.
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Tue, 30 Jan 2024 11:27:46 +0100
livecd-rootfs (24.04.24) noble; urgency=medium
[ Tomáš Virtus ]
* live-build/functions: mount_disk_image: add rootpart parameter
[ Utkarsh Gupta ]
* live-build/auto/config: drop python3-systemd from CPC's minimized builds.
-- Utkarsh Gupta <utkarsh@ubuntu.com> Mon, 22 Jan 2024 18:01:53 +0530
livecd-rootfs (24.04.23) noble; urgency=medium
* Remove magic-proxy and all references to it as it is not used by any
builds of any release newer than 18.04.
-- Michael Hudson-Doyle <michael.hudson@ubuntu.com> Mon, 29 Jan 2024 14:53:26 +1300
livecd-rootfs (24.04.22) noble; urgency=medium
* Add a largemem subarch for ubuntu-server that ships a 64k kernel variant
by default (LP: #2050209).
-- Łukasz 'sil2100' Zemczak <lukasz.zemczak@ubuntu.com> Thu, 25 Jan 2024 11:01:28 +0100
livecd-rootfs (24.04.21) noble; urgency=medium
* live-build/functions: avoid losetup -P as it appears to race with udev and

2
debian/install vendored
View File

@ -2,7 +2,5 @@ auto-markable-pkgs usr/share/livecd-rootfs
live-build usr/share/livecd-rootfs
get-ppa-fingerprint usr/share/livecd-rootfs
minimize-manual usr/share/livecd-rootfs
magic-proxy usr/share/livecd-rootfs
lp-in-release usr/share/livecd-rootfs
checkout-translations-branch usr/share/livecd-rootfs
update-source-catalog usr/share/livecd-rootfs

View File

@ -17,72 +17,6 @@ fi
. config/functions
# New nf_tables-based versions of iptables don't work well on old kernels.
# We aren't sure exactly how old is a problem: 4.15 works, but with 4.4 new
# rules are added to all chains in the requested table rather than just one,
# and the new rules seem to have no useful effect. In such cases,
# iptables-legacy works better.
#
# We can simplify this once livecd-rootfs no longer needs to support running
# on Ubuntu 16.04 (that is, once Launchpad's build VMs are upgraded to
# Ubuntu 18.04).
run_iptables () {
local kver kver_major kver_minor
kver="$(uname -r)"
kver="${kver%%-*}"
kver_major="${kver%%.*}"
kver="${kver#*.}"
kver_minor="${kver%%.*}"
# LP: #1917920
# I'm seeing issues after iptables got upgraded from 1.8.5 to
# 1.8.7 Somehow installing our nat rule doesn't get activated, and
# no networking is happening at all.
# But somehow calling both iptables -S makes things start working.
# Maybe no default chains are installed in our network namespace?!
# Or 1.8.7 is somehow broken?
iptables -v -t nat -S
iptables-legacy -v -t nat -S
if [ "$kver_major" -lt 4 ] || \
([ "$kver_major" = 4 ] && [ "$kver_minor" -lt 15 ]); then
iptables-legacy "$@"
else
iptables "$@"
fi
}
if [ -n "$REPO_SNAPSHOT_STAMP" ]; then
if [ "`whoami`" != "root" ]; then
echo "Magic repo snapshots only work when running as root." >&2
exit 1
fi
apt-get -qyy install iptables
# Redirect all outgoing traffic to port 80 to proxy instead.
run_iptables -v -t nat -A OUTPUT -p tcp --dport 80 \
-m owner ! --uid-owner daemon -j REDIRECT --to 8080
# Run proxy as "daemon" to avoid infinite loop.
LB_PARENT_MIRROR_BOOTSTRAP=$LB_PARENT_MIRROR_BOOTSTRAP \
/usr/share/livecd-rootfs/magic-proxy \
--address="127.0.0.1" \
--port=8080 \
--run-as=daemon \
--cutoff-time="$REPO_SNAPSHOT_STAMP" \
--log-file=/build/livecd.magic-proxy.log \
--pid-file=config/magic-proxy.pid \
--background \
--setsid
# Quick check that magic proxy & iptables chains are working
timeout 3m apt-get update
fi
# Link output files somewhere launchpad-buildd will be able to find them.
PREFIX="livecd.$PROJECT${SUBARCH:+-$SUBARCH}"
@ -546,12 +480,6 @@ EOF
if [ -e binary.success ]; then
rm -f binary.success
else
# Dump the magic-proxy log to stdout on failure to aid debugging
if [ -f /build/livecd.magic-proxy.log ] ; then
echo "================= Magic proxy log (start) ================="
cat /build/livecd.magic-proxy.log
echo "================== Magic proxy log (end) =================="
fi
exit 1
fi
@ -712,15 +640,6 @@ case $SUBARCH in
;;
esac
if [ -f "config/magic-proxy.pid" ]; then
kill -TERM $(cat config/magic-proxy.pid)
rm -f config/magic-proxy.pid
# Remove previously-inserted iptables rule.
run_iptables -t nat -D OUTPUT -p tcp --dport 80 \
-m owner ! --uid-owner daemon -j REDIRECT --to 8080
fi
case $PROJECT in
ubuntu-cpc)
config/hooks.d/remove-implicit-artifacts

View File

@ -4,7 +4,7 @@ set -e
case $ARCH:$SUBARCH in
amd64:|amd64:generic|amd64:intel-iot|\
arm64:|arm64:generic|arm64:raspi|arm64:snapdragon|\
arm64:tegra|arm64:tegra-igx|arm64:x13s|\
arm64:tegra|arm64:tegra-igx|arm64:x13s|arm64:largemem|\
armhf:|\
i386:|\
ppc64el:|\
@ -951,6 +951,10 @@ case $PROJECT in
tegra-igx)
variants='tegra-igx'
;;
largemem)
# variants='ga-64k hwe-64k'
variants='ga-64k'
;;
*)
# variants='ga hwe'
variants='ga'
@ -964,6 +968,12 @@ case $PROJECT in
elif [ "$variant" = "hwe" ]; then
kernel_metapkg=linux-generic-hwe-$(lsb_release -sr)
flavor=generic-hwe
elif [ "$variant" = "ga-64k" ]; then
kernel_metapkg=linux-generic-64k
flavor=generic-64k
elif [ "$variant" = "hwe-64k" ]; then
kernel_metapkg=linux-generic-64k-hwe-$(lsb_release -sr)
flavor=generic-64k-hwe
elif [ "$variant" = "intel" ]; then
kernel_metapkg=linux-intel-iotg
flavor=intel-iotg
@ -983,16 +993,16 @@ case $PROJECT in
done
case $ARCH in
amd64)
add_package ubuntu-server-minimal.ubuntu-server.installer.generic.netboot grub-pc shim-signed pxelinux
add_package ubuntu-server-minimal.ubuntu-server.installer.$flavor.netboot grub-pc shim-signed pxelinux
;;
arm64)
add_package ubuntu-server-minimal.ubuntu-server.installer.generic.netboot shim-signed
add_package ubuntu-server-minimal.ubuntu-server.installer.$flavor.netboot shim-signed
;;
*)
add_package ubuntu-server-minimal.ubuntu-server.installer.generic.netboot
add_package ubuntu-server-minimal.ubuntu-server.installer.$flavor.netboot
;;
esac
NO_SQUASHFS_PASSES=ubuntu-server-minimal.ubuntu-server.installer.generic.netboot
NO_SQUASHFS_PASSES=ubuntu-server-minimal.ubuntu-server.installer.$flavor.netboot
/usr/share/livecd-rootfs/checkout-translations-branch \
https://git.launchpad.net/subiquity po config/catalog-translations
@ -1044,15 +1054,8 @@ case $PROJECT in
# or by passing --no-install-recommends to apt-get install.
# Apt config is set using `APT_OPTIONS` variable in this script.
# This fixes LP: #2031640
#
# We're also installing python3-systemd for now because it's needed by
# ubuntu-advantage-tools. This will eventually be dropped in the next
# release of u-a-t. This is being discussed and tracked at
# https://github.com/canonical/ubuntu-pro-client/issues/2692.
# Once python3-systemd is dropped from u-a-t, we can remove it
# from here, too.
APT_OPTIONS="${APT_OPTIONS:+$APT_OPTIONS }--no-install-recommends"
add_package install ubuntu-cloud-minimal python3-systemd
add_package install ubuntu-cloud-minimal
else
add_task install minimal standard cloud-image
add_package install ubuntu-minimal

View File

@ -0,0 +1 @@
../../ubuntu/hooks/020-ubuntu-live.chroot_early

View File

@ -63,36 +63,29 @@ mount_image() {
backing_img="$1"
local rootpart="$2"
# As explained in excruciating detail in LP: #2045586, "losetup
# -P" (a.k.a. --partscan) appears to race with udev in a way that
# prevents the device nodes for the partitions from being
# created. So instead we run losetup without -P, wait for udev to
# settle, then run partprobe and then settle udev again (which is
# probably unnecessary but at this point a bit more superstition
# can't hurt)
loop_device=$(losetup --show -f -v ${backing_img})
loop_device=$(losetup --show -f -P -v ${backing_img})
if [ ! -b ${loop_device} ]; then
echo "unable to find loop device for ${backing_img}"
exit 1
fi
udevadm settle
partprobe ${loop_device}
udevadm settle
# As explained in excruciating detail in LP: #2045586, losetup
# races with udev in a way that can cause partition device files
# to briefly vanish. systemd docs say we can hold udev off by using
# flocks: https://systemd.io/BLOCK_DEVICE_LOCKING/
# `udevadm lock` isn't yet usable in Ubuntu, so we'll use flock for now
# Find the rootfs location
rootfs_dev_mapper="${loop_device}p${rootpart}"
if [ ! -b "${rootfs_dev_mapper}" ]; then
if flock -x ${loop_device} [ ! -b "${rootfs_dev_mapper}" ]; then
echo "${rootfs_dev_mapper} is not a block device";
ls -l ${loop_device}p*
exit 1
fi
# Add some information to the debug logs
echo "Mounted disk image ${backing_img} to ${rootfs_dev_mapper}"
blkid ${rootfs_dev_mapper} \
flock -x ${loop_device} blkid ${rootfs_dev_mapper} \
|| echo "blkid failed; continuing"
return 0
@ -220,14 +213,19 @@ get_lowerdirs_for_pass () {
mount_disk_image() {
local disk_image=${1}
local mountpoint=${2}
mount_image ${disk_image} 1
local rootpart=${3:-1}
mount_image ${disk_image} "${rootpart}"
mount_partition "${rootfs_dev_mapper}" $mountpoint
local boot_dev="${loop_device}p16"
if [ -b ${boot_dev} -a -e $mountpoint/boot ]; then
mount "${boot_dev}" $mountpoint/boot
if flock -x ${loop_device} \
[ -b ${boot_dev} -a -e $mountpoint/boot ]; then
flock -x ${loop_device} mount "${boot_dev}" $mountpoint/boot
fi
# Having one partition mounted should avoid udev-triggered partition
# rescans on that device, so we no longer need to flock.
local uefi_dev="${loop_device}p15"
if [ -b ${uefi_dev} -a -e $mountpoint/boot/efi ]; then
mount "${uefi_dev}" $mountpoint/boot/efi

View File

@ -0,0 +1 @@
../../ubuntu/hooks/020-ubuntu-live.chroot_early

View File

@ -237,14 +237,10 @@ class MakeHooks:
"""
with open(os.path.join(self._script_dir, "explicit_provides"), "w",
encoding="utf-8") as fp:
empty = True
for provides in self._provides:
if not self._quiet:
print("[PROVIDES] %s" % provides)
fp.write("%s\n" % provides)
empty = False
if not empty:
fp.write('livecd.magic-proxy.log\n')
def cli(self, args):
"""Command line interface to the hooks generator."""

View File

@ -11,6 +11,10 @@ case $PASS in
kernel_metapkg=linux-generic
elif [ "$flavor" = "generic-hwe" ]; then
kernel_metapkg=linux-generic-hwe-$(lsb_release -sr)
elif [ "$flavor" = "generic-64k" ]; then
kernel_metapkg=linux-generic-64k
elif [ "$flavor" = "generic-64k-hwe" ]; then
kernel_metapkg=linux-generic-64k-hwe-$(lsb_release -sr)
elif [ "$flavor" = "intel-iotg" ]; then
kernel_metapkg=linux-intel-iotg
elif [ "$flavor" = "nvidia-tegra" ]; then

View File

@ -0,0 +1 @@
../../ubuntu/hooks/020-ubuntu-live.chroot_early

View File

@ -1 +0,0 @@
magic-proxy

File diff suppressed because it is too large Load Diff