From fa3e4726b7df7701ed8b302a1748e77a7ed2bcbf Mon Sep 17 00:00:00 2001 From: Tom van Dijk <18gatenmaker6@gmail.com> Date: Mon, 17 Feb 2025 02:41:34 +0100 Subject: [PATCH] fix: uBlue OS should be detected as FedoraImmutable (#1043) * refactor(parse_os_release): Don't rely on specific `ID`s for Fedora Immutable Instead match `ID=fedora` or `ID_LIKE=fedora` and decide wether or not the distro is immutable by `VARIANT`. * feat: add aurora,bluefin,coreos support The `os_release`s came from the following images: - ghcr.io/ublue-os/aurora:93f0fd9f20b3 - ghcr.io/ublue-os/bluefin:5d37394a5d4b - ghcr.io/ublue-os/ucore:63cd1200c344 * fix: bazzite should be detected as FedoraImmutable * squash me: cargo fmt --------- Co-authored-by: Steve Lau --- src/steps/os/linux.rs | 45 +++++++++++++++++++++++---------- src/steps/os/os_release/aurora | 23 +++++++++++++++++ src/steps/os/os_release/bazzite | 25 ++++++++++++++++++ src/steps/os/os_release/bluefin | 24 ++++++++++++++++++ src/steps/os/os_release/coreos | 23 +++++++++++++++++ 5 files changed, 126 insertions(+), 14 deletions(-) create mode 100644 src/steps/os/os_release/aurora create mode 100644 src/steps/os/os_release/bazzite create mode 100644 src/steps/os/os_release/bluefin create mode 100644 src/steps/os/os_release/coreos diff --git a/src/steps/os/linux.rs b/src/steps/os/linux.rs index f36f5c61..313533a8 100644 --- a/src/steps/os/linux.rs +++ b/src/steps/os/linux.rs @@ -60,19 +60,7 @@ impl Distribution { Some("wolfi") => Distribution::Wolfi, Some("centos") | Some("rhel") | Some("ol") => Distribution::CentOS, Some("clear-linux-os") => Distribution::ClearLinux, - Some("fedora") => { - return if let Some(variant) = variant { - match variant { - "Silverblue" | "Kinoite" | "Sericea" | "Onyx" | "IoT Edition" | "Sway Atomic" => { - Ok(Distribution::FedoraImmutable) - } - _ => Ok(Distribution::Fedora), - } - } else { - Ok(Distribution::Fedora) - }; - } - + Some("fedora") => Distribution::match_fedora_variant(&variant), Some("nilrt") => Distribution::NILRT, Some("nobara") => Distribution::Nobara, Some("void") => Distribution::Void, @@ -109,7 +97,7 @@ impl Distribution { } else if id_like.contains(&"alpine") { return Ok(Distribution::Alpine); } else if id_like.contains(&"fedora") { - return Ok(Distribution::Fedora); + return Ok(Distribution::match_fedora_variant(&variant)); } } return Err(TopgradeError::UnknownLinuxDistribution.into()); @@ -117,6 +105,15 @@ impl Distribution { }) } + fn match_fedora_variant(variant: &Option<&str>) -> Self { + if let Some("Silverblue" | "Kinoite" | "Sericea" | "Onyx" | "IoT Edition" | "Sway Atomic" | "CoreOS") = variant + { + Distribution::FedoraImmutable + } else { + Distribution::Fedora + } + } + pub fn detect() -> Result { if PathBuf::from("/bedrock").exists() { return Ok(Distribution::Bedrock); @@ -1288,4 +1285,24 @@ mod tests { fn test_nilrt() { test_template(include_str!("os_release/nilrt"), Distribution::NILRT); } + + #[test] + fn test_coreos() { + test_template(include_str!("os_release/coreos"), Distribution::FedoraImmutable); + } + + #[test] + fn test_aurora() { + test_template(include_str!("os_release/aurora"), Distribution::FedoraImmutable); + } + + #[test] + fn test_bluefin() { + test_template(include_str!("os_release/bluefin"), Distribution::FedoraImmutable); + } + + #[test] + fn test_bazzite() { + test_template(include_str!("os_release/bazzite"), Distribution::FedoraImmutable); + } } diff --git a/src/steps/os/os_release/aurora b/src/steps/os/os_release/aurora new file mode 100644 index 00000000..3b209a1b --- /dev/null +++ b/src/steps/os/os_release/aurora @@ -0,0 +1,23 @@ +NAME="Aurora" +VERSION="latest-41.20250210.4 (Kinoite)" +RELEASE_TYPE=stable +ID=aurora +ID_LIKE="fedora" +VERSION_ID=41 +VERSION_CODENAME="" +PLATFORM_ID="platform:f41" +PRETTY_NAME="Aurora (Version: latest-41.20250210.4 / FROM Fedora Kinoite 41)" +ANSI_COLOR="0;38;2;60;110;180" +LOGO=fedora-logo-icon +CPE_NAME="cpe:/o:universal-blue:aurora:41" +DEFAULT_HOSTNAME="aurora" +HOME_URL="https://getaurora.dev/" +DOCUMENTATION_URL="https://docs.getaurora.dev" +SUPPORT_URL="https://github.com/ublue-os/aurora/issues/" +BUG_REPORT_URL="https://github.com/ublue-os/aurora/issues/" +SUPPORT_END=2025-12-15 +VARIANT="Kinoite" +VARIANT_ID=aurora +OSTREE_VERSION='latest-41.20250210.4' +BUILD_ID="fc1570c" +IMAGE_ID="aurora" diff --git a/src/steps/os/os_release/bazzite b/src/steps/os/os_release/bazzite new file mode 100644 index 00000000..3b34bd02 --- /dev/null +++ b/src/steps/os/os_release/bazzite @@ -0,0 +1,25 @@ +NAME="Bazzite" +VERSION="41.20250208.0 (Kinoite)" +RELEASE_TYPE=stable +ID=bazzite +ID_LIKE="fedora" +VERSION_ID=41 +VERSION_CODENAME="Holographic" +PLATFORM_ID="platform:f41" +PRETTY_NAME="Bazzite 41 (FROM Fedora Kinoite)" +ANSI_COLOR="0;38;2;138;43;226" +LOGO=bazzite-logo-icon +CPE_NAME="cpe:/o:universal-blue:bazzite:41" +DEFAULT_HOSTNAME="bazzite" +HOME_URL="https://bazzite.gg" +DOCUMENTATION_URL="https://docs.bazzite.gg" +SUPPORT_URL="https://discord.bazzite.gg" +BUG_REPORT_URL="https://github.com/ublue-os/bazzite/issues/" +SUPPORT_END=2025-12-15 +VARIANT="Kinoite" +VARIANT_ID=bazzite-nvidia-open +OSTREE_VERSION='41.20250208.0' +BUILD_ID="Stable (F41.20250208)" +BOOTLOADER_NAME="Bazzite Stable (F41.20250208)" +BUILD_ID="Stable (F41.20250208)" +BOOTLOADER_NAME="Bazzite Stable (F41.20250208)" \ No newline at end of file diff --git a/src/steps/os/os_release/bluefin b/src/steps/os/os_release/bluefin new file mode 100644 index 00000000..d6c709a3 --- /dev/null +++ b/src/steps/os/os_release/bluefin @@ -0,0 +1,24 @@ +NAME="Bluefin" +VERSION="41.20250216.1 (Silverblue)" +RELEASE_TYPE=stable +ID=bluefin +ID_LIKE="fedora" +VERSION_ID=41 +VERSION_CODENAME="Archaeopteryx" +PLATFORM_ID="platform:f41" +PRETTY_NAME="Bluefin (Version: 41.20250216.1 / FROM Fedora Silverblue 41)" +ANSI_COLOR="0;38;2;60;110;180" +LOGO=fedora-logo-icon +CPE_NAME="cpe:/o:universal-blue:bluefin:41" +DEFAULT_HOSTNAME="bluefin" +HOME_URL="https://projectbluefin.io" +DOCUMENTATION_URL="https://docs.projectbluefin.io" +SUPPORT_URL="https://github.com/ublue-os/bluefin/issues/" +BUG_REPORT_URL="https://github.com/ublue-os/bluefin/issues/" +SUPPORT_END=2025-12-15 +VARIANT="Silverblue" +VARIANT_ID=bluefin +OSTREE_VERSION='41.20250216.1' +BUILD_ID="185146a" +IMAGE_ID="bluefin" +IMAGE_VERSION="41.20250216.1" diff --git a/src/steps/os/os_release/coreos b/src/steps/os/os_release/coreos new file mode 100644 index 00000000..05940471 --- /dev/null +++ b/src/steps/os/os_release/coreos @@ -0,0 +1,23 @@ +NAME="Fedora Linux" +VERSION="41.20250117.3.0 (CoreOS)" +RELEASE_TYPE=stable +ID=fedora +VERSION_ID=41 +VERSION_CODENAME="" +PLATFORM_ID="platform:f41" +PRETTY_NAME="Fedora CoreOS 41.20250117.3.0 (uCore)" +ANSI_COLOR="0;38;2;60;110;180" +LOGO=fedora-logo-icon +CPE_NAME="cpe:/o:fedoraproject:fedora:41" +HOME_URL="https://getfedora.org/coreos/" +DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora-coreos/" +SUPPORT_URL="https://github.com/coreos/fedora-coreos-tracker/" +BUG_REPORT_URL="https://github.com/coreos/fedora-coreos-tracker/" +REDHAT_BUGZILLA_PRODUCT="Fedora" +REDHAT_BUGZILLA_PRODUCT_VERSION=41 +REDHAT_SUPPORT_PRODUCT="Fedora" +REDHAT_SUPPORT_PRODUCT_VERSION=41 +SUPPORT_END=2025-12-15 +VARIANT="CoreOS" +VARIANT_ID=coreos +OSTREE_VERSION='41.20250117.3.0'