Time for yet another update.
This past week, Ikey's Luck o' the Irish struck again, and he tested positive for CoViD-19. He was supposed to be presenting for MZLA at FOSDEM, but with a positive CoViD-19 test, no way that was going to happen. Instead, he's currently at home with his family recovering from his illness. Get well soon Ikey!
Still, being sick as a dog and bored is pretty much the worst punishment that can be visited on Ikey, so purely out of spite (and despite feeling like death warmed over), Ikey's been thinking deeply about how the newly landed trigger work can interact with our package-splitting machinery in boulder, which means that he's decided on an approach that will ensure that the binaries necessary for triggers are split out in such a way as to minimise package download and update sizes.
He's implemented and verified the initial version of what he calls "Transaction scope triggers", which are system triggers that are run after a package is built (e.g. to regenerate icon caches) but before it is turned into a finished transaction and applied to the file system. This means that Transaction triggers that fail will also abort the transaction, meaning that the system will never be allowed to go into an undefined state.
The day before yesterday, Ikey and I had a good chat about how to expand the concept of Transaction scope triggers (tx triggers for short) to also store transaction-locked local filesystem directories outside of /usr (e.g. /var/), such that e.g. man-db tx trigger results saved in a /var "jail" as part of the transaction, will be properly linked up, paired, and activated when activating the transaction itself. The concept is sound, but it might be painful to implement it properly, given there are a few moving parts that need to line up just so.
During his work on GNOME stack bring-up, Ikey has also gotten the serpent systemd working with json userdb functionality, which essentially allows us to predefine permanent system users, such as the gdm user etc. This is useful because it allows us to have consistent and known-in-advance users in the local user database, which in turn allows us to prune left-behind files outside of the moss-controlled /usr dir belonging to said user. This is going to be a very, very useful capability to have in the longer run. To those following along at home, this is achieved by using nss-systemd + userdb, so we can avoid relying on sysusers (adding normal system users leaves users behind after packages have been uninstalled).
Meanwhile, Philipp and I stuck our heads together and figured out how automate the creation of libvirt-managed qemu-kvm virtual machines using the existing (somwhat primitive, but still perfectly cromulent) image tooling in the img-tests repository. This makes it possible to use moss to directly write to a new root location on the host filesystem, and then use that location as a chroot for the virtual machine. This makes standing up proper virtual machines and testing the graphical stack that we're building out much easier and quicker than spinning up actual ISOs. This work was built on groundwork laid by Reilly Brogan, who is currently busy keeping the Solus package repo ship shape.
Philipp also found the time to not only update a bunch of packages, but also to get flatpak and a rudimental (but functional) swaywm configuration w/alacritty sorted. This means we can now start up terminal emulators on a graphical stack for more convenient development and testing during the GNOME stack package build-out. Philipp even found the time to get a typescript CI linter check going for discovering package file conflicts in the repository packages.
In addition, Joey was kind enough to drop in and contribute a couple of font packages, which helped flesh out the swaywm configuration as well. Thanks Joey! Community member OGINO Masanori from Japan even took the time to submit a couple of zlib PRs, for which we are grateful.
That's all for this week, stay tuned for more updates soon.