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 <stevelauc@outlook.com>
This commit is contained in:
@@ -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<Self> {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
23
src/steps/os/os_release/aurora
Normal file
23
src/steps/os/os_release/aurora
Normal file
@@ -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"
|
||||
25
src/steps/os/os_release/bazzite
Normal file
25
src/steps/os/os_release/bazzite
Normal file
@@ -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)"
|
||||
24
src/steps/os/os_release/bluefin
Normal file
24
src/steps/os/os_release/bluefin
Normal file
@@ -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"
|
||||
23
src/steps/os/os_release/coreos
Normal file
23
src/steps/os/os_release/coreos
Normal file
@@ -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'
|
||||
Reference in New Issue
Block a user