mirror of
https://git.launchpad.net/livecd-rootfs
synced 2025-05-20 15:21:35 +00:00
Imported 2.577
No reason for CPC update specified.
This commit is contained in:
parent
92d9485e1f
commit
def06d26f7
23
debian/changelog
vendored
23
debian/changelog
vendored
@ -1,3 +1,26 @@
|
|||||||
|
livecd-rootfs (2.577) disco; urgency=medium
|
||||||
|
|
||||||
|
[ Tobias Koch ]
|
||||||
|
* Detect which core snaps are required and install them on-the-fly.
|
||||||
|
* If image has core18 snaps only, automatically preseed snapd.
|
||||||
|
|
||||||
|
[ Michael Hudson-Doyle ]
|
||||||
|
* Slim down ubuntu-cpc:minimized builds:
|
||||||
|
- Do not include any snaps in ubuntu-cpc:minimized builds (erroring if any
|
||||||
|
snap other than lxd is seeded).
|
||||||
|
- Install the lxd-installer package instead, which installs the lxd snap
|
||||||
|
when invoked.
|
||||||
|
- Install lxd snap in unminimize.
|
||||||
|
|
||||||
|
[ Balint Reczey ]
|
||||||
|
* Pass --sort=name to tar to make tarballs more reproducible and
|
||||||
|
rsync-friendly
|
||||||
|
|
||||||
|
[ Steve Langasek ]
|
||||||
|
* Adjust sed command for clarity.
|
||||||
|
|
||||||
|
-- Steve Langasek <steve.langasek@ubuntu.com> Fri, 12 Apr 2019 13:34:56 -0700
|
||||||
|
|
||||||
livecd-rootfs (2.576) disco; urgency=medium
|
livecd-rootfs (2.576) disco; urgency=medium
|
||||||
|
|
||||||
* When the "snap-tool" script encounters a core snap it will switch to
|
* When the "snap-tool" script encounters a core snap it will switch to
|
||||||
|
@ -226,7 +226,17 @@ if dpkg-query --show --showformat='${db:Status-Status}\n' ubuntu-server 2> /dev/
|
|||||||
fi
|
fi
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
cat >> chroot/usr/local/sbin/unminimize <<'EOF'
|
if [ "$PROJECT" = "ubuntu-cpc" ]; then
|
||||||
|
cat >> chroot/usr/local/sbin/unminimize <<'EOF'
|
||||||
|
|
||||||
|
echo "Removing lxd installer package..."
|
||||||
|
apt-get purge -y lxd-installer
|
||||||
|
|
||||||
|
echo "Installing lxd from snap..."
|
||||||
|
snap install lxd
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
cat >> chroot/usr/local/sbin/unminimize <<'EOF'
|
||||||
|
|
||||||
# unminimization succeeded, there is no need to mention it in motd
|
# unminimization succeeded, there is no need to mention it in motd
|
||||||
rm -f /etc/update-motd.d/60-unminimize
|
rm -f /etc/update-motd.d/60-unminimize
|
||||||
@ -475,7 +485,7 @@ for ISO in binary.iso binary.hybrid.iso; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [ -e "binary/$INITFS/filesystem.dir" ]; then
|
if [ -e "binary/$INITFS/filesystem.dir" ]; then
|
||||||
(cd "binary/$INITFS/filesystem.dir/" && tar -c --xattrs *) | \
|
(cd "binary/$INITFS/filesystem.dir/" && tar -c --sort=name --xattrs *) | \
|
||||||
gzip -9 --rsyncable > "$PREFIX.rootfs.tar.gz"
|
gzip -9 --rsyncable > "$PREFIX.rootfs.tar.gz"
|
||||||
chmod 644 "$PREFIX.rootfs.tar.gz"
|
chmod 644 "$PREFIX.rootfs.tar.gz"
|
||||||
elif [ -e binary-tar.tar.gz ]; then
|
elif [ -e binary-tar.tar.gz ]; then
|
||||||
@ -512,7 +522,7 @@ EOF
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$PROJECT" = "ubuntu-touch" ] || [ "$PROJECT" = "ubuntu-touch-custom" ]; then
|
if [ "$PROJECT" = "ubuntu-touch" ] || [ "$PROJECT" = "ubuntu-touch-custom" ]; then
|
||||||
(cd "binary/$INITFS/custom.dir/" && tar -c --xattrs *) | \
|
(cd "binary/$INITFS/custom.dir/" && tar -c --sort=name --xattrs *) | \
|
||||||
gzip -9 --rsyncable > "$PREFIX.custom.tar.gz"
|
gzip -9 --rsyncable > "$PREFIX.custom.tar.gz"
|
||||||
chmod 644 "$PREFIX.custom.tar.gz"
|
chmod 644 "$PREFIX.custom.tar.gz"
|
||||||
fi
|
fi
|
||||||
@ -649,7 +659,7 @@ case $PROJECT:${SUBPROJECT:-} in
|
|||||||
raspi2)
|
raspi2)
|
||||||
# ubuntu-device-flash does not like subdirs here, we need to tar it up
|
# ubuntu-device-flash does not like subdirs here, we need to tar it up
|
||||||
if [ -e $TMPDIR/assets/dtbs/overlays ]; then
|
if [ -e $TMPDIR/assets/dtbs/overlays ]; then
|
||||||
tar -C $TMPDIR/assets/dtbs -f $TMPDIR/assets/dtbs/overlays.tgz -czv overlays
|
tar --sort=name -C $TMPDIR/assets/dtbs -f $TMPDIR/assets/dtbs/overlays.tgz -czv overlays
|
||||||
rm -rf $TMPDIR/assets/dtbs/overlays
|
rm -rf $TMPDIR/assets/dtbs/overlays
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
@ -698,7 +708,7 @@ EOF
|
|||||||
manifestname="$devarch.$manifestname"
|
manifestname="$devarch.$manifestname"
|
||||||
fi
|
fi
|
||||||
# create tarfile
|
# create tarfile
|
||||||
tar -c -z -f $HERE/$PREFIX.$tarname system assets hardware.yaml
|
tar -c --sort=name -z -f $HERE/$PREFIX.$tarname system assets hardware.yaml
|
||||||
|
|
||||||
# create device specific manifest to track kernel dpkg version
|
# create device specific manifest to track kernel dpkg version
|
||||||
cp assets/dpkg.list $HERE/$PREFIX.$manifestname
|
cp assets/dpkg.list $HERE/$PREFIX.$manifestname
|
||||||
|
@ -807,7 +807,7 @@ case $PROJECT in
|
|||||||
ubuntu-cpc)
|
ubuntu-cpc)
|
||||||
if [ "${SUBPROJECT:-}" = minimized ]; then
|
if [ "${SUBPROJECT:-}" = minimized ]; then
|
||||||
add_task install cloud-image
|
add_task install cloud-image
|
||||||
add_package install sudo
|
add_package install sudo lxd-installer
|
||||||
# linux-kvm currently only exists for amd64, so fall back to the
|
# linux-kvm currently only exists for amd64, so fall back to the
|
||||||
# virtual flavour for other architectures
|
# virtual flavour for other architectures
|
||||||
if [ "$ARCH" = "amd64" ]; then
|
if [ "$ARCH" = "amd64" ]; then
|
||||||
@ -896,6 +896,25 @@ esac
|
|||||||
if [ "$PASSES_TO_LAYERS" != "true" ] && [ -n "${BASE_SEED}" ]; then
|
if [ "$PASSES_TO_LAYERS" != "true" ] && [ -n "${BASE_SEED}" ]; then
|
||||||
snap_from_seed "${BASE_SEED}" config/seeded-snaps
|
snap_from_seed "${BASE_SEED}" config/seeded-snaps
|
||||||
fi
|
fi
|
||||||
|
if [ "$PROJECT:${SUBPROJECT:-}" = ubuntu-cpc:minimized ]; then
|
||||||
|
# We install a lxc script that installs the snap when invoked. We don't
|
||||||
|
# want any other snaps to come in without due consideration, so fail the
|
||||||
|
# build if we see such a snap.
|
||||||
|
for snap in `cat config/seeded-snaps`; do
|
||||||
|
case $snap in
|
||||||
|
lxd)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unexpected seeded snap for ubuntu-cpc:minimized build: $snap"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Truncate but don't delete to a) prevent any snaps from being seeded,
|
||||||
|
# while at the same time b) triggering initialization of assertions.
|
||||||
|
truncate --size 0 config/seeded-snaps
|
||||||
|
fi
|
||||||
|
|
||||||
# grab a list of packags to remove for a "minimal" installation from the seed
|
# grab a list of packags to remove for a "minimal" installation from the seed
|
||||||
# mirror for this project
|
# mirror for this project
|
||||||
|
@ -416,6 +416,47 @@ inheritance () {
|
|||||||
echo "$inherit"
|
echo "$inherit"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_snap_post_process() {
|
||||||
|
# Look for the 'core' snap. If it is not present, assume that the image
|
||||||
|
# contains only snaps with bases >= core18. In that case snapd is
|
||||||
|
# preseeded. However, when 'core' is being installed and snapd has not
|
||||||
|
# been installed by a call to 'snap_preseed' (see below) then it is
|
||||||
|
# removed again.
|
||||||
|
local CHROOT_ROOT=$1
|
||||||
|
local SNAP_NAME=$2
|
||||||
|
|
||||||
|
local seed_dir="$CHROOT_ROOT/var/lib/snapd/seed"
|
||||||
|
local snaps_dir="$seed_dir/snaps"
|
||||||
|
local seed_yaml="$seed_dir/seed.yaml"
|
||||||
|
local assertions_dir="$seed_dir/assertions"
|
||||||
|
local snapd_install_stamp="$seed_dir/.snapd-explicit-install-stamp"
|
||||||
|
|
||||||
|
case $SNAP_NAME in
|
||||||
|
core[0-9]*)
|
||||||
|
# If the 'core' snap is not present, assume we are coreXX-only and
|
||||||
|
# install the snapd snap.
|
||||||
|
if [ ! -f ${snaps_dir}/core_[0-9]*.snap ]; then
|
||||||
|
_snap_preseed $CHROOT_ROOT snapd stable
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
core)
|
||||||
|
# If the snapd snap has been seeded, but not marked as explicitly
|
||||||
|
# installed (see snap_preseed below), then remove it.
|
||||||
|
if [ -f ${snaps_dir}/snapd_[0-9]*.snap ] && \
|
||||||
|
[ ! -f "$snapd_install_stamp" ]
|
||||||
|
then
|
||||||
|
# Remove snap, assertions and entry in seed.yaml
|
||||||
|
rm -f ${snaps_dir}/snapd_[0-9]*.snap
|
||||||
|
rm -f ${assertions_dir}/snapd_[0-9]*.assert
|
||||||
|
sed -i -e'/name: snapd/,+2d' $seed_yaml
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# ignore
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
_snap_preseed() {
|
_snap_preseed() {
|
||||||
# Download the snap/assertion and add to the preseed
|
# Download the snap/assertion and add to the preseed
|
||||||
local CHROOT_ROOT=$1
|
local CHROOT_ROOT=$1
|
||||||
@ -436,6 +477,26 @@ _snap_preseed() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
case $SNAP_NAME in
|
||||||
|
snapd)
|
||||||
|
# snapd is self-contained, ignore base
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Determine if and what core snap is needed
|
||||||
|
local core_snap=$(/usr/share/livecd-rootfs/snap-tool info \
|
||||||
|
--cohort-key="${COHORT_KEY:-}" \
|
||||||
|
--channel="$CHANNEL" "$SNAP_NAME" | \
|
||||||
|
grep '^base:' | awk '{print $2}'
|
||||||
|
)
|
||||||
|
|
||||||
|
# If $core_snap is not the empty string then SNAP itself is not a core
|
||||||
|
# snap and we must additionally seed the core snap.
|
||||||
|
if [ -n "$core_snap" ]; then
|
||||||
|
_snap_preseed $CHROOT_ROOT $core_snap stable
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
sh -c "
|
sh -c "
|
||||||
set -x;
|
set -x;
|
||||||
cd \"$CHROOT_ROOT/var/lib/snapd/seed\";
|
cd \"$CHROOT_ROOT/var/lib/snapd/seed\";
|
||||||
@ -466,6 +527,12 @@ EOF
|
|||||||
|
|
||||||
echo -n " file: " >> $seed_yaml
|
echo -n " file: " >> $seed_yaml
|
||||||
(cd $snaps_dir; ls -1 ${SNAP_NAME}_*.snap) >> $seed_yaml
|
(cd $snaps_dir; ls -1 ${SNAP_NAME}_*.snap) >> $seed_yaml
|
||||||
|
|
||||||
|
# If $core_snap is the empty string then SNAP itself *may be* a core snap,
|
||||||
|
# and we run some post-processing logic.
|
||||||
|
if [ -z "$core_snap" ]; then
|
||||||
|
_snap_post_process $CHROOT_ROOT $SNAP_NAME
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
snap_prepare_assertions() {
|
snap_prepare_assertions() {
|
||||||
@ -544,15 +611,13 @@ snap_prepare() {
|
|||||||
local CUSTOM_BRAND_MODEL=${2:-generic:generic-classic}
|
local CUSTOM_BRAND_MODEL=${2:-generic:generic-classic}
|
||||||
|
|
||||||
snap_prepare_assertions "$CHROOT_ROOT" "$CUSTOM_BRAND_MODEL"
|
snap_prepare_assertions "$CHROOT_ROOT" "$CUSTOM_BRAND_MODEL"
|
||||||
|
|
||||||
# Download the core snap
|
|
||||||
_snap_preseed $CHROOT_ROOT core stable
|
|
||||||
}
|
}
|
||||||
|
|
||||||
snap_preseed() {
|
snap_preseed() {
|
||||||
# Preseed a snap in the image (snap_prepare must be called once prior)
|
# Preseed a snap in the image (snap_prepare must be called once prior)
|
||||||
local CHROOT_ROOT=$1
|
local CHROOT_ROOT=$1
|
||||||
local SNAP=$2
|
local SNAP=$2
|
||||||
|
local SNAP_NAME=${SNAP%/*}
|
||||||
# Per Ubuntu policy, all seeded snaps (with the exception of the core
|
# Per Ubuntu policy, all seeded snaps (with the exception of the core
|
||||||
# snap) must pull from stable/ubuntu-$(release_ver) as their channel.
|
# snap) must pull from stable/ubuntu-$(release_ver) as their channel.
|
||||||
local CHANNEL=${3:-"stable/ubuntu-$(release_ver)"}
|
local CHANNEL=${3:-"stable/ubuntu-$(release_ver)"}
|
||||||
@ -561,7 +626,15 @@ snap_preseed() {
|
|||||||
echo "ERROR: Snap model assertion not present, snap_prepare must be called"
|
echo "ERROR: Snap model assertion not present, snap_prepare must be called"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_snap_preseed $CHROOT_ROOT $SNAP $CHANNEL
|
_snap_preseed $CHROOT_ROOT $SNAP $CHANNEL
|
||||||
|
|
||||||
|
# Mark this image as having snapd installed explicitly.
|
||||||
|
case $SNAP_NAME in
|
||||||
|
snapd)
|
||||||
|
touch "$CHROOT_ROOT/var/lib/snapd/seed/.snapd-explicit-install-stamp"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
snap_from_seed() {
|
snap_from_seed() {
|
||||||
|
@ -12,4 +12,4 @@ fi
|
|||||||
rootfs_dir=rootfs.dir
|
rootfs_dir=rootfs.dir
|
||||||
|
|
||||||
cp $rootfs_dir.manifest livecd.ubuntu-cpc.rootfs.manifest
|
cp $rootfs_dir.manifest livecd.ubuntu-cpc.rootfs.manifest
|
||||||
(cd $rootfs_dir/ && tar -c --xattrs *) | xz > livecd.ubuntu-cpc.rootfs.tar.xz
|
(cd $rootfs_dir/ && tar -c --sort=name --xattrs *) | xz > livecd.ubuntu-cpc.rootfs.tar.xz
|
||||||
|
@ -227,6 +227,7 @@ OVA information:
|
|||||||
EOM
|
EOM
|
||||||
|
|
||||||
tar -C ${box_d} \
|
tar -C ${box_d} \
|
||||||
|
--sort=name \
|
||||||
-cf ${cur_d}/livecd.ubuntu-cpc.vagrant.box \
|
-cf ${cur_d}/livecd.ubuntu-cpc.vagrant.box \
|
||||||
box.ovf \
|
box.ovf \
|
||||||
Vagrantfile \
|
Vagrantfile \
|
||||||
|
@ -104,6 +104,7 @@ OVA information:
|
|||||||
EOM
|
EOM
|
||||||
|
|
||||||
tar -C ${scratch_d} \
|
tar -C ${scratch_d} \
|
||||||
|
--sort=name \
|
||||||
-cf ${cur_d}/livecd.ubuntu-cpc.ova \
|
-cf ${cur_d}/livecd.ubuntu-cpc.ova \
|
||||||
${prefix}.ovf \
|
${prefix}.ovf \
|
||||||
${prefix}.mf \
|
${prefix}.mf \
|
||||||
|
@ -62,7 +62,7 @@ fi
|
|||||||
# and tar it up
|
# and tar it up
|
||||||
(
|
(
|
||||||
cd $TMPDIR
|
cd $TMPDIR
|
||||||
tar -c -z -f $HERE/device.tar.gz system assets hardware.yaml
|
tar -c --sort=name -z -f $HERE/device.tar.gz system assets hardware.yaml
|
||||||
)
|
)
|
||||||
|
|
||||||
rm -rf $TMPDIR
|
rm -rf $TMPDIR
|
||||||
|
0
wget-log.1
Normal file
0
wget-log.1
Normal file
Loading…
x
Reference in New Issue
Block a user