| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
There was a problem hiding this comment.
Thanks for submitting this, I think it'd make sense to split this into distinct PRs?
Sorry, something went wrong.
| .PHONY: bin | ||
| bin: manpages | ||
| cargo build --release --features "$(CARGO_FEATURES)" --bins | ||
| if [ ! -x "$(BOOTC_TARGET_DIR)/bootc" ]; then \ |
There was a problem hiding this comment.
This completely breaks the buildsystem, no? We'd just silently be reusing old binaries...
Sorry, something went wrong.
There was a problem hiding this comment.
yes, that patch is not good and not designed for merge. But it did its job for me.
It is very hard to iterate with bootc while having it compile three times to deploy
Sorry, something went wrong.
| .PHONY: manpages | ||
| manpages: | ||
| cargo run --release --package xtask -- manpages | ||
| if [ -x "$(BOOTC_TARGET_DIR)/bootc" ]; then \ |
There was a problem hiding this comment.
But yes, this is really really messy how we have our documentation depend on running the binary.
Maybe what is easier is to try to move instead to where we just validate the generated docs as a separate phase, but don't default to linking the two together.
It's effectively what we did for the tmt stuff
Sorry, something went wrong.
| let commit = commit.to_string(); | ||
| let ocidir = ociw.dir().try_clone().context("Cloning OCI directory")?; | ||
| let opts = worker_opts.clone(); | ||
| handles.push(thread::spawn(move || { |
There was a problem hiding this comment.
I think it'd be cleaner to use https://doc.rust-lang.org/stable/std/thread/fn.scope.html - or use rayon. (Or use tokio)
Sorry, something went wrong.
There was a problem hiding this comment.
Yeah, this was a fast fixup that works. I wouldn't be happy merging it, the deploy speedup is real though
Sorry, something went wrong.
| r.push(max_freq_components); | ||
| } | ||
|
|
||
| // Allocate an empty bin for new packages |
There was a problem hiding this comment.
I agree we never used this in practice, and we can probably drop it now. OTOH, this code is basically obsoleted by https://github.com/coreos/chunkah anyways?
Sorry, something went wrong.
There was a problem hiding this comment.
that is a nice tool. I will keep it in mind for non-ostree images
ostree-ext provides a fast deploy path for ostree backends so it will have to stay around until the composefs backend is stable with similar performance to the fast ostree deploy path, then add 2-3 more years for migration or a way to specify to bootc interim migration paths so e.g., version 2027.3 switches to composefs and points ostree instances to 2027.2 that has the machinery to migrate from ostree to composefs while being built for ostree. Ah.
Sorry, something went wrong.
| META_CONFIG, | ||
| import.config.to_canon_json_string()?.to_variant(), | ||
| ); | ||
| if let Some(version) = image_version { |
There was a problem hiding this comment.
This may relate to #2136
Sorry, something went wrong.
There was a problem hiding this comment.
Related but not quite. It's true that for images built with docker / buildah they need to be tagged twice so docker compatible registries that only read the leaf manifest can see the tag and tools like podman / skopeo that read the inner config can pick up those
This fixes the bootloader version exposed by ostree. Without this entries appear like PRETTY_NAME. This PR supersedes the one for PRETTY_BOOTLOADER
Ideally on the spinoff, bootc could be taught to set the version tag on the merge commit based on org.opencontainers.image.version while falling back to ostree
Sorry, something went wrong.
|
Hi, yes, this PR is not designed to merge It is more of an issue with some draft solutions attached, moreso for inspiration. Which ones do you think should spinoff as draft PRs and which should land in an issue? |
Sorry, something went wrong.
|
By the way, I had another look at chunkah and dmnks/rpm@1825517 Great work on landing --parkdb! I cannot wait to try it out. I went through my image and fixed some layer invalidations, specifically the initramfs plus some libdnf weirdness. For chunkah, you need to make sure /usr/lib/sysimage/libdnf5/ is unpackaged, because it is owned by libdnf5 and it will corrupt its layer when packages change. /etc/os-release should also be unpackaged (owned by fedora-release). bootupd is also a bit naughty and timestamps EFI.json (/usr/lib/bootupd/updates/EFI.json needs to be unpackaged) Then, dropping these three files is sound: /usr/lib/sysimage/libdnf5/transaction_history.sqlite
/usr/lib/sysimage/libdnf5/transaction_history.sqlite-shm
/usr/lib/sysimage/libdnf5/transaction_history.sqlite-wal
They are ghost files with timestamps, although I am unsure of the implication of removing them. For the initramfs, it includes os-release so some care needs to be taken for the image version to be added after the initramfs is built. There is also a sysusers dracut bug, where when it adds dbus it adds a modification day since epoch to /etc/shadow (we should probably open an issue for that). This causes the initramfs to change every day. But with those fixed, assuming no packages that touch the initramfs such as kernel and firmware are the same, the initramfs is the same! So, the layer stays the same and soft reboot works! With those improvements, if I rebuild the image from scratch, only the commit layer and unpackaged layer change, with a total of ~80mb, and bootc from this PR deploys the image in ~10 seconds. It is so fast that I cannot measure it. You need to keep that in mind before deprecating the rpm-ostree rechunker (which I do not use) or bootc internals ostree-ext (which I do use), as chunkah does not have the fast deploy path EDIT: Deployment takes 13 seconds, diff is 59mb |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
Here are some improvements I came up with while working with bootc lately. They are by no means ready to merge (and vibed). Hopefully they are an inspiration.
Here is a small summary.