Skip to content

Commit ea09938

Browse files
committed
Fix install error
1 parent d34bf3b commit ea09938

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

src/efi.rs

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ impl Efi {
128128
} else {
129129
self.mount_esp_device(root, esp_device)?
130130
};
131-
Ok(destdir)
131+
Ok(destdir.join("EFI"))
132132
}
133133

134134
fn unmount(&self) -> Result<()> {
@@ -280,7 +280,7 @@ impl Component for Efi {
280280
}
281281
let destpath = &self.ensure_mounted_esp(sysroot.path.as_ref(), Path::new(&esp))?;
282282

283-
let destdir = &openat::Dir::open(&destpath.join("EFI"))
283+
let destdir = &openat::Dir::open(destpath)
284284
.with_context(|| format!("opening EFI dir {}", destpath.display()))?;
285285
validate_esp(&destdir)?;
286286
let updated = sysroot
@@ -313,13 +313,19 @@ impl Component for Efi {
313313
log::debug!("Found metadata {}", meta.version);
314314
let srcdir_name = component_updatedirname(self);
315315
let ft = crate::filetree::FileTree::new_from_dir(&src_root.sub_dir(&srcdir_name)?)?;
316-
// get esp device via /dev/disk/by-partlabel
317-
let esp_device = self
318-
.get_esp_device()
319-
.ok_or_else(|| anyhow::anyhow!("Failed to find ESP device"))?;
320-
let destpath = &self.ensure_mounted_esp(Path::new(dest_root), &esp_device)?;
321316

322-
let destd = &openat::Dir::open(destpath)
317+
// Reusing mounted esp
318+
let destpath = if let Some(destdir) = self.get_mounted_esp(Path::new(dest_root))? {
319+
destdir
320+
} else {
321+
// get esp device via /dev/disk/by-partlabel
322+
let esp_device = self
323+
.get_esp_device()
324+
.ok_or_else(|| anyhow::anyhow!("Failed to find ESP device"))?;
325+
self.mount_esp_device(Path::new(dest_root), &esp_device)?
326+
};
327+
328+
let destd = &openat::Dir::open(&destpath)
323329
.with_context(|| format!("opening dest dir {}", destpath.display()))?;
324330
validate_esp(destd)?;
325331

@@ -375,7 +381,7 @@ impl Component for Efi {
375381
}
376382
let destpath = &self.ensure_mounted_esp(sysroot.path.as_ref(), Path::new(&esp))?;
377383

378-
let destdir = &openat::Dir::open(&destpath.join("EFI"))
384+
let destdir = &openat::Dir::open(destpath)
379385
.with_context(|| format!("opening EFI dir {}", destpath.display()))?;
380386
validate_esp(&destdir)?;
381387
log::trace!("applying diff: {}", &diff);
@@ -453,7 +459,7 @@ impl Component for Efi {
453459
}
454460
let destpath = &self.ensure_mounted_esp(Path::new("/"), Path::new(&esp))?;
455461

456-
let efidir = &openat::Dir::open(&destpath.join("EFI"))
462+
let efidir = &openat::Dir::open(destpath)
457463
.with_context(|| format!("opening EFI dir {}", destpath.display()))?;
458464

459465
let diff = currentf.relative_diff_to(&efidir)?;

0 commit comments

Comments
 (0)