Skip to content

Commit fdb91fe

Browse files
committed
package: move to compare version instead of timestamp
Use `rpm::Evr` crate to parse and compare `version` when checking for update. Inspired by Timothee's pointer: #938 (comment) Fixes: #933 Additional info: Use rpm `0.16.1` instead of `0.17` as 1.84 does not support feature `edition2024` that is requried by 0.17: ``` error: failed to parse manifest at `/root/.cargo/registry/src/ index.crates.io-6f17d22bba15001f/rpm-0.17.0/Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.84.1 (66221abde 2024-11-19)). ```
1 parent a455a41 commit fdb91fe

File tree

5 files changed

+400
-38
lines changed

5 files changed

+400
-38
lines changed

Cargo.lock

Lines changed: 203 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ openat-ext = ">= 0.2.2, < 0.3.0"
4141
openssl = "^0.10"
4242
os-release = "0.1.0"
4343
regex = "1.11.1"
44+
rpm = { version = "0.16.1", default-features = false }
4445
rustix = { version = "1.0.8", features = ["process", "fs"] }
4546
serde = { version = "^1.0", features = ["derive"] }
4647
serde_json = "^1.0"

src/bootupd.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,11 @@ pub(crate) fn update(name: &str, rootcxt: &RootContext) -> Result<ComponentUpdat
232232
let sysroot = &rootcxt.sysroot;
233233
let update = component.query_update(sysroot)?;
234234
let update = match update.as_ref() {
235-
Some(p) if inst.meta.can_upgrade_to(p) => p,
236-
_ => return Ok(ComponentUpdateResult::AtLatestVersion),
235+
Some(p) => match inst.meta.can_upgrade_to(p) {
236+
std::cmp::Ordering::Less => p, // current < available -> upgrade
237+
_ => return Ok(ComponentUpdateResult::AtLatestVersion),
238+
},
239+
None => return Ok(ComponentUpdateResult::AtLatestVersion),
237240
};
238241

239242
ensure_writable_boot()?;

0 commit comments

Comments
 (0)