feat: add bootc support to Fedora atomic distros
* feat(bootc): add Bootc support + docs Co-authored-by: Steve Lau <stevelauc@outlook.com> * docs(bootc): specify that itll supercede rpm-ostree if enabled :p --------- Co-authored-by: Steve Lau <stevelauc@outlook.com>
This commit is contained in:
@@ -172,6 +172,11 @@
|
|||||||
|
|
||||||
# rpm_ostree = false
|
# rpm_ostree = false
|
||||||
|
|
||||||
|
# For Fedora/CentOS/RHEL Atomic variants, if `bootc` is available and this configuration entry is set to true, use
|
||||||
|
# it to do the update - Will also supercede rpm-ostree if enabled
|
||||||
|
# (default: false)
|
||||||
|
# bootc = false
|
||||||
|
|
||||||
# nix_arguments = "--flake"
|
# nix_arguments = "--flake"
|
||||||
|
|
||||||
# nix_env_arguments = "--prebuilt-only"
|
# nix_env_arguments = "--prebuilt-only"
|
||||||
|
|||||||
@@ -358,6 +358,7 @@ pub struct Linux {
|
|||||||
redhat_distro_sync: Option<bool>,
|
redhat_distro_sync: Option<bool>,
|
||||||
suse_dup: Option<bool>,
|
suse_dup: Option<bool>,
|
||||||
rpm_ostree: Option<bool>,
|
rpm_ostree: Option<bool>,
|
||||||
|
bootc: Option<bool>,
|
||||||
|
|
||||||
#[merge(strategy = crate::utils::merge_strategies::string_append_opt)]
|
#[merge(strategy = crate::utils::merge_strategies::string_append_opt)]
|
||||||
emerge_sync_flags: Option<String>,
|
emerge_sync_flags: Option<String>,
|
||||||
@@ -1457,6 +1458,15 @@ impl Config {
|
|||||||
.unwrap_or(false)
|
.unwrap_or(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Use bootc in *when bootc is detected* (default: false)
|
||||||
|
pub fn bootc(&self) -> bool {
|
||||||
|
self.config_file
|
||||||
|
.linux
|
||||||
|
.as_ref()
|
||||||
|
.and_then(|linux| linux.bootc)
|
||||||
|
.unwrap_or(false)
|
||||||
|
}
|
||||||
|
|
||||||
/// Determine if we should ignore failures for this step
|
/// Determine if we should ignore failures for this step
|
||||||
pub fn ignore_failure(&self, step: Step) -> bool {
|
pub fn ignore_failure(&self, step: Step) -> bool {
|
||||||
self.config_file
|
self.config_file
|
||||||
|
|||||||
@@ -225,7 +225,12 @@ fn upgrade_wolfi_linux(ctx: &ExecutionContext) -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn upgrade_redhat(ctx: &ExecutionContext) -> Result<()> {
|
fn upgrade_redhat(ctx: &ExecutionContext) -> Result<()> {
|
||||||
if let Some(ostree) = which("rpm-ostree") {
|
if let Some(bootc) = which("bootc") {
|
||||||
|
if ctx.config().bootc() {
|
||||||
|
let sudo = require_option(ctx.sudo().as_ref(), get_require_sudo_string())?;
|
||||||
|
return ctx.run_type().execute(sudo).arg(&bootc).arg("upgrade").status_checked();
|
||||||
|
}
|
||||||
|
} else if let Some(ostree) = which("rpm-ostree") {
|
||||||
if ctx.config().rpm_ostree() {
|
if ctx.config().rpm_ostree() {
|
||||||
let mut command = ctx.run_type().execute(ostree);
|
let mut command = ctx.run_type().execute(ostree);
|
||||||
command.arg("upgrade");
|
command.arg("upgrade");
|
||||||
@@ -298,6 +303,13 @@ fn upgrade_nilrt(ctx: &ExecutionContext) -> Result<()> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn upgrade_fedora_immutable(ctx: &ExecutionContext) -> Result<()> {
|
fn upgrade_fedora_immutable(ctx: &ExecutionContext) -> Result<()> {
|
||||||
|
if let Some(bootc) = which("bootc") {
|
||||||
|
if ctx.config().bootc() {
|
||||||
|
let sudo = require_option(ctx.sudo().as_ref(), get_require_sudo_string())?;
|
||||||
|
return ctx.run_type().execute(sudo).arg(&bootc).arg("upgrade").status_checked();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let ostree = require("rpm-ostree")?;
|
let ostree = require("rpm-ostree")?;
|
||||||
let mut command = ctx.run_type().execute(ostree);
|
let mut command = ctx.run_type().execute(ostree);
|
||||||
command.arg("upgrade");
|
command.arg("upgrade");
|
||||||
|
|||||||
Reference in New Issue
Block a user