- Handle multiple initrd entries.
- Add support for machine-id and sort-key.
To do this we can't just map the keys into JSON because we need
to handle multiple values. Switch to a manual parser.
Assisted-by: Gemini CLI+gemini-2.5-pro
Signed-off-by: Colin Walters <walters@verbum.org>
A while ago we added a trait in preparation for multiple backends.
The current composefs branch ignores it and has a bunch of
`if {} else {}`.
Looking at this, what I think will work better in the end is
actually a more refined version of the `if {} else {}` model
instead of trying to really flesh out this trait. It's
hard to say of course until we get there, but the trait
approach forces a high level of abstraction vs just trying
to factor out common code between two backends.
Signed-off-by: Colin Walters <walters@verbum.org>
Without the "internals" prefix, bootc fails to spawn the
loopback-cleanup-helper because the helper is only available
under the `bootc internals` subcommand.
This patch updates the spawned command to include "internals" before
the helper name so it runs as intended.
Signed-off-by: Sam Dasilva <samuelramos852@gmail.com>
Split `dependencies` into three sections:
- Internal deps (crates in the same workspace)
- Workspace deps
- Deps only used by that sub-crate
Also make everything alphabetical.
Assisted-by: Claude Code
Signed-off-by: Colin Walters <walters@verbum.org>
This adds scaffolding to install a stub binary which can
optionally be added into the initramfs;
prep for us doing real work during setup as we aim
to move to the native composefs backend.
The binary is *built* but is only installed by a
new `Makefile` target, so existing build system
users won't pick it up. Our development-only
`Dockerfile` gains a build option to use it
(and also ensures the initramfs is regenerated).
However previously we also discussed moving the fstab
logic into the initramfs:
https://github.com/bootc-dev/bootc/pull/1113
I might try doing that once this lands.
One notable thing is that even this trivial nearly-no-op
binary is still 4MB which I think is mostly due
to linking in a whole copy of prebuilt rust `std`.
In theory we could try going to `#[no_std]` but I
don't think it'll be viable once we start doing more here.
Probably most practical thing re size is `-Z build-std` + LTO.
Signed-off-by: Colin Walters <walters@verbum.org>
This uses the token generated in the GitHub app that has a limited
scope. Also refactors the commit/push steps to use the
create-pull-request action rather than manually committing and pushing.
This simplifies the token usage when committing/pushing.
Signed-off-by: ckyrouac <ckyrouac@redhat.com>
This modifies the scheduled release to happen every 3 weeks regardless
of when the previous release happened. This aligns with the team's
schedule.
Assisted-by: Claude code
Signed-off-by: ckyrouac <ckyrouac@redhat.com>
I don't think anything should use to_lossy() by default.
It's great to have a correct kernel argument parser that
doesn't bomb on non-UTF8 but at the same time in our code
we can just I think ignore kernel arguments which aren't UTF-8.
Maybe we should warn if e.g. we find a `root=<nonutf8` or
so but eh.
Everything else in the bootc codebase works in terms of
strings so let's just make it really easy to only
get strings out.
Implementation notes:
- I struggled with lifetimes in this one and couldn't
get it to work to reuse the Parameter (byte oriented)
parser and just reimplemented it in the str path
- When I tossed this problem at both Claude and Gemini
they both gave up; and Gemini ended up deleting
all the code and declaring success
Unit tests (after I manually fixed up all the lifetime
stuff in the core code) are
Assisted-by: Gemini-CLI
Signed-off-by: Colin Walters <walters@verbum.org>
In some cases we want to return the value exactly as it
was originally.
Also drop the test-only APIs, those were really never needed.
Signed-off-by: Colin Walters <walters@verbum.org>
Update the autovendor GitHub workflow to use the correct path 'crates/cli'
instead of 'cli', which was causing the job to fail with "No such file or
directory" error.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: John Eckersberg <jeckersb@redhat.com>
It's confusing we have both kargs.rs and kernel.rs where
the latter is also handling kernel arguments.
Clarify what this does.
Signed-off-by: Colin Walters <walters@verbum.org>