diff --git a/debian/changelog b/debian/changelog index 1fea6e08..b265312c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,28 @@ -livecd-rootfs (2.490) UNRELEASED; urgency=medium +livecd-rootfs (2.493) UNRELEASED; urgency=medium * Run subiquity on any serial consoles that the user told systemd about. - -- Michael Hudson-Doyle Wed, 17 Jan 2018 10:53:33 +1300 + -- Michael Hudson-Doyle Wed, 31 Jan 2018 21:58:33 +1300 + +livecd-rootfs (2.492) bionic; urgency=medium + + * Oops. I shouldn't reference my private stuff. + + -- Iain Lane Tue, 30 Jan 2018 11:51:19 +0000 + +livecd-rootfs (2.491) bionic; urgency=medium + + * Support seeding of snaps, as emitted by germinate >= 2.27. + + -- Iain Lane Tue, 30 Jan 2018 11:20:28 +0000 + +livecd-rootfs (2.490) bionic; urgency=medium + + * ubuntu-cpc: Initramfs compression should match default for + update-initramfs (LP: #1744114) + + -- Robert C Jennings Mon, 29 Jan 2018 12:15:17 -0500 livecd-rootfs (2.489) bionic; urgency=medium diff --git a/live-build/auto/build b/live-build/auto/build index 6d4fbfba..41c887cd 100755 --- a/live-build/auto/build +++ b/live-build/auto/build @@ -43,7 +43,7 @@ preinstall_snaps() { chroot chroot sh -c " set -x; cd /var/lib/snapd/seed; - SNAPPY_STORE_NO_CDN=1 snap download \"$snap\"" + SNAPPY_STORE_NO_CDN=1 snap download \"${snap%/*}\"" done lb chroot_resolv remove @@ -56,12 +56,14 @@ snaps: file: ${CORE_SNAP} EOF for snap in "$@"; do + snap_name=${snap%/*} cat <> chroot/var/lib/snapd/seed/seed.yaml - - name: $snap + - name: ${snap_name} channel: stable EOF + case ${snap} in */classic) echo " classic: true" >> chroot/var/lib/snapd/seed/seed.yaml;; esac echo -n " file: " >> chroot/var/lib/snapd/seed/seed.yaml - (cd chroot/var/lib/snapd/seed; ls -1 ${snap}_*.snap) \ + (cd chroot/var/lib/snapd/seed; ls -1 ${snap_name}_*.snap) \ >> chroot/var/lib/snapd/seed/seed.yaml done @@ -368,40 +370,33 @@ deb file:/var/lib/preinstalled-pool/ $LB_DISTRIBUTION $LB_PARENT_ARCHIVE_AREAS rm chroot/etc/apt/sources.list.preinstall chroot/etc/apt/sources.list.orig fi case $PROJECT:$SUBPROJECT in - ubuntu-server:live|ubuntu-mate:*) - assertions_dir="chroot/var/lib/snapd/seed/assertions" - model_assertion="$assertions_dir/generic-classic.model" - account_key_assertion="$assertions_dir/generic.account-key" - account_assertion="$assertions_dir/generic.account" - - mkdir -p "$assertions_dir" - snap known --remote model series=16 \ - model=generic-classic brand-id=generic \ - > "$model_assertion" - account_key=$(sed -n -e's/sign-key-sha3-384: //p' \ - < "$model_assertion") - - snap known --remote account-key \ - public-key-sha3-384="$account_key" \ - > "$account_key_assertion" - account=$(sed -n -e's/account-id: //p' \ - < "$account_key_assertion") - - snap known --remote account account-id=generic \ - > "$account_assertion" - ;; - esac - - # FIXME: this should not be a hard-coded list in this script; this - # is an interim solution for 17.10. - case $PROJECT:$SUBPROJECT in - ubuntu-mate:*) - SNAP_LIST=pulsemixer + *) + if [ -e "config/seeded-snaps" ]; then + assertions_dir="chroot/var/lib/snapd/seed/assertions" + model_assertion="$assertions_dir/generic-classic.model" + account_key_assertion="$assertions_dir/generic.account-key" + account_assertion="$assertions_dir/generic.account" + + mkdir -p "$assertions_dir" + snap known --remote model series=16 \ + model=generic-classic brand-id=generic \ + > "$model_assertion" + account_key=$(sed -n -e's/sign-key-sha3-384: //p' \ + < "$model_assertion") + + snap known --remote account-key \ + public-key-sha3-384="$account_key" \ + > "$account_key_assertion" + account=$(sed -n -e's/account-id: //p' \ + < "$account_key_assertion") + + snap known --remote account account-id=generic \ + > "$account_assertion" + snap_list=$(cat config/seeded-snaps) + preinstall_snaps $snap_list + fi ;; esac - if [ -n "$SNAP_LIST" ]; then - preinstall_snaps $SNAP_LIST - fi if [ "$PROJECT" = "ubuntu-touch" ] || [ "$PROJECT" = "ubuntu-touch-custom" ]; then if [ "$ARCH" = "armhf" ]; then diff --git a/live-build/auto/config b/live-build/auto/config index 9abaaa65..bbe61a26 100755 --- a/live-build/auto/config +++ b/live-build/auto/config @@ -254,6 +254,68 @@ if [ "${SUBPROJECT:-}" = minimized ]; then OPTS="${OPTS:+$OPTS }--bootstrap-flavour=minimal --linux-packages=linux-image" fi +# cribbed from cdimage, perhaps this should be a small helper script in germinate? +add_inheritance () { + case " $inherit " in + *" $1 "*) + ;; + *) + inherit="${inherit:+$inherit }$1" + ;; + esac +} + +expand_inheritance () { + for seed in $(grep "^$1:" config/germinate-output/structure | cut -d: -f2); do + expand_inheritance "$seed" + done + add_inheritance "$1" +} + +inheritance () { + inherit= + expand_inheritance "$1" + echo "$inherit" +} + +mkdir -p config/germinate-output +case $PROJECT in + kubuntu-active*) + SEED=kubuntu-active.$SUITE + ;; + kubuntu*) + SEED=kubuntu.$SUITE + ;; + xubuntu*) + SEED=xubuntu.$SUITE + ;; + ubuntu-mate*) + SEED=ubuntu-mate.$SUITE + ;; + lubuntu*) + SEED=lubuntu.$SUITE + ;; + ubuntu-budgie*) + SEED=ubuntu-budgie.$SUITE + ;; + ubuntukylin*) + SEED=ubuntukylin.$SUITE + ;; + ubuntustudio*) + SEED=ubuntustudio.$SUITE + ;; + *) + SEED=ubuntu.$SUITE + ;; +esac + +if ! [ -e config/germinate-output/structure ]; then + echo "Running germinate..." + (cd config/germinate-output && germinate --no-rdepends --no-installer \ + -S $SEEDMIRROR -m $MIRROR -d $SUITE -s $SEED \ + ${COMPONENTS:+-c "$COMPONENTS"} -a $ARCH) +fi + case $PROJECT in ubuntu|ubuntu-dvd) add_task install minimal standard ubuntu-desktop @@ -487,7 +549,8 @@ case $PROJECT in add_package install shim-signed ;; esac - OPTS="${OPTS:+$OPTS }--linux-packages=none --initramfs=none --initramfs-compression=none" + OPTS="${OPTS:+$OPTS }--linux-packages=none --initramfs=none" + INITRAMFS_COMPRESSION="none" # contains the framework definition add_package install ubuntu-core-libs @@ -583,6 +646,7 @@ case $PROJECT in OPTS="${OPTS:+$OPTS }--hdd-label=cloudimg-rootfs" OPTS="${OPTS:+$OPTS }--ext-resize-blocks=536870912 --ext-block-size=4096" OPTS="${OPTS:+$OPTS }--ext-fudge-factor=15" + INITRAMFS_COMPRESSION="gzip" ;; *) @@ -591,6 +655,32 @@ case $PROJECT in ;; esac +# we'll expand the base seed given here according to the STRUCTURE file, and +# then look in all of the seeds found to see which snaps are seeded +case $PROJECT in + ubuntu|kubuntu*|lubuntu*|xubuntu*|ubuntu-mate*|ubuntustudio*|ubuntukylin*|ubuntu-budgie*) + BASE_SEED='desktop' + ;; +esac + +if [ -n "${BASE_SEED}" ]; then + SEEDS_EXPANDED=$(inheritance ${BASE_SEED}) + for seed in ${SEEDS_EXPANDED}; do + echo "snap: considering ${seed}" + file=config/germinate-output/${seed}.snaps + [ -e "${file}" ] || continue + # extract the first column (snap package name) from germinate's output + # translate the human-readable "foo (classic)" into a + # more machine readable "foo/classic" + seed_snaps=$(sed -rn '1,/-----/d;/-----/,$d; s/(.*) \|.*/\1/; s, \(classic\),/classic,; p' "${file}") + for snap in ${seed_snaps}; do + echo "snap: found ${snap}" + ALL_SNAPS="${ALL_SNAPS:+${ALL_SNAPS} }${snap}" + done + done + echo "${ALL_SNAPS}" > config/seeded-snaps +fi + export APT_OPTIONS if [ "$PREINSTALLED" != "true" ] && [ "$LIVE_TASK" ]; then @@ -696,7 +786,7 @@ lb config noauto \ ${KERNEL_FLAVOURS:+--linux-flavours "$KERNEL_FLAVOURS"} \ --initsystem none \ --bootloader "$BOOTLOADER" \ - --initramfs-compression lzma \ + --initramfs-compression "${INITRAMFS_COMPRESSION:-lzma}" \ --cache false \ ${BOOTAPPEND_LIVE:+--bootappend-live "$BOOTAPPEND_LIVE"} \ $OPTS \ @@ -924,51 +1014,8 @@ case ${SUBPROJECT:-} in ;; esac -# cribbed from cdimage, perhaps this should be a small helper script in germinate? -add_inheritance () { - case " $inherit " in - *" $1 "*) - ;; - *) - inherit="${inherit:+$inherit }$1" - ;; - esac -} - -expand_inheritance () { - for seed in $(grep "^$1:" config/germinate-output/structure | cut -d: -f2); do - expand_inheritance "$seed" - done - add_inheritance "$1" -} - -inheritance () { - inherit= - expand_inheritance "$1" - echo "$inherit" -} - if [ "$PREINSTALLED" = "true" ]; then if [ -n "$PREINSTALL_POOL_SEEDS" ]; then - mkdir -p config/germinate-output - case $PROJECT in - kubuntu-active*) - SEED=kubuntu-active.$SUITE - ;; - kubuntu*) - SEED=kubuntu.$SUITE - ;; - xubuntu*) - SEED=xubuntu.$SUITE - ;; - *) - SEED=ubuntu.$SUITE - ;; - esac - (cd config/germinate-output && germinate --no-rdepends --no-installer \ - -S $SEEDMIRROR -m $MIRROR -d $SUITE -s $SEED \ - ${COMPONENTS:+-c "$COMPONENTS"} -a $ARCH) - UNWANTED_SEEDS="${LIVE_TASK:+$LIVE_TASK }boot installer required" for i in $UNWANTED_SEEDS; do UNWANTED_SEEDS="${UNWANTED_SEEDS:+$UNWANTED_SEEDS }$(inheritance $i)"