Commit Graph

685 Commits

Author SHA1 Message Date
Harald Sitter
0b1bb37e3a use long option 2025-08-27 04:59:19 +02:00
Hadi Chokr
7add26f29d Unnuke the fallback themes 2025-08-27 04:58:29 +02:00
Hadi Chokr
e5977eccd9 Nuke unneeded themes 2025-08-27 04:58:29 +02:00
Hadi Chokr
1a331fade9 Add our defaults to plymouth. 2025-08-27 04:58:29 +02:00
Harald Sitter
a28807e832 mtimer: apply stat info mtimes when called for
should prevent files from going 1970 on us
2025-08-27 04:34:44 +02:00
l10n daemon script
2401d8941e GIT_SILENT made messages (after extraction) 2025-08-27 00:41:52 +00:00
Nate Graham
4a3eaadefe Ship espeak-ng out of the box
This is a useful accessibility tool so that people with vision
impairments can receive audio feedback for their task automation
systems.
2025-08-26 09:32:41 -06:00
Harald Sitter
26c1640492 mtimer: links need special handling
I completely ignored the fact that symlinks can point to directories.
this then would make our checksum logic fall over because you can't
checksum a dirent. instead introduce completely bespoke handling for
symlinks. it's increeeedibly similar to files but ever so slightly
different so we have type assurances.

may be worth creating an Analyzer interface in the future so we don't
have to dupe things so much
2025-08-26 15:06:42 +02:00
Harald Sitter
74b379ddd5 drop virt-manager to see how much of a pain that causes
there is a flatpak and technically that works without a system libvirt
it's hard to tell right now if it is working though because we do
have a system libvirt :D
2025-08-26 14:47:37 +02:00
Harald Sitter
f494ed4a60 mtimer: don't skip symlinks
after some stunts with dump.erofs I am led to believe that the remaining
delta chunks are in fact symlink (metadata?)

specifically I am seeing a non-matching chunk

`░ -- start: 3626777409 len: 82685`

which seems to cover the following extent in erofs

```
Path :
/usr/share/factory/var/lib/flatpak/runtime/org.kde.Platform/x86_64/6.9/f930fae18cfc829f51db18b9324905a3bebee0ec7e9d4d62afbb17f696fb20d0/files/share/icons/breeze-dark/status/22/rotation-locked-landscape-symbolic.svg
Size: 29  On-disk size: 29  symlink file
NID: 113336534   Links: 1   Layout: 2   Compression ratio: 100.00%
Inode size: 64   Xattr size: 0
Uid: 0   Gid: 0  Access: 0777/rwxrwxrwx
Timestamp: 2025-08-26 12:33:18.806496943

 Ext:   logical offset   |  length :     physical offset    |  length
   0:        0..      29 |      29 : 3626769152..3626769181 |      29
```

the trouble is that because the chunk is so large it's hard to tell what
the actual change is that causes the delta. considering the mtime
definitely is the build time it is my only guess right now
2025-08-26 14:29:09 +02:00
Harald Sitter
a42b386db4 mtimer: always restore time of dir
doesn't really make sense to guard this since we always want to set the
stable time. also allows us to get rid of the extra stat
2025-08-26 12:11:51 +02:00
Harald Sitter
8e3cafae79 mtimer: start the search for a dir time with unix(0)
if the dir is newer than the files then we still want to force it to a
consistent value of the files

most notably this should prevent a whole host of dirs from having an
mtime that is the package unpack time, which is obviously changing
between builds
2025-08-26 07:35:39 +02:00
Harald Sitter
bf5f2dd160 give dirs a stable time
with file mtimes stabilized, we now have dirs lighting up like a
christmas tree in my diff scripts. give them a stable mtime to get
consistency between builds.

the idea here is that if we set the mtime of all dirs to their latest
content's mtime we'll implicitly stabilize the dirs through stabilizing
the files

somewhat unfortunately we need to do this in a single thread because
otherwise we'd have to segment deep trees and I really don't want to
venture there for such an otherwise simple program

a future option might be to also put dirs in our json but realistically
that only makes a difference for empty dirs (since they have no content
from which to derive the mtime). so let's see where we get with this. we
can always add dir records in the json later
2025-08-26 06:35:24 +02:00
Harald Sitter
806f85a40a marshal condensed json
preciously recovers a byte or two
2025-08-26 06:35:23 +02:00
l10n daemon script
cb21dce4c3 GIT_SILENT made messages (after extraction) 2025-08-26 00:41:03 +00:00
Harald Sitter
d321e31c7e build calamares in MinSizeRel mode
to shrink its artifacts way down. calamares doesn't need to be super
efficient, just very small because we don't actually need it all that
much
2025-08-25 23:24:51 +02:00
Harald Sitter
121314e605 clear even more of pacman
files in var/lib/pacman/local are super tiny and change between all our
builds, causing many tiny deltas. we don't like many tiny deltas in our
delta downloading because it means many tiny downloads. so remove the
files to get a smaller overall delta between image versions
2025-08-25 23:24:51 +02:00
Ben Cooksley
aaff6a3489 Try to minimise unnecessary builds 2025-08-26 07:08:42 +12:00
Harald Sitter
5705a9f4b3 put login.defs into etc so useradd behaves correctly 2025-08-25 19:00:52 +02:00
Harald Sitter
653e1baadd use absolute path to mtimer.json 2025-08-25 18:18:10 +02:00
Harald Sitter
9719237988 try to produce more consistent mtimes
this is a bit of a shot in the dark, but I believe we may have
unnecessary delta in our images caused by the rebuilding of software on
a daily basis. this would result in mtimes changing when the files
actually do not.

a tiny mtimer tool is meant to work around that by consuming an input
json file of mtimes+checksums and if mtimes change it will checksum the
affected file to verify it actually has changed in content as well.
assuming reproducible builds this should result in far less delta in the
erofs and by extension the delta download
2025-08-25 18:06:43 +02:00
Aleix Pol
947cb878bd appstream: Remove outdated version
We are not shipping Plasma 6.0 anymore and it probably shouldn't matter
either.
2025-08-25 01:09:42 +02:00
Ben Cooksley
e10cee597e Don't apply the default ruleset to CI jobs.
It does not make sense in this context, and the bit this is trying to fix comes from workflow:rules anyway

Fixes kde-linux/kde-linux#256
2025-08-23 09:58:32 +00:00
Harald Sitter
9d764074bb align chunk sizes
this should make things more amazing. from my testing it looks like
aligning the sizes improves compression and improves caibx generation by
aligning chunk boundaries better.

in a test scenario of adding a single 128M random data file to /usr/lib
this brought the fragmentation from a couple thousand segments down to 8
(of which 5 are in the superblock and the new file appears as large
contiguous chunk delta). the actual download size is a 135M delta
2025-08-23 04:39:43 +02:00
Kristen McWilliam
dffa871ec7 fix: enable KISS service by default 2025-08-22 13:42:34 -04:00
Hadi Chokr
d49aab8fef Fix Typo 2025-08-22 15:30:06 +00:00
Hadi Chokr
ee81cd858c Add iwd as an option. 2025-08-22 15:27:04 +00:00
Nate Graham
e4dabff33c Use correct package name for trash tool
!fixup 0d3717f6f1
2025-08-22 09:16:19 -06:00
Kristen McWilliam
cd6407e236 calamares: let KISS handle user creation 2025-08-22 14:55:30 +00:00
Nate Graham
0d3717f6f1 Pre-install CLI trash tools
Much safer and better integration with the system than using `rm` to
delete stuff.
2025-08-22 14:50:54 +00:00
Nate Graham
8ef056bc89 Add comment explaining KDE dependencies situation 2025-08-22 14:39:18 +00:00
Nate Graham
a14f215616 Don't manually pull in sshfs anymore
THis was made a mandatory dependency of kdeconnect-kde in
https://invent.kde.org/sysadmin/repo-metadata/-/merge_requests/614,
so we don't need to ask for it here.
2025-08-22 14:39:18 +00:00
Hadi Chokr
83d003fc9d Edit 20-packages-graphics.conf 2025-08-22 14:22:15 +00:00
Nate Graham
7feb7c8bfd Adjust CI rules to use fewer resources
In particular, don't run on branches for merge requests, since the CI
runs for the merge requests themselves are enough.
2025-08-21 15:02:14 -06:00
Nate Graham
55d58e45bb Pre-install usbutils
This gets us `lsusb`, which is missing next to all the other `ls[thing]`
tools already pre-installed.

This will increase the base image size by 375.5 KB, and pull in no new
dependencies.
2025-08-21 10:14:38 -06:00
Harald Sitter
e4e5d29351 vacuum: load existing shas when possible
should avoid most problems with the mirrorbits not having the sha yet
2025-08-21 01:53:04 +02:00
Harald Sitter
2d8dca8329 move sha256sums to sysupdate dir
systemd doesn't like subdir references in the sha256sums so we can't
have a single sums file in the root but rather need to have multiple
2025-08-21 01:15:10 +02:00
Harald Sitter
d7e6dd7b26 vacuum: use correct prefix 2025-08-20 22:56:00 +02:00
Harald Sitter
d6037cb5ac workaround mirror problems 2025-08-20 22:11:41 +02:00
Harald Sitter
5653cd0db6 try to invoke scp correctly 2025-08-20 20:31:09 +02:00
Harald Sitter
52ab0999d3 vacuum: revisit protection
keep them out of the delete list as well
2025-08-20 20:13:15 +02:00
Harald Sitter
d532605483 comment++ 2025-08-20 19:51:07 +02:00
Harald Sitter
bf1eb4c839 update protection logic
the previous code would end up dropping the protected versions from the
shasums, we'll want to keep them there as well.

to achieve this we now collect all protected releases and then append
them to the keep list once the keep list has been pruned. seems the most
reliable way of doing this
2025-08-20 19:50:18 +02:00
Harald Sitter
8c51beb068 shell glob please 2025-08-20 19:49:15 +02:00
Harald Sitter
652d836d11 don't keep the live efi around
we don't need it. it's already in the raw in case someone needs access
to it
2025-08-20 19:31:37 +02:00
Harald Sitter
c5be947571 upload sysupdate artifacts to a versioned directory
helps with implementation of a banana split

https://community.kde.org/KDE_Linux/Banana_Split
2025-08-20 18:54:27 +02:00
Harald Sitter
2da7df7453 comment++ 2025-08-20 16:59:09 +02:00
Harald Sitter
cd6a5852d2 vacuum: don't trip over dirs 2025-08-20 16:59:04 +02:00
Harald Sitter
c0016fadc6 apply some more etc symlinks 2025-08-20 15:58:32 +02:00
Harald Sitter
fd8af21928 make sure we don't find invalid paths 2025-08-20 00:19:52 +02:00