Skip to content

Commit 08c57d5

Browse files
committed
Update roadmap and add Clippy CI
1 parent d67a324 commit 08c57d5

5 files changed

Lines changed: 24 additions & 9 deletions

File tree

‎.github/workflows/checks.yml‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ jobs:
4545
cargo test --all-targets
4646
fi
4747
48+
- name: Rust Clippy
49+
run: cargo clippy --all-targets -- -D warnings
50+
4851
- name: Rust compile check
4952
run: |
5053
if [[ -f Cargo.lock ]]; then

‎README.md‎

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ sudo cp target/release/rustyuki /usr/local/bin/
102102

103103
```bash
104104
rustyuki --version
105+
# rustyuki 0.2.0
105106
```
106107

107108
> [!NOTE]
@@ -513,17 +514,22 @@ These projects and tools shaped both the current implementation and the roadmap
513514
## Roadmap
514515

515516
> [!NOTE]
516-
> The roadmap below incorporates ideas derived from comparing RustyUKI against **kraxel/fedora-uki** and **rhboot/nmbl-builder**, alongside features already planned for RustyUKI itself. Items remain grouped roughly by implementation effort and expected impact.
517+
> The roadmap below incorporates ideas derived from comparing RustyUKI against **kraxel/fedora-uki** and **rhboot/nmbl-builder**, alongside features already planned for RustyUKI itself. Shipped items were moved out so this section only tracks work that is still open.
518+
519+
### Recently shipped
520+
521+
- **BootNext trial boot workflow** — `--boot-once` now schedules a one-time trial boot and `rustyuki confirm` promotes the successful entry afterward.
522+
- **ESP preflight validation** — generation now checks mount presence, mount state, free space, and output directory writability before writing a UKI.
523+
- **Fedora `kernel-install` hook support** — RustyUKI can install a plugin so kernel add/remove events trigger reconciliation automatically.
524+
- **Multi-kernel reconciliation and stale artifact cleanup** — `rustyuki reconcile` rebuilds installed kernels and prunes stale `linux-*.efi` outputs.
525+
- **RPM workflow consolidation** — Fedora RPM CI and scheduled release automation now live in the single `rpm.yml` workflow.
517526

518527
### 1. Safety & Boot Entry Management
519528

520-
- [ ] **`--boot-once` / BootNext trial boot** — add a safer first-boot workflow using `efibootmgr --bootnext`, plus a follow-up `rustyuki confirm` command to make a successfully tested UKI permanent.
521529
- [ ] **Secure Boot cmdline guard** — detect active Secure Boot, warn when cmdline changes require a rebuild/re-sign, and track cmdline hashes beside installed UKIs.
522-
- [ ] **ESP mount validation** — add preflight checks for mount state, read-write access, free space, and output directory writability before any build starts.
523530

524531
### 2. Fedora Integration
525532

526-
- [ ] **`kernel-install` plugin** — ship a Fedora-friendly plugin so kernel add/remove events can automatically build or prune UKIs.
527533
- [ ] **Boot environment awareness in `status`** — surface EFI boot entry details via `kernel-bootcfg --show` when available, with `efibootmgr -v` as a fallback.
528534
- [ ] **GPT autodiscovery advisory** — detect discoverable root partitions and warn when `root=` is redundant or stale.
529535
- [ ] **Supported architectures** — keep short-term guards in place for x86_64-only assumptions today, while planning full aarch64 support later.
@@ -541,15 +547,13 @@ These projects and tools shaped both the current implementation and the roadmap
541547
- [ ] **Atomic write with rollback slot** — preserve the previous UKI as a `.prev` image and add a `rustyuki rollback` command for recovery.
542548
- [ ] **Multi-profile UKI support** — allow multiple named build profiles from one config for default, recovery, cloud, or hardware-specific UKIs.
543549
- [ ] **Rootfs validation and fix-up** — cross-check `root=` against the running system in `status` and add a `rustyuki fix-cmdline` helper.
544-
- [ ] **Multi-kernel management** — continue improving kernel-version tracking and cleanup of stale UKIs and entries.
545550
- [ ] **Fallback UKI pinning** — protect a designated "last known good" UKI from accidental replacement.
546551
- [ ] **Automated pre-flight validation** — continue expanding built-in safety checks before every build.
547552

548553
### 5. CI, Packaging & Releases
549554

550555
- [ ] **Packaged releases** — publish pre-built binaries via GitHub Releases with SHA256 checksums.
551556
- [ ] **RPM spec packaging** — complete `dnf install rustyuki` support for Fedora-based systems.
552-
- [ ] **Workflow consolidation** — merge overlapping RPM workflows into a single `rpm.yml` pipeline with separate CI and release jobs.
553557
- [ ] **Clippy in CI** — add `cargo clippy --all-targets -- -D warnings` as a required check.
554558
- [ ] **Pinned Fedora container digests** — pin workflow container images for better reproducibility.
555559

‎src/efi.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ fn statvfs_free_bytes(path: &Path) -> Result<u64> {
341341
}
342342

343343
let stats = unsafe { stats.assume_init() };
344-
Ok((stats.f_bavail as u64).saturating_mul(stats.f_frsize as u64))
344+
Ok(stats.f_bavail.saturating_mul(stats.f_frsize))
345345
}
346346

347347
fn ensure_path_writable(path: &Path) -> Result<()> {

‎src/kernel.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ pub fn resolve_cmdline(runner: &dyn CommandRunner, settings: &CmdlineSettings) -
5555
let current_major = major_version(&version_id);
5656

5757
if settings.auto_detect {
58-
if let Some(cached) = load_cached_cmdline(settings, &version_id, &current_major)? {
58+
if let Some(cached) = load_cached_cmdline(settings, &version_id, current_major)? {
5959
return validate_final_cmdline(
6060
runner,
6161
&cached.value,

‎tests/integration_cli.rs‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#![allow(dead_code)]
21
use anyhow::{anyhow, Result};
32
use std::cell::RefCell;
43
use std::collections::VecDeque;
@@ -15,22 +14,31 @@ fn test_esp_mountpoint() -> PathBuf {
1514
panic!("no writable mount point available for ESP integration tests");
1615
}
1716

17+
#[allow(dead_code)]
1818
#[path = "../src/app.rs"]
1919
mod app;
20+
#[allow(dead_code)]
2021
#[path = "../src/cli.rs"]
2122
mod cli;
23+
#[allow(dead_code)]
2224
#[path = "../src/cmd.rs"]
2325
mod cmd;
26+
#[allow(dead_code)]
2427
#[path = "../src/config.rs"]
2528
mod config;
29+
#[allow(dead_code)]
2630
#[path = "../src/dracut.rs"]
2731
mod dracut;
32+
#[allow(dead_code)]
2833
#[path = "../src/efi.rs"]
2934
mod efi;
35+
#[allow(dead_code)]
3036
#[path = "../src/error.rs"]
3137
mod error;
38+
#[allow(dead_code)]
3239
#[path = "../src/kernel.rs"]
3340
mod kernel;
41+
#[allow(dead_code)]
3442
#[path = "../src/ukify.rs"]
3543
mod ukify;
3644

0 commit comments

Comments
 (0)