Compare commits

..

3 Commits

Author SHA1 Message Date
Utkarsh Gupta
31753aaf3b Update d/ch for 25.04.27 release 2025-08-12 20:00:21 +05:30
Bryan Alexander
2bce1d3f8e Add debian/changelog entry (LP: #2116199) 2025-07-17 13:16:50 -07:00
Bryan Alexander
466f8dc01f feat(apparmor): Add missing components to 6.14 kernel apparmor features' preseeds
- Add the domain/disconnected.ipc component
 - Modified the policy/unconfined_restrictions/io_uring component
(LP: #2116199)
2025-07-17 13:12:57 -07:00
19 changed files with 119 additions and 484 deletions

146
debian/changelog vendored
View File

@ -1,151 +1,9 @@
livecd-rootfs (25.10.17) questing; urgency=medium
[ Tim Andersson ]
* Enable ubuntu-dangerous desktop builds (desktop images
with all snaps on edge).
* Remove temporary snap overrides.
* Import latest 25.10 classic model (LP: #2120473)
* Import 25.10 dangerous model with all snap channels corrected.
-- Utkarsh Gupta <utkarsh@ubuntu.com> Wed, 27 Aug 2025 18:57:13 +0530
livecd-rootfs (25.10.16) questing; urgency=medium
* Put the uc20-style system seed for TPM backed FDE in the live layer.
-- Michael Hudson-Doyle <michael.hudson@ubuntu.com> Wed, 13 Aug 2025 10:34:39 +1200
livecd-rootfs (25.10.15) questing; urgency=medium
livecd-rootfs (25.04.27) plucky; urgency=medium
* Add missing components to 6.14 kernel apparmor features' preseeds.
(LP: #2116199)
-- Bryan Alexander <bryan.alexander@canonical.com> Thu, 17 Jul 2025 13:27:17 -0700
livecd-rootfs (25.10.14) questing; urgency=medium
[ Didier Roche-Tolomelli ]
[ Tim Andersson ]
[ Daniel Bungert ]
* desktop TPMFDE: move snaps back to stable channels
-- Dan Bungert <daniel.bungert@canonical.com> Thu, 07 Aug 2025 16:21:32 -0600
livecd-rootfs (25.10.13) questing; urgency=medium
[ Olivier Gayot ]
* Build ubuntu-server with multipath-tools-boot installed, so that the
multipath stack ends up present in the initramfs.
The LVM stack is already present in the initramfs of the installer. And
since kinetic, the /dev/mapper entries for LVM devices are created during
the initramfs phase. This is a problem when we have LVM on top of a
multipath disk because LVM ends up creating /dev/mapper entries out of
/dev/sdX (or /dev/sdXpY) devices, not out of /dev/mapper/mpatha as it
should. Adding the multipath stack in the initramfs gives multipath a
chance to take ownership of /dev/sdX (or /dev/sdXpY) devices before LVM
does (LP: #2080474).
-- Dan Bungert <daniel.bungert@canonical.com> Thu, 24 Jul 2025 17:37:33 -0600
livecd-rootfs (25.10.12) questing; urgency=medium
[ Zygmunt Krynicki ]
* Use snap wait system seed.loaded to wait for snapd (LP: #2114923)
[ Dennis Loose ]
[ Didier Roche-Tolomelli ]
* Allow the ubuntu-desktop-installer to request snap seeding state
-- Didier Roche-Tolomelli <didrocks@ubuntu.com> Tue, 15 Jul 2025 16:30:41 +0200
livecd-rootfs (25.10.11) questing; urgency=medium
* Fix installer startup to wait for snapd to be preseeded first
(LP: #2114923)
-- Didier Roche-Tolomelli <didrocks@ubuntu.com> Fri, 11 Jul 2025 14:57:56 +0200
livecd-rootfs (25.10.10) questing; urgency=medium
* risc-v cloud images: enable cpc fixes for riscv64
-- Adriano Cordova <adriano.cordova@canonical.com> Tue, 01 Jul 2025 09:11:16 -0400
livecd-rootfs (25.10.9) questing; urgency=medium
* desktop and server: read $SUBARCH to allow the use of nvidia's kernel
instead of generic (LP: #2109822)
-- Antoine Lassagne <antoine.lassagne@canonical.com> Tue, 17 Jun 2025 22:23:11 +1200
livecd-rootfs (25.10.8) questing; urgency=medium
[ Didier Roche-Tolomelli ]
* desktop: use snapd from edge
* desktop: tpmfde image use desktop-security-center and firmware-updater
from edge
[ Dan Bungert ]
* lb_binary_layered: try #2 to fix mtimes in layered squashfses. (LP2107332)
Constrain mtime sync to the current upperdir so that files in lower layers
are not redundantly included.
* server: fix failure to process the hwe kernel layer due to multiple
kernels being present (LP: #2112501)
-- Dan Bungert <daniel.bungert@canonical.com> Fri, 13 Jun 2025 12:00:20 -0600
livecd-rootfs (25.10.7) questing; urgency=medium
* revert 25.10.6 due to duplicated snaps
-- Dan Bungert <daniel.bungert@canonical.com> Tue, 10 Jun 2025 07:55:40 -0600
livecd-rootfs (25.10.6) questing; urgency=medium
* lb_binary_layered: fix mtimes in layered squashfses. (LP: #2107332)
Failing to preserve mtime causes unnecessary python pyc rebuilds due to
mtime mismatch, and it's generally strange that reinstalling a package
that is already installed changes the files on the system (minus
intentional differences such as what's going on in the minimized install
source).
-- Dan Bungert <daniel.bungert@canonical.com> Fri, 30 May 2025 17:05:15 -0600
livecd-rootfs (25.10.5) questing; urgency=medium
* desktop: TPMFDE snapd from latest/edge
-- Dan Bungert <daniel.bungert@canonical.com> Wed, 28 May 2025 10:27:47 -0600
livecd-rootfs (25.10.4) questing; urgency=medium
* desktop: TPMFDE kernel from 25.10/candidate
-- Dan Bungert <daniel.bungert@canonical.com> Sun, 25 May 2025 23:18:59 -0600
livecd-rootfs (25.10.3) questing; urgency=medium
* desktop: update TPMFDE model and don't skip 020-ubuntu-enhanced-sb.binary.
(LP: #2110195) Temporarily use the model that allows overriding snap
channels so we can get matching snaps.
-- Dan Bungert <daniel.bungert@canonical.com> Fri, 23 May 2025 12:59:40 -0600
livecd-rootfs (25.10.2) questing; urgency=medium
* desktop: skip 020-ubuntu-enhanced-sb.binary until a matching kernel is
ready for snapd 2.68.x
-- Dan Bungert <daniel.bungert@canonical.com> Tue, 06 May 2025 08:24:10 +0200
livecd-rootfs (25.10.1) questing; urgency=medium
* desktop: no longer involve cloud-init in early networking (LP: #2107225)
* server: provide network config direct to netplan
* server: update default netplan config for IPv6 autoconfiguration &
connectivity
-- Dan Bungert <daniel.bungert@canonical.com> Mon, 28 Apr 2025 09:53:34 -0600
-- Bryan Alexander <bryan.alexander@canonical.com> Thu, 17 Jul 2025 13:14:21 -0700
livecd-rootfs (25.04.26) plucky; urgency=medium

1
debian/install vendored
View File

@ -4,4 +4,3 @@ get-ppa-fingerprint usr/share/livecd-rootfs
minimize-manual usr/share/livecd-rootfs
checkout-translations-branch usr/share/livecd-rootfs
update-source-catalog usr/share/livecd-rootfs
sync-mtime usr/share/livecd-rootfs

View File

@ -484,9 +484,6 @@ for FLAVOUR in $LB_LINUX_FLAVOURS; do
lowlatency-hwe-*)
FLAVOUR="lowlatency"
;;
nvidia-hwe-*)
FLAVOUR="nvidia"
;;
esac
KVERS="$( (cd "binary/$INITFS"; ls vmlinu?-* 2>/dev/null || true) | (fgrep -v .efi || true) | sed -n "s/^vmlinu.-\\([^-]*-[^-]*-$FLAVOUR\\)$/\\1/p" )"
if [ -z "$KVERS" ]; then

View File

@ -3,7 +3,7 @@ set -e
case $ARCH:$SUBARCH in
amd64:|amd64:generic|amd64:intel-iot|\
arm64:|arm64:generic|arm64:raspi|arm64:snapdragon|arm64:nvidia|\
arm64:|arm64:generic|arm64:raspi|arm64:snapdragon|\
arm64:tegra|arm64:tegra-igx|arm64:tegra-jetson|arm64:x13s|\
arm64:largemem|\
armhf:|\
@ -844,16 +844,6 @@ case $PROJECT in
HAS_DEFAULT_LANGUAGES=yes
LANGUAGE_BASE=desktop
KERNEL_FLAVOURS='generic-hwe-24.04'
case $SUBARCH in
nvidia)
KERNEL_FLAVOURS="nvidia-hwe-24.04"
;;
*)
# nothing to do here.
;;
esac
do_layered_desktop_image
# Enchanced secureboot stuff
@ -1009,14 +999,6 @@ case $PROJECT in
add_package ubuntu-server-minimal lxd-installer
add_task ubuntu-server-minimal.ubuntu-server minimal standard server
add_package ubuntu-server-minimal.ubuntu-server cloud-init
# If we have a multipath disk with LVM on top, we want to give
# multipath a chance to create the /dev/mapper/mpatha entry
# during the initramfs phase. Otherwise LVM will "steal" the
# device (e.g., /dev/sda2) and prevent multipath from using it
# after pivoting to the root filesystem of the live
# environment.
# See LP: #2080474 and LP: #1480399.
add_package ubuntu-server-minimal.ubuntu-server.installer multipath-tools-boot
add_task ubuntu-server-minimal.ubuntu-server.installer server-live
@ -1041,9 +1023,6 @@ case $PROJECT in
# variants='ga-64k hwe-64k'
variants='ga-64k'
;;
nvidia)
variants='nvidia'
;;
*)
# variants='ga hwe'
variants='ga'
@ -1081,20 +1060,21 @@ case $PROJECT in
elif [ "$variant" = "tegra-jetson" ]; then
kernel_metapkg=linux-nvidia-tegra-jetson
flavor=nvidia-tegra-jetson
elif [ "$variant" = "nvidia" ]; then
kernel_metapkg=linux-nvidia-hwe-$(lsb_release -sr)
flavor=nvidia
else
echo "bogus variant: $variant"
exit 1
fi
add_pass ubuntu-server-minimal.ubuntu-server.installer.$flavor
if [ "$first_kernel" = "y" ]; then
# Put the first kernel offered into the base layer
kernel_layer=ubuntu-server-minimal
first_kernel=n
add_package ubuntu-server-minimal $kernel_metapkg
else
# and subsequent ones into their own layer
kernel_layer=ubuntu-server-minimal.ubuntu-server.installer.$flavor
fi
add_package ubuntu-server-minimal.ubuntu-server.installer.$flavor $kernel_metapkg
add_package $kernel_layer $kernel_metapkg
LIVE_PASSES="${LIVE_PASSES:+$LIVE_PASSES }ubuntu-server-minimal.ubuntu-server.installer.$flavor"
done

View File

@ -565,12 +565,8 @@ _snap_post_process() {
core[0-9]*)
# If the 'core' snap is not present, assume we are coreXX-only and
# install the snapd snap.
channel=stable
if [ $SUBPROJECT = "dangerous" ]; then
channel=$CHANNEL
fi
if [ ! -f ${snaps_dir}/core_[0-9]*.snap ]; then
_snap_preseed $CHROOT_ROOT snapd "$channel"
_snap_preseed $CHROOT_ROOT snapd stable
fi
;;
core)

View File

@ -163,24 +163,15 @@ build_layered_squashfs () {
# (rather than the default which is to skip copies based
# on size + mtime)
# --no-times to not copy mtimes from source to dest (we
# do care about mtime in the image but want to
# don't care about mtime in the image and want to
# deduplicate files that have indentical contents but
# different mtimes, and mtime will be fixed below)
# different mtimes)
# --del because we want to remove files that have been
# deleted in this layer.
rsync -aXHAS --checksum --no-times --del chroot/ chroot-2/
umount chroot-2
rmdir chroot-2
overlay_dir="$overlay_dir-2"
# We use rsync with --no-times rsync (see above)
# for the absolute best size reduction. But there are
# cases where we want mtime preservation to match what
# was found in the original archive packages, such as
# keeping .py mtime in sync with the matching .pyc.
# Operate on the upperdir directly, so that we are only
# modifying mtime on files that are actually changed in
# this layer. LP: #2107332
/usr/share/livecd-rootfs/sync-mtime chroot "$overlay_dir"
fi
create_squashfs "${overlay_dir}" ${squashfs_f}

View File

@ -18,6 +18,20 @@ ssh_pwauth: yes
chpasswd:
expire: false
# This is the initial network config.
# It can be overwritten by cloud-init or subiquity.
network:
version: 2
ethernets:
zz-all-en:
match:
name: "en*"
dhcp4: true
zz-all-eth:
match:
name: "eth*"
dhcp4: true
# We used to have a custom final_message here. Just use the default instead.
# Example datasource config

View File

@ -100,7 +100,7 @@ fi
case $arch in
# ppc, riscv64 and s390x images are special
powerpc|ppc64el|s390x)
powerpc|ppc64el|s390x|riscv64)
exit 0
;;
esac

View File

@ -1,18 +0,0 @@
#!/bin/bash -eux
# vi: ts=4 noexpandtab
case $PASS in
ubuntu-server-minimal.ubuntu-server.installer.*.*)
exit 0
;;
ubuntu-server-minimal.ubuntu-server.installer.*)
;;
*)
exit 0
;;
esac
# remove excess kernels. auto/config arranges for the correct one to be
# installed.
apt-get --yes remove --purge 'linux-image*'

View File

@ -18,6 +18,20 @@ ssh_pwauth: yes
chpasswd:
expire: false
# This is the initial network config.
# It can be overwritten by cloud-init or subiquity.
network:
version: 2
ethernets:
zz-all-en:
match:
name: "en*"
dhcp4: true
zz-all-eth:
match:
name: "eth*"
dhcp4: true
# We used to have a custom final_message here. Just use the default instead.
# Example datasource config

View File

@ -1,19 +0,0 @@
# This is the initial network config.
# It can be overwritten by cloud-init or subiquity.
# For more information, see netplan(5)
network:
version: 2
ethernets:
zz-all-en:
match:
name: "en*"
dhcp4: true
dhcp6: true
accept-ra: true
zz-all-eth:
match:
name: "eth*"
dhcp4: true
dhcp6: true
accept-ra: true

View File

@ -1,24 +1,39 @@
#! /bin/sh
# We need to remove the snapd seed configuration for the layers that
# will be the installation source for a TPM-backed FDE install or
# snapd gets very confused on the boot of the target system.
set -eux
case ${PASS:-} in
*.enhanced-secureboot)
minimal.standard.enhanced-secureboot)
;;
minimal.enhanced-secureboot)
;;
*)
exit 0
;;
esac
. config/functions
if [ -n "${SUBPROJECT:-}" ]; then
echo "We don't run Ubuntu Desktop hooks for this project."
exit 0
fi
. config/binary
. config/functions
# env SNAPPY_STORE_NO_CDN=1 snap known --remote model series=16 brand-id=canonical model=ubuntu-classic-2410-amd64 > config/classic-model.model
model=/usr/share/livecd-rootfs/live-build/${PROJECT}/ubuntu-classic-amd64.model
channel=""
if [ -n "${CHANNEL:-}" ]; then
channel="--channel $CHANNEL"
fi
reset_snapd_state chroot
# Set UBUNTU_STORE_COHORT_KEY="+" to force prepare-image to fetch the latest
# snap versions regardless of phasing status
env SNAPPY_STORE_NO_CDN=1 UBUNTU_STORE_COHORT_KEY="+" snap prepare-image \
--classic $model $channel chroot
mv chroot/system-seed/systems/* chroot/system-seed/systems/enhanced-secureboot-desktop
rm -rf chroot/var/lib/snapd/seed
mv chroot/system-seed chroot/var/lib/snapd/seed

View File

@ -1,59 +0,0 @@
#!/bin/bash
# create the system seed for TPM-backed FDE in the live layer of the installer.
set -eux
case ${PASS:-} in
*.live)
;;
*)
exit 0
;;
esac
if [ -n "${SUBPROJECT:-}" ]; then
echo "We don't run Ubuntu Desktop hooks for this project."
exit 0
fi
. config/binary
. config/functions
# Generation of the model:
# * At https://github.com/canonical/models one can find a repo of raw,
# unsigned, input .json files, and their signed .model equivalents.
# * At least once per cycle, update the json for the new Ubuntu version.
# To do this, take the previous cycle ubuntu-classic-$ver-amd64.json file,
# rename for the new version, and do any necessary updates including fixing
# the versions of tracks.
# * When this is done, the json needs to be signed. This needs to be done by
# a Canonical employee - try asking someone who has recently opened PRs on
# https://github.com/canonical/models with the signed models.
# * Ensure the signed and unsigned version of the models are updated in the
# models repo.
# * The signed model can then be placed here in livecd-rootfs at
# live-build/${PROJECT}/ubuntu-classic-amd64.model
# env SNAPPY_STORE_NO_CDN=1 snap known --remote model series=16 brand-id=canonical model=ubuntu-classic-2410-amd64 > config/classic-model.model
model=/usr/share/livecd-rootfs/live-build/${PROJECT}/ubuntu-classic-amd64.model
# for the dangerous subproject, we need the dangerous model!
if [ $SUBPROJECT = "dangerous" ]; then
model=/usr/share/livecd-rootfs/live-build/${PROJECT}/ubuntu-classic-amd64-dangerous.model
fi
channel=""
if [ -n "${CHANNEL:-}" ]; then
channel="--channel $CHANNEL"
fi
# Set UBUNTU_STORE_COHORT_KEY="+" to force prepare-image to fetch the latest
# snap versions regardless of phasing status
env SNAPPY_STORE_NO_CDN=1 UBUNTU_STORE_COHORT_KEY="+" snap prepare-image \
--classic $model $channel chroot
mv chroot/system-seed/systems/* chroot/system-seed/systems/enhanced-secureboot-desktop
rsync -av chroot/system-seed/{systems,snaps} chroot/var/lib/snapd/seed
rm -rf chroot/system-seed/

View File

@ -18,6 +18,20 @@ ssh_pwauth: yes
chpasswd:
expire: false
# This is the initial network config.
# It can be overwritten by cloud-init or subiquity.
network:
version: 2
ethernets:
zz-all-en:
match:
name: "en*"
dhcp4: true
zz-all-eth:
match:
name: "eth*"
dhcp4: true
# We used to have a custom final_message here. Just use the default instead.
# Example datasource config

View File

@ -1,13 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
//
// THIS FILE IS ONLY AVAILABLE ON THE LIVE SYSTEM
//
// Allow the ubuntu-desktop-installer to request snap seeding state
// used before starting.
polkit.addRule(function(action, subject) {
if (action.id == "io.snapcraft.snapd.manage-configuration") {
return polkit.Result.YES;
}
});

View File

@ -10,8 +10,6 @@ Conflicts=gnome-session@gnome-login.target
[Service]
Type=oneshot
# Make sure that the system was seeded to access the snap
ExecStartPre=/usr/bin/snap wait system seed.loaded
ExecStart=/snap/bin/ubuntu-desktop-bootstrap --try-or-install
ExecStopPost=sh -c "gsettings set org.gnome.shell.extensions.dash-to-dock dock-fixed true; gsettings set org.gnome.shell.extensions.dash-to-dock intellihide true; gnome-extensions enable ding@rastersoft.com"
Restart=no

View File

@ -1,94 +0,0 @@
type: model
authority-id: canonical
series: 16
brand-id: canonical
model: ubuntu-classic-2510-amd64-dangerous
architecture: amd64
base: core24
classic: true
distribution: ubuntu
grade: dangerous
snaps:
-
default-channel: classic-25.10/edge
id: UqFziVZDHLSyO3TqSWgNBoAdHbLI4dAH
name: pc
type: gadget
-
default-channel: 25.10/beta
id: pYVQrBcKmBa0mZ4CCN7ExT6jH8rY1hza
name: pc-kernel
type: kernel
-
default-channel: latest/edge
id: amcUKQILKXHHTlmSa7NMdnXSx02dNeeT
name: core22
type: base
-
default-channel: latest/edge
id: dwTAh7MZZ01zyriOZErqd1JynQLiOGvM
name: core24
type: base
-
default-channel: latest/edge
id: PMrrV4ml8uWuEUDBT8dSGnKUYbevVhc4
name: snapd
type: snapd
-
default-channel: latest/edge
id: EISPgh06mRh1vordZY9OZ34QHdd7OrdR
name: bare
type: base
-
default-channel: 1/edge/ubuntu-25.10
id: EI0D1KHjP8XiwMZKqSjuh6W8zvcowUVP
name: firmware-updater
type: app
-
default-channel: 1/edge/ubuntu-25.10
id: FppXWunWzuRT2NUT9CwoBPNJNZBYOCk0
name: desktop-security-center
type: app
-
default-channel: 1/edge/ubuntu-25.10
id: aoc5lfC8aUd2VL8VpvynUJJhGXp5K6Dj
name: prompting-client
type: app
-
default-channel: 2/edge/ubuntu-25.10
id: gjf3IPXoRiipCu9K0kVu52f0H56fIksg
name: snap-store
type: app
-
default-channel: latest/edge/ubuntu-25.10
id: jZLfBRzf1cYlYysIjD2bwSzNtngY0qit
name: gtk-common-themes
type: app
-
default-channel: latest/edge/ubuntu-25.10
id: 3wdHCAVyZEmYsCMFDE9qt92UV8rC8Wdk
name: firefox
type: app
-
default-channel: latest/edge/ubuntu-25.10
id: lATO8HzwVvrAPrlZRAWpfyrJKlAJrZS3
name: gnome-42-2204
type: app
-
default-channel: latest/edge/ubuntu-25.10
id: IrwRHakqtzhFRHJOOPxKVPU0Kk7Erhcu
name: snapd-desktop-integration
type: app
timestamp: 2025-05-01T12:00:00.0Z
sign-key-sha3-384: 9tydnLa6MTJ-jaQTFUXEwHl1yRx7ZS4K5cyFDhYDcPzhS7uyEkDxdUjg9g08BtNn
AcLBXAQAAQoABgUCaKKyiQAKCRDgT5vottzAEt+LD/9GTgoaYQg0qYohdnYYQkiWJbtNcZgLRpUf
gPswZsBzmDLbH0XyLWB9h32gDyZ6Gdt3c9uK2hqCaNTaLJyf5eGs/7zjs9lVmEf3MNSr9FGx6Vek
i+NPeOEjrmwjMXzi9FnTDTJzW0cMzCEzYiTHWRF8K5WCVumuzMMUCihZbuHvZCjXoIJ+RrSBMvbE
udzmJ0NIEgCGA+r32kEkcauNTrMwXdosdTYhrKy/dcy6SrACaZzvQAwPYXy3UJEDmz6qQQ/94G9s
5P/bqrOZVoL22H9a/6WnEulHyCNAVlotpbY3Dij1yHp5KEiFCuREP/MauLdONCY+snimwxpItm7L
B4D92BTkhe9noiyRbSU3fLrMJGY//PKCxkQMVyvkx/aUnyqeySRCP6U7U6t09P2/WzmJULT+a+9N
pgXrXt3k69zqI0U74R3+JwiU/VrZq6cssdwx8unKYtoOT5O3G0b7q50Lv2RyNHQSjrlSU397HKkQ
Gnnb/w4caV+O/cKlDlXNXijZI/kxfP+tKqRHMSRLmV3I8W+/nh6YE4/NMiXVicej3tTaPtWlBI+9
hj0Chtlk+wWD+9MjC1suJh4XLHAXbYJczSFdb3qcQq7f64v70sNoLzW4ekGUlSpbazNaX7P+Liov
VBGXSpziQJuF4y/BSU8tCweJExhkibFEBar5SCKbvw==

View File

@ -2,7 +2,7 @@ type: model
authority-id: canonical
series: 16
brand-id: canonical
model: ubuntu-classic-2510-amd64
model: ubuntu-classic-2504-amd64
architecture: amd64
base: core24
classic: true
@ -10,12 +10,12 @@ distribution: ubuntu
grade: signed
snaps:
-
default-channel: classic-25.10/stable
default-channel: classic-25.04/stable
id: UqFziVZDHLSyO3TqSWgNBoAdHbLI4dAH
name: pc
type: gadget
-
default-channel: 25.10/stable
default-channel: 25.04/stable
id: pYVQrBcKmBa0mZ4CCN7ExT6jH8rY1hza
name: pc-kernel
type: kernel
@ -40,55 +40,55 @@ snaps:
name: bare
type: base
-
default-channel: 1/stable/ubuntu-25.10
id: EI0D1KHjP8XiwMZKqSjuh6W8zvcowUVP
name: firmware-updater
type: app
-
default-channel: 1/stable/ubuntu-25.10
id: FppXWunWzuRT2NUT9CwoBPNJNZBYOCk0
name: desktop-security-center
type: app
-
default-channel: 1/stable/ubuntu-25.10
id: aoc5lfC8aUd2VL8VpvynUJJhGXp5K6Dj
name: prompting-client
type: app
-
default-channel: 2/stable/ubuntu-25.10
id: gjf3IPXoRiipCu9K0kVu52f0H56fIksg
name: snap-store
type: app
-
default-channel: latest/stable/ubuntu-25.10
id: jZLfBRzf1cYlYysIjD2bwSzNtngY0qit
name: gtk-common-themes
type: app
-
default-channel: latest/stable/ubuntu-25.10
default-channel: latest/stable/ubuntu-25.04
id: 3wdHCAVyZEmYsCMFDE9qt92UV8rC8Wdk
name: firefox
type: app
-
default-channel: latest/stable/ubuntu-25.10
default-channel: latest/stable/ubuntu-25.04
id: lATO8HzwVvrAPrlZRAWpfyrJKlAJrZS3
name: gnome-42-2204
type: app
-
default-channel: latest/stable/ubuntu-25.10
default-channel: latest/stable/ubuntu-25.04
id: jZLfBRzf1cYlYysIjD2bwSzNtngY0qit
name: gtk-common-themes
type: app
-
default-channel: latest/stable/ubuntu-25.04
id: IrwRHakqtzhFRHJOOPxKVPU0Kk7Erhcu
name: snapd-desktop-integration
type: app
timestamp: 2025-08-06T12:00:00.0Z
-
default-channel: 1/stable/ubuntu-25.04
id: EI0D1KHjP8XiwMZKqSjuh6W8zvcowUVP
name: firmware-updater
type: app
-
default-channel: 1/stable/ubuntu-25.04
id: FppXWunWzuRT2NUT9CwoBPNJNZBYOCk0
name: desktop-security-center
type: app
-
default-channel: 1/stable/ubuntu-25.04
id: aoc5lfC8aUd2VL8VpvynUJJhGXp5K6Dj
name: prompting-client
type: app
-
default-channel: 2/stable/ubuntu-25.04
id: gjf3IPXoRiipCu9K0kVu52f0H56fIksg
name: snap-store
type: app
timestamp: 2024-10-30T12:00:00.0Z
sign-key-sha3-384: 9tydnLa6MTJ-jaQTFUXEwHl1yRx7ZS4K5cyFDhYDcPzhS7uyEkDxdUjg9g08BtNn
AcLBXAQAAQoABgUCaJuDnwAKCRDgT5vottzAEqjkD/4+SAjC0APhGmSh73ewaUe57Nbs4qDfrUJZ
P8aaq9UO3siLmp1og/3OwbuMhddmqxvurYqe0jby6Qbv7NbCcI7YZvn4wDxnessWeYJnOd1Le8UC
cOmhckh7WZzQreR2SjIRq9ElGGI4RIft4Ex6H2EYG3A9EpTdwfZ1jmnwUlw6qqPEjXJv/PKtcpm0
qrWetewWMyZF5JmoZUyCWd4xP0y3VpbrTCHvBl5C/Q63xy/KELSGYAesgBfcO1bIP/NbVWsHbvTd
qCew5lTQx7tUIu4mnBuvt1bZ6U3jbXUu15g1EgJwsft2ker5bX8GbsJEBnz7TBgdYmrRb3DCthZ7
tiZT2XWmOSiwMK++5BNnJkActkkCXFRVzL/f2ofUOJ96bLxk3qlPxh6bkpqUkkSkygC46123MzOZ
dRehpGuqsZ3VrLZx8CrrwIb0nZZFeR0ZH8y1gL2uXcRPQDSOPFgwRrTLo+NzVLfdUyraRZaU50Y+
xRzh0nT8GSFDY9QeZZwq83UDsUNILZxRBmnD7fidYDFHRNzqLPH+xYAuAakX6zGlA2foOpC1CbIs
LUAhSzFdKJKBGucG3EumAggOCWqggc6RxY3c4eXDbrESE1RG1ndKINScNf+l/cYAwZSa6q9HKx3R
w7sGOLj+FzSGWqBaljjQeBd1jk3udS34yaDEtLlcxQ==
AcLBXAQAAQoABgUCZ9KrAgAKCRDgT5vottzAEqaOEACecH0VUlotBTzcr+GV1CprnX9x/CB0AtqB
tS6BmFvf385A+Ce2QWkyM5LSy5+AyN5Ujmn3K9niWqWvN3gqr1cXlviiFQuLh8Btb0dHT+Zj48Jv
lKI5WMJHDwp9rUQ5pQHpKz4hdhrrrz5m+T17WAp9PkPFlCDS6VQ54a3vhCR6U4fKzx3b9BEX4few
h4efotBDGzoGl1ed82oSB4sUV0K8yugxaMVexTn82xJ0pUkCqIuWnW84/usH7e+vStpqGft8sR2Q
qli3HjLX1ctm8MzTyBn1nGrEQmqqkgPo8OCIsIt/Lqi9rTUdoAl4sre9ErTdXPz0aim4I+uB4gfl
PA8vCdJrMAF3MWUxNZZfYWV9Y8OzTJpjfp4X0zC0fUw99vHS1Soxua9PWF8h3OPLBvemTiZhfJyu
SaYa8pUNtPXXwpFQvRaxMFj59g83DbZ14xny36+fYiAFk6zp5x61Fa3QQDueHpliyKCJOShjyisz
i1g8Rza0iXEp6T6aBc3p+fLmxhOP+FeA8MO+d5WlGksObSwK3Us4HonVKgfVuZRObvRuPFGJDY0w
yo/mV+YbBrSfVPSF8OC5Dh1i+ApzQ5vGlnEB5ZBDdMZhznuD2oSBN6WEtCn8tuZ4zJHoN0k9O3QI
mvqL6aI4gL4A2uLneC96fu4YMVEdLisiXalUb9s/FA==

View File

@ -1,38 +0,0 @@
#!/usr/bin/python3
# usage: sync-mtime src dst
#
# synchronize atime/mtime on files between src and dst.
#
# src and dst are directories, where dst is expected to contain a subset of the
# files found in src. for each file present in dst or a subdirectory thereof,
# if atime/mtime differ between the same file in src and that file in dst,
# update atime/mtime on the file in dst.
import os
import sys
from pathlib import Path
def time_eq(a: os.stat_result, b: os.stat_result) -> bool:
return (
(a.st_mtime_ns == b.st_mtime_ns) and
(a.st_atime_ns == b.st_atime_ns)
)
src, dst = sys.argv[1:]
for dirpath, dirnames, filenames in Path(dst).walk():
for filename in filenames:
dst_file = dirpath / filename
if not dst_file.is_file():
continue
src_file = src / dst_file.relative_to(dst)
src_stat = src_file.stat(follow_symlinks=False)
dst_stat = dst_file.stat(follow_symlinks=False)
if time_eq(src_stat, dst_stat):
continue
ns = (src_stat.st_atime_ns, src_stat.st_mtime_ns)
os.utime(dst_file, ns=ns, follow_symlinks=False)