tool(systemd-boot): install it once instead of checking for each generation
systemd-boot is now installed once for many generations rather than multiple times. This means it is not really possible to manage different system in the same "machine", which is a very obscure usecase, theoretically possible, but not yet encountered.
This commit is contained in:
parent
e5c1d74e3f
commit
609c11f26d
|
@ -53,7 +53,7 @@ impl Architecture {
|
|||
/// Generic ESP paths which can be specific to a bootloader
|
||||
pub trait EspPaths<const N: usize> {
|
||||
/// Build an ESP path structure out of the ESP root directory
|
||||
fn new(esp: impl AsRef<Path>) -> Self;
|
||||
fn new(esp: impl AsRef<Path>, arch: Architecture) -> Self;
|
||||
|
||||
/// Return the used file paths to store as garbage collection roots.
|
||||
fn iter(&self) -> std::array::IntoIter<&PathBuf, N>;
|
||||
|
|
|
@ -45,8 +45,8 @@ impl Installer {
|
|||
generation_links: Vec<PathBuf>,
|
||||
) -> Self {
|
||||
let mut gc_roots = Roots::new();
|
||||
let esp_paths = SystemdEspPaths::new(esp);
|
||||
gc_roots.extend(esp_paths.iter());
|
||||
let esp_paths = EspPaths::new(esp, target_arch);
|
||||
gc_roots.extend(esp_paths.to_iter());
|
||||
|
||||
Self {
|
||||
broken_gens: BTreeSet::new(),
|
||||
|
|
|
@ -156,6 +156,8 @@ pub fn lanzaboote_install(
|
|||
.env("LANZABOOTE_STUB", test_systemd_stub)
|
||||
.arg("-vv")
|
||||
.arg("install")
|
||||
.arg("--system")
|
||||
.arg(TARGET_SYSTEM_DOUBLE)
|
||||
.arg("--systemd")
|
||||
.arg(test_systemd)
|
||||
.arg("--systemd-boot-loader-config")
|
||||
|
|
|
@ -2,6 +2,8 @@ use std::fs;
|
|||
use std::path::PathBuf;
|
||||
|
||||
use anyhow::Result;
|
||||
use lanzaboote_tool::architecture::Architecture;
|
||||
use lzbt_systemd::architecture::SystemdArchitectureExt;
|
||||
use tempfile::tempdir;
|
||||
|
||||
mod common;
|
||||
|
@ -113,9 +115,15 @@ fn overwrite_unsigned_systemd_boot_binaries() -> Result<()> {
|
|||
}
|
||||
|
||||
fn systemd_boot_path(esp: &tempfile::TempDir) -> PathBuf {
|
||||
esp.path().join("EFI/systemd/systemd-bootx64.efi")
|
||||
let arch = Architecture::from_nixos_system(TARGET_SYSTEM_DOUBLE).unwrap();
|
||||
esp.path()
|
||||
.join("EFI/systemd/")
|
||||
.join(arch.systemd_filename())
|
||||
}
|
||||
|
||||
fn systemd_boot_fallback_path(esp: &tempfile::TempDir) -> PathBuf {
|
||||
esp.path().join("EFI/BOOT/BOOTX64.EFI")
|
||||
let arch = Architecture::from_nixos_system(TARGET_SYSTEM_DOUBLE).unwrap();
|
||||
esp.path()
|
||||
.join("EFI/BOOT/")
|
||||
.join(arch.efi_fallback_filename())
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue