From abedf4fc6b63ed5d43976e7fb010335dfd72fd1a Mon Sep 17 00:00:00 2001 From: Gerald Pinder Date: Thu, 16 May 2024 20:15:14 -0400 Subject: [PATCH] fix: Use leniency for semver parsing (#184) --- Cargo.lock | 30 ++++++++++++++++++++++++++++++ Cargo.toml | 1 + integration-tests/Earthfile | 15 ++++++++++++++- src/image_metadata.rs | 3 +-- 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 97a0e12..292af5a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -203,6 +203,7 @@ dependencies = [ "dunce", "env_logger", "fuzzy-matcher", + "lenient_semver", "log", "once_cell", "open", @@ -812,6 +813,35 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +[[package]] +name = "lenient_semver" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de8de3f4f3754c280ce1c8c42ed8dd26a9c8385c2e5ad4ec5a77e774cea9c1ec" +dependencies = [ + "lenient_semver_parser", + "semver", +] + +[[package]] +name = "lenient_semver_parser" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f650c1d024ddc26b4bb79c3076b30030f2cf2b18292af698c81f7337a64d7d6" +dependencies = [ + "lenient_semver_version_builder", + "semver", +] + +[[package]] +name = "lenient_semver_version_builder" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9049f8ff49f75b946f95557148e70230499c8a642bf2d6528246afc7d0282d17" +dependencies = [ + "semver", +] + [[package]] name = "libc" version = "0.2.153" diff --git a/Cargo.toml b/Cargo.toml index 968e4fa..00a8176 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,6 +60,7 @@ clap-verbosity-flag = "2" clap_complete = "4" clap_complete_nushell = "4" fuzzy-matcher = "0.3" +lenient_semver = "0.4.2" once_cell = "1.19.0" open = "5" os_info = "3.7" # update os module config and tests when upgrading os_info diff --git a/integration-tests/Earthfile b/integration-tests/Earthfile index 419bb4a..5f268ec 100644 --- a/integration-tests/Earthfile +++ b/integration-tests/Earthfile @@ -30,6 +30,13 @@ test-secureblue: DO +RUN_TESTS +test-secureblue-ucore: + FROM +build-template --src=template-secureblue-ucore + WORKDIR /tmp/test + COPY ./test-scripts/secureblue/*.sh ./ + + DO +RUN_TESTS + build-template: ARG --required src FROM DOCKERFILE \ @@ -50,7 +57,13 @@ template-legacy-containerfile: template-secureblue: FROM +secureblue-base - RUN bluebuild -vv template -o Containerfile config/recipes/general/recipe-silverblue-nvidia.yml + RUN bluebuild -vv template -o Containerfile recipes/general/recipe-silverblue-nvidia.yml + + SAVE ARTIFACT /test + +template-secureblue-ucore: + FROM +secureblue-base + RUN bluebuild -vv template -o Containerfile recipes/server/recipe-server-main.yml SAVE ARTIFACT /test diff --git a/src/image_metadata.rs b/src/image_metadata.rs index 36631ee..4ad06b0 100644 --- a/src/image_metadata.rs +++ b/src/image_metadata.rs @@ -1,5 +1,4 @@ use blue_build_utils::constants::IMAGE_VERSION_LABEL; -use semver::Version; use serde::Deserialize; use serde_json::Value; use std::collections::HashMap; @@ -20,7 +19,7 @@ impl ImageMetadata { self.labels .get(IMAGE_VERSION_LABEL)? .as_str() - .and_then(|v| Version::parse(v).ok())? + .and_then(|v| lenient_semver::parse(v).ok())? .major, ) }