diff options
Diffstat (limited to 'user/horizon/bootloader.patch')
-rw-r--r-- | user/horizon/bootloader.patch | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/user/horizon/bootloader.patch b/user/horizon/bootloader.patch new file mode 100644 index 000000000..a09b4a603 --- /dev/null +++ b/user/horizon/bootloader.patch @@ -0,0 +1,94 @@ +From 3658104dcc622e69a64cf97fbc9ed477f3faed6c Mon Sep 17 00:00:00 2001 +From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> +Date: Wed, 30 Sep 2020 19:19:59 -0500 +Subject: [PATCH] meta: Run update-boot when bootloader requested +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +If the user chooses no-boot or isn't installing Adélie, this will fail +quietly. But if the user is installing Adélie, this is necessary to +generate bootloader configuration. +--- + hscript/meta.cc | 26 ++++++++++++++++++++------ + 1 file changed, 20 insertions(+), 6 deletions(-) + +diff --git a/hscript/meta.cc b/hscript/meta.cc +index 4efdc80..84e851a 100644 +--- a/hscript/meta.cc ++++ b/hscript/meta.cc +@@ -823,7 +823,7 @@ bool Bootloader::execute() const { + << std::endl + << "chroot " << script->targetDirectory() + << " grub-install " << _device << std::endl; +- return true; ++ goto updateboot; + } + #ifdef HAS_INSTALL_ENV + if(run_command("/sbin/apk", +@@ -851,8 +851,8 @@ bool Bootloader::execute() const { + mount(nullptr, efipath.c_str(), nullptr, + MS_REMOUNT | MS_BIND | MS_RDONLY | MS_NOEXEC | MS_NODEV | + MS_NOSUID | MS_RELATIME, nullptr); ++ goto updateboot; + #endif /* HAS_INSTALL_ENV */ +- return true; /* LCOV_EXCL_LINE */ + } + else if(method == "grub-bios") { + if(script->options().test(Simulate)) { +@@ -861,7 +861,7 @@ bool Bootloader::execute() const { + << std::endl + << "chroot " << script->targetDirectory() + << " grub-install " << _device << std::endl; +- return true; ++ goto updateboot; + } + #ifdef HAS_INSTALL_ENV + if(run_command("/sbin/apk", +@@ -876,8 +876,8 @@ bool Bootloader::execute() const { + output_error(pos, "bootloader: failed to install GRUB"); + return false; + } ++ goto updateboot; + #endif /* HAS_INSTALL_ENV */ +- return true; /* LCOV_EXCL_LINE */ + } + else if(method == "iquik") { + output_error(pos, "bootloader: iQUIK is not yet supported"); +@@ -891,7 +891,7 @@ bool Bootloader::execute() const { + << "chroot " << script->targetDirectory() + << " grub-install --macppc-directory=/boot/grub " + << _device << std::endl; +- return true; ++ goto updateboot; + } + #ifdef HAS_INSTALL_ENV + if(run_command("/sbin/apk", +@@ -907,9 +907,23 @@ bool Bootloader::execute() const { + output_error(pos, "bootloader: failed to install GRUB"); + return false; + } ++ goto updateboot; + #endif /* HAS_INSTALL_ENV */ +- return true; /* LCOV_EXCL_LINE */ + } + + return false; /* LCOV_EXCL_LINE */ ++ ++updateboot: ++ /* We ignore if update-boot fails, in case the user has chosen no-boot. */ ++ if(script->options().test(Simulate)) { ++ std::cout << "chroot " << script->targetDirectory() ++ << " /usr/sbin/update-boot || true" << std::endl; ++ } ++#ifdef HAS_INSTALL_ENV ++ else { ++ run_command("chroot", ++ {script->targetDirectory(), "/usr/sbin/update-boot"}); ++ } ++#endif /* HAS_INSTALL_ENV */ ++ return true; + } +-- +2.25.4 + |