public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/rust-bootupd] f45: Revert PR #1139 to fix UEFI ostree installs
@ 2026-09-14  9:34 Adam Williamson
  0 siblings, 0 replies; only message in thread
From: Adam Williamson @ 2026-09-14  9:34 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/rust-bootupd
            Branch : f45
            Commit : 4ddb9068221689f572b7ceef9b16392b7058171b
            Author : Adam Williamson <awilliam@redhat.com>
            Date   : 2026-08-21T20:59:05-07:00
            Stats  : +528/-0 in 5 file(s)
            URL    : https://src.fedoraproject.org/rpms/rust-bootupd/c/4ddb9068221689f572b7ceef9b16392b7058171b?branch=f45

            Log:
            Revert PR #1139 to fix UEFI ostree installs

See https://github.com/coreos/bootupd/issues/1139

---
diff --git a/0001-Revert-Fix-grub-static-config-install.patch b/0001-Revert-Fix-grub-static-config-install.patch
new file mode 100644
index 0000000..c9750fe
--- /dev/null
+++ b/0001-Revert-Fix-grub-static-config-install.patch
@@ -0,0 +1,171 @@
+From cd7b27e6c4dfcd28848fa98f19981e9d5af9451a Mon Sep 17 00:00:00 2001
+From: Adam Williamson <awilliam@redhat.com>
+Date: Fri, 21 Aug 2026 15:08:18 -0700
+Subject: [PATCH 1/4] Revert "Fix grub static config install"
+
+This reverts commit 883c7a888d16991672cf9b9d06ff74a4d2b11297.
+---
+ src/bios.rs        |  2 +-
+ src/bootupd.rs     | 25 -------------------------
+ src/efi.rs         | 11 +++--------
+ src/grubconfigs.rs | 21 ++++++---------------
+ 4 files changed, 10 insertions(+), 49 deletions(-)
+
+diff --git a/src/bios.rs b/src/bios.rs
+index 1263d8a..a638df6 100644
+--- a/src/bios.rs
++++ b/src/bios.rs
+@@ -211,7 +211,7 @@ impl Component for Bios {
+                 .context("Failed to backup GRUB config")?;
+         }
+ 
+-        crate::grubconfigs::install(&destdir, None, None, true, None)?;
++        crate::grubconfigs::install(&destdir, None, None, true)?;
+ 
+         // Remove the real config if it is symlink and will not
+         // if /boot/grub2/grub.cfg is file
+diff --git a/src/bootupd.rs b/src/bootupd.rs
+index bdad9ff..72266a3 100644
+--- a/src/bootupd.rs
++++ b/src/bootupd.rs
+@@ -276,36 +276,11 @@ pub(crate) fn install(opts: &InstallOpts, devices: &[Device], configs: ConfigMod
+             Some(uuid) => {
+                 let meta = get_static_config_meta()?;
+                 state.static_configs = Some(meta);
+-
+-                let mut esp_dir = None;
+-
+-                #[cfg(efi_arch)]
+-                {
+-                    for c in &target_components {
+-                        use crate::efi::Efi;
+-
+-                        if let Some(efi) = c.as_any().downcast_ref::<Efi>() {
+-                            let mounted_esp_path = efi.get_esp_mountpoint();
+-                            let mounted_esp_path = mounted_esp_path.as_ref().ok_or_else(|| {
+-                                anyhow!("Mounted ESP not found to install static grub config")
+-                            })?;
+-
+-                            esp_dir = Some(
+-                                Dir::open_ambient_dir(mounted_esp_path, ambient_authority())
+-                                    .context("Opening mounted ESP dir")?,
+-                            );
+-
+-                            break;
+-                        }
+-                    }
+-                }
+-
+                 crate::grubconfigs::install(
+                     sysroot,
+                     Some(&source_root_dir),
+                     installed_efi_vendor.as_deref(),
+                     uuid,
+-                    esp_dir.as_ref(),
+                 )?;
+             }
+             // On other architectures, assume that there's nothing to do.
+diff --git a/src/efi.rs b/src/efi.rs
+index 834e35f..4c9d2cc 100644
+--- a/src/efi.rs
++++ b/src/efi.rs
+@@ -181,11 +181,6 @@ impl Efi {
+         }
+     }
+ 
+-    /// Returns the ESP's mountpoint if present
+-    pub(crate) fn get_esp_mountpoint(&self) -> std::cell::Ref<'_, Option<PathBuf>> {
+-        self.mountpoint.borrow()
+-    }
+-
+     /// Checks if we have already mounted the ESP
+     /// If not, checks if the ESP is mounted at common mountpoints, i.e. /boot, /boot/efi
+     /// Else, mounts the ESP at a temp path
+@@ -374,7 +369,7 @@ impl Component for Efi {
+ 
+     // Backup "/boot/efi/EFI/{vendor}/grub.cfg" to "/boot/efi/EFI/{vendor}/grub.cfg.bak"
+     // Replace "/boot/efi/EFI/{vendor}/grub.cfg" with new static "grub.cfg"
+-    fn migrate_static_grub_config(&self, sysroot_path: &str, dest_efi_dir: &Dir) -> Result<()> {
++    fn migrate_static_grub_config(&self, sysroot_path: &str, destdir: &Dir) -> Result<()> {
+         let sysroot = Dir::open_ambient_dir(sysroot_path, ambient_authority())
+             .with_context(|| format!("Opening {sysroot_path}"))?;
+         let Some(vendor) = self.get_efi_vendor(&Path::new(sysroot_path))? else {
+@@ -382,7 +377,7 @@ impl Component for Efi {
+         };
+ 
+         // destdir is /boot/efi/EFI
+-        let efidir = dest_efi_dir
++        let efidir = destdir
+             .open_dir(&vendor)
+             .with_context(|| format!("Opening EFI/{}", vendor))?;
+ 
+@@ -397,7 +392,7 @@ impl Component for Efi {
+                 .context("Failed to backup GRUB config")?;
+         }
+ 
+-        grubconfigs::install(&sysroot, None, Some(&vendor), true, Some(&efidir))?;
++        grubconfigs::install(&sysroot, None, Some(&vendor), true)?;
+         // Synchronize the filesystem containing /boot/efi/EFI/{vendor} to disk.
+         fsfreeze_thaw_cycle(efidir.reopen_as_ownedfd()?)?;
+ 
+diff --git a/src/grubconfigs.rs b/src/grubconfigs.rs
+index f06180e..476f934 100644
+--- a/src/grubconfigs.rs
++++ b/src/grubconfigs.rs
+@@ -34,7 +34,6 @@ pub(crate) fn install(
+     src_root: Option<&Dir>,
+     installed_efi_vendor: Option<&str>,
+     write_uuid: bool,
+-    mounted_esp: Option<&Dir>,
+ ) -> Result<()> {
+     let bootdir = &target_root.open_dir("boot").context("Opening /boot")?;
+     let boot_is_mount = {
+@@ -44,7 +43,6 @@ pub(crate) fn install(
+         root_dev != boot_dev
+     };
+ 
+-    // This is in /sysroot/boot
+     if !bootdir.exists(GRUB2DIR) {
+         let mut dir_options = DirBuilder::new();
+         dir_options.recursive(true).mode(0o700);
+@@ -132,16 +130,16 @@ pub(crate) fn install(
+ 
+     if let Some(vendordir) = installed_efi_vendor {
+         log::debug!("vendordir={:?}", &vendordir);
+-        let vendor = PathBuf::from("EFI").join(vendordir);
++        let vendor = PathBuf::from(vendordir);
+         let target = &vendor.join("grub.cfg");
+-
+-        if let Some(efidir) = mounted_esp {
++        let dest_efidir = target_root
++            .open_dir_optional("boot/efi/EFI")
++            .context("Opening /boot/efi/EFI")?;
++        if let Some(efidir) = dest_efidir {
+             configdir
+                 .copy("grub-static-efi.cfg", &efidir, target)
+                 .context("Copying static EFI")?;
+-
+             println!("Installed: {target:?}");
+-
+             if let Some(uuid_path) = uuid_path {
+                 let target = &vendor.join(uuid_path);
+                 grub2dir
+@@ -218,14 +216,7 @@ mod tests {
+         std::fs::create_dir_all(tdp.join("boot/grub2"))?;
+         std::fs::create_dir_all(tdp.join("boot/efi/EFI/BOOT"))?;
+         std::fs::create_dir_all(tdp.join("boot/efi/EFI/fedora"))?;
+-        install(
+-            &td,
+-            None,
+-            Some("fedora"),
+-            false,
+-            Some(&td.open_dir("boot/efi").unwrap()),
+-        )
+-        .unwrap();
++        install(&td, None, Some("fedora"), false).unwrap();
+ 
+         assert!(td.exists("boot/grub2/grub.cfg"));
+         assert!(td.exists("boot/efi/EFI/fedora/grub.cfg"));
+-- 
+2.55.0
+

diff --git a/0002-Revert-component-Add-as_any-method-for-downcasting.patch b/0002-Revert-component-Add-as_any-method-for-downcasting.patch
new file mode 100644
index 0000000..7ef29a9
--- /dev/null
+++ b/0002-Revert-component-Add-as_any-method-for-downcasting.patch
@@ -0,0 +1,66 @@
+From fa7905a4c9296e09a4daf12b73cf45dd6c226327 Mon Sep 17 00:00:00 2001
+From: Adam Williamson <awilliam@redhat.com>
+Date: Fri, 21 Aug 2026 15:08:22 -0700
+Subject: [PATCH 2/4] Revert "component: Add `as_any` method for downcasting"
+
+This reverts commit d59fb20db75c553a750b45830ddd671cd5cae702.
+---
+ src/bios.rs      | 4 ----
+ src/component.rs | 3 ---
+ src/efi.rs       | 4 ----
+ 3 files changed, 11 deletions(-)
+
+diff --git a/src/bios.rs b/src/bios.rs
+index a638df6..03a3408 100644
+--- a/src/bios.rs
++++ b/src/bios.rs
+@@ -99,10 +99,6 @@ impl Bios {
+ }
+ 
+ impl Component for Bios {
+-    fn as_any(&self) -> &dyn std::any::Any {
+-        self
+-    }
+-
+     fn name(&self) -> &'static str {
+         self.component_type().into()
+     }
+diff --git a/src/component.rs b/src/component.rs
+index 73043c3..23a14b5 100644
+--- a/src/component.rs
++++ b/src/component.rs
+@@ -10,7 +10,6 @@ use cap_std::{ambient_authority, fs::Permissions};
+ use cap_std_ext::dirext::CapStdExtDirExt;
+ use fn_error_context::context;
+ use serde::{Deserialize, Serialize};
+-use std::any::Any;
+ use std::path::{Path, PathBuf};
+ 
+ use bootc_internal_blockdev::Device;
+@@ -54,8 +53,6 @@ impl std::fmt::Display for ComponentType {
+ /// handles installing bootloader files during image builds, applying updates at runtime,
+ /// and optionally adopting existing installations not originally managed by bootupd.
+ pub(crate) trait Component {
+-    fn as_any(&self) -> &dyn Any;
+-
+     /// Returns the name of the component; this will be used for serialization
+     /// and should remain stable.
+     fn name(&self) -> &'static str;
+diff --git a/src/efi.rs b/src/efi.rs
+index 4c9d2cc..d1d911c 100644
+--- a/src/efi.rs
++++ b/src/efi.rs
+@@ -330,10 +330,6 @@ fn skip_systemd_bootloaders() -> bool {
+ }
+ 
+ impl Component for Efi {
+-    fn as_any(&self) -> &dyn std::any::Any {
+-        self
+-    }
+-
+     fn name(&self) -> &'static str {
+         self.component_type().into()
+     }
+-- 
+2.55.0
+

diff --git a/0003-Revert-esp-Update-unmount-method.patch b/0003-Revert-esp-Update-unmount-method.patch
new file mode 100644
index 0000000..e156277
--- /dev/null
+++ b/0003-Revert-esp-Update-unmount-method.patch
@@ -0,0 +1,76 @@
+From 7dfcb94b589e88fc61a589ee3184fd075b018d91 Mon Sep 17 00:00:00 2001
+From: Adam Williamson <awilliam@redhat.com>
+Date: Fri, 21 Aug 2026 15:09:02 -0700
+Subject: [PATCH 3/4] Revert "esp: Update `unmount` method"
+
+This reverts commit 85053a8a72aad8082097566871a08bf5a9e4b271.
+---
+ src/efi.rs | 28 ++++++++++++++++++++++++----
+ 1 file changed, 24 insertions(+), 4 deletions(-)
+
+diff --git a/src/efi.rs b/src/efi.rs
+index d1d911c..72ac5d5 100644
+--- a/src/efi.rs
++++ b/src/efi.rs
+@@ -93,6 +93,9 @@ pub(crate) fn is_efi_booted() -> Result<bool> {
+ #[derive(Default, Debug)]
+ pub(crate) struct Efi {
+     mountpoint: RefCell<Option<PathBuf>>,
++    /// Whether the above mountpoint was already mounted or not
++    /// Won't unmount if it was already mounted
++    was_mounted: RefCell<bool>,
+     /// Guard for ESP mounted at a temporary location
+     tempmount_guard: RefCell<Option<TempMount>>,
+ }
+@@ -149,6 +152,7 @@ impl Efi {
+ 
+         // Only borrow mutably if we found a mount point
+         log::debug!("Reusing existing mount point {mnt:?}");
++        *self.was_mounted.borrow_mut() = true;
+         *self.mountpoint.borrow_mut() = Some(mnt.clone());
+         Ok(Some(mnt))
+     }
+@@ -159,7 +163,9 @@ impl Efi {
+         match self.search_common_esp_mountpoints(root)? {
+             Some(mnt) => {
+                 log::debug!("Mounted at {:?}", mnt);
++                *self.was_mounted.borrow_mut() = true;
+                 *self.mountpoint.borrow_mut() = Some(mnt.clone());
++
+                 Ok(mnt)
+             }
+             None => {
+@@ -198,12 +204,26 @@ impl Efi {
+     }
+ 
+     pub(crate) fn unmount(&self) -> Result<()> {
+-        if let Some(tmpmount) = self.tempmount_guard.borrow_mut().take() {
+-            drop(tmpmount);
+-            log::trace!("Dropped tempmount");
++        if *self.was_mounted.borrow() {
++            log::debug!("Mountpoint was already mounted, won't unmount");
++            return Ok(());
+         }
+ 
+-        *self.mountpoint.borrow_mut() = None;
++        *self.was_mounted.borrow_mut() = false;
++
++        if let Some(mount) = self.mountpoint.borrow_mut().take() {
++            if let Some(tmpmount) = self.tempmount_guard.borrow_mut().take() {
++                drop(tmpmount);
++                log::trace!("Dropped tempmount");
++                return Ok(());
++            }
++
++            Command::new("umount")
++                .arg(&mount)
++                .run_inherited()
++                .with_context(|| format!("Failed to unmount {mount:?}"))?;
++            log::trace!("Unmounted");
++        }
+ 
+         Ok(())
+     }
+-- 
+2.55.0
+

diff --git a/0004-Revert-esp-TempMount-ESP-if-not-already-mounted.patch b/0004-Revert-esp-TempMount-ESP-if-not-already-mounted.patch
new file mode 100644
index 0000000..5192b89
--- /dev/null
+++ b/0004-Revert-esp-TempMount-ESP-if-not-already-mounted.patch
@@ -0,0 +1,207 @@
+From e8eeb12e79330385a15f765d1cf7ee8ac3516736 Mon Sep 17 00:00:00 2001
+From: Adam Williamson <awilliam@redhat.com>
+Date: Fri, 21 Aug 2026 15:09:07 -0700
+Subject: [PATCH 4/4] Revert "esp: TempMount ESP if not already mounted"
+
+This reverts commit 150ae3281407f315d131674e0e5cc758c4ee0746.
+---
+ src/efi.rs | 123 +++++++++++++++++++++--------------------------------
+ 1 file changed, 48 insertions(+), 75 deletions(-)
+
+diff --git a/src/efi.rs b/src/efi.rs
+index 72ac5d5..fceecd9 100644
+--- a/src/efi.rs
++++ b/src/efi.rs
+@@ -10,7 +10,6 @@ use std::path::{Path, PathBuf};
+ use std::process::Command;
+ 
+ use anyhow::{bail, Context, Result};
+-use bootc_internal_mount::tempmount::TempMount;
+ use bootc_internal_utils::CommandRunExt;
+ use camino::{Utf8Path, Utf8PathBuf};
+ use cap_std::ambient_authority;
+@@ -19,8 +18,6 @@ use cap_std_ext::cap_std;
+ use cap_std_ext::dirext::CapStdExtDirExt;
+ use fn_error_context::context;
+ use os_release::OsRelease;
+-use rustix::mount::MountFlags;
+-use rustix::path::Arg;
+ use rustix::{fd::AsFd, fd::BorrowedFd, fs::StatVfsMountFlags};
+ use walkdir::WalkDir;
+ use widestring::U16CString;
+@@ -96,25 +93,13 @@ pub(crate) struct Efi {
+     /// Whether the above mountpoint was already mounted or not
+     /// Won't unmount if it was already mounted
+     was_mounted: RefCell<bool>,
+-    /// Guard for ESP mounted at a temporary location
+-    tempmount_guard: RefCell<Option<TempMount>>,
+-}
+-
+-/// Mount flags shared by all ESP mounts: non-executable, no setuid.
+-const ESP_MOUNT_FLAGS: MountFlags =
+-    MountFlags::from_bits_retain(MountFlags::NOEXEC.bits() | MountFlags::NOSUID.bits());
+-
+-/// FAT mount options: owner-only permissions on files (0600) and dirs (0700).
+-const ESP_MOUNT_DATA: &std::ffi::CStr = c"fmask=0177,dmask=0077";
+-
+-/// Mount the ESP from the provided device into a temporary directory.
+-fn mount_esp(device: &str) -> Result<TempMount> {
+-    TempMount::mount_dev(device, "vfat", ESP_MOUNT_FLAGS, Some(ESP_MOUNT_DATA))
+ }
+ 
+ impl Efi {
+-    #[context("Searching common ESP mountpoints")]
+-    fn search_common_esp_mountpoints(&self, root: &Path) -> Result<Option<PathBuf>> {
++    // Get mounted point for esp
++    pub(crate) fn get_mounted_esp(&self, root: &Path) -> Result<Option<PathBuf>> {
++        // First check all potential mount points without holding the borrow
++        let mut found_mount = None;
+         for &mnt in ESP_MOUNTS.iter() {
+             let path = root.join(mnt);
+             if !path.exists() {
+@@ -134,63 +119,59 @@ impl Efi {
+                     continue;
+                 }
+                 util::ensure_writable_mount(&path)?;
+-                return Ok(Some(path));
++                *self.was_mounted.borrow_mut() = true;
++                found_mount = Some(path);
++                break;
+             }
+         }
+ 
+-        Ok(None)
+-    }
+-
+-    /// Get mounted point for ESP
+-    /// NOTE: This function only searches the common ESP mountpoints and returns
+-    /// the path of the mountpoint, if there is one
+-    #[context("Getting mounted ESP")]
+-    pub(crate) fn get_mounted_esp(&self, root: &Path) -> Result<Option<PathBuf>> {
+-        let Some(mnt) = self.search_common_esp_mountpoints(root)? else {
+-            return Ok(None);
+-        };
+-
+         // Only borrow mutably if we found a mount point
+-        log::debug!("Reusing existing mount point {mnt:?}");
+-        *self.was_mounted.borrow_mut() = true;
+-        *self.mountpoint.borrow_mut() = Some(mnt.clone());
+-        Ok(Some(mnt))
++        if let Some(mnt) = found_mount {
++            log::debug!("Reusing existing mount point {mnt:?}");
++            *self.mountpoint.borrow_mut() = Some(mnt.clone());
++            Ok(Some(mnt))
++        } else {
++            Ok(None)
++        }
+     }
+ 
+-    /// Mount the passed esp_device, return mount point
+-    #[context("Mounting ESP device at {}", root.display())]
++    // Mount the passed esp_device, return mount point
+     pub(crate) fn mount_esp_device(&self, root: &Path, esp_device: &Path) -> Result<PathBuf> {
+-        match self.search_common_esp_mountpoints(root)? {
+-            Some(mnt) => {
+-                log::debug!("Mounted at {:?}", mnt);
+-                *self.was_mounted.borrow_mut() = true;
+-                *self.mountpoint.borrow_mut() = Some(mnt.clone());
++        let mut mountpoint = None;
+ 
+-                Ok(mnt)
++        for &mnt in ESP_MOUNTS.iter() {
++            let mnt = root.join(mnt);
++            if !mnt.exists() {
++                continue;
+             }
+-            None => {
+-                // If the ESP isn't already mounted at /boot, /boot/efi mount it at a temporary point
+-                // This is so that we don't shadow existing files in the above directories
+-                let esp_mount = mount_esp(
+-                    esp_device
+-                        .as_str()
+-                        .context("Converting esp_device path to str")?,
+-                )
+-                .context("Creating temp ESP mount")?;
+-
+-                let mnt_path = esp_mount.dir.path().to_path_buf();
+-                *self.mountpoint.borrow_mut() = Some(mnt_path.clone());
+-                *self.tempmount_guard.borrow_mut() = Some(esp_mount);
+ 
+-                Ok(mnt_path)
++            // Check if the target is already a mounted ESP (e.g. the host
++            // already has the ESP mounted when running install-to-filesystem).
++            let st = rustix::fs::statfs(&mnt)?;
++            if st.f_type == libc::MSDOS_SUPER_MAGIC {
++                if is_mount_point(&mnt)? {
++                    log::debug!("ESP already mounted at {mnt:?}, reusing");
++                    mountpoint = Some(mnt);
++                    *self.was_mounted.borrow_mut() = true;
++                    break;
++                }
+             }
++
++            std::process::Command::new("mount")
++                .arg(&esp_device)
++                .arg(&mnt)
++                .run_inherited()
++                .with_context(|| format!("Failed to mount {:?}", esp_device))?;
++            log::debug!("Mounted at {mnt:?}");
++            mountpoint = Some(mnt);
++            break;
+         }
++        let mnt = mountpoint.ok_or_else(|| anyhow::anyhow!("No mount point found"))?;
++        *self.mountpoint.borrow_mut() = Some(mnt.clone());
++        Ok(mnt)
+     }
+ 
+-    /// Checks if we have already mounted the ESP
+-    /// If not, checks if the ESP is mounted at common mountpoints, i.e. /boot, /boot/efi
+-    /// Else, mounts the ESP at a temp path
+-    #[context("Ensuring mounted ESP")]
++    // Firstly check if esp is already mounted, then mount the passed esp device
+     pub(crate) fn ensure_mounted_esp(&self, root: &Path, esp_device: &Path) -> Result<PathBuf> {
+         if let Some(mountpoint) = self.mountpoint.borrow().as_deref() {
+             return Ok(mountpoint.to_owned());
+@@ -204,27 +185,14 @@ impl Efi {
+     }
+ 
+     pub(crate) fn unmount(&self) -> Result<()> {
+-        if *self.was_mounted.borrow() {
+-            log::debug!("Mountpoint was already mounted, won't unmount");
+-            return Ok(());
+-        }
+-
+         *self.was_mounted.borrow_mut() = false;
+-
+         if let Some(mount) = self.mountpoint.borrow_mut().take() {
+-            if let Some(tmpmount) = self.tempmount_guard.borrow_mut().take() {
+-                drop(tmpmount);
+-                log::trace!("Dropped tempmount");
+-                return Ok(());
+-            }
+-
+             Command::new("umount")
+                 .arg(&mount)
+                 .run_inherited()
+                 .with_context(|| format!("Failed to unmount {mount:?}"))?;
+             log::trace!("Unmounted");
+         }
+-
+         Ok(())
+     }
+ 
+@@ -783,6 +751,11 @@ impl Component for Efi {
+ 
+ impl Drop for Efi {
+     fn drop(&mut self) {
++        if *self.was_mounted.borrow() {
++            log::debug!("mountpoint was already mounted. Won't unmount",);
++            return;
++        }
++
+         log::debug!("Unmounting {:?}", self.mountpoint);
+         let _ = self.unmount();
+     }
+-- 
+2.55.0
+

diff --git a/rust-bootupd.spec b/rust-bootupd.spec
index bd8dc6b..370012e 100644
--- a/rust-bootupd.spec
+++ b/rust-bootupd.spec
@@ -11,6 +11,14 @@ License:        Apache-2.0
 URL:            https://github.com/coreos/bootupd
 Source0:        %{crates_source}
 Source1:        %{url}/releases/download/v%{version}/bootupd-%{version}-vendor.tar.zstd
+# Revert https://github.com/coreos/bootupd/pull/1126
+# to fix UEFI installs - see
+# https://github.com/coreos/bootupd/issues/1139
+Patch:          0001-Revert-Fix-grub-static-config-install.patch
+Patch:          0002-Revert-component-Add-as_any-method-for-downcasting.patch
+Patch:          0003-Revert-esp-Update-unmount-method.patch
+Patch:          0004-Revert-esp-TempMount-ESP-if-not-already-mounted.patch
+
 ExcludeArch:    %{ix86}
 
 # For now, see upstream

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-09-14  9:34 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-14  9:34 [rpms/rust-bootupd] f45: Revert PR #1139 to fix UEFI ostree installs Adam Williamson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox