summaryrefslogtreecommitdiff
path: root/user/horizon/bootloader.patch
diff options
context:
space:
mode:
Diffstat (limited to 'user/horizon/bootloader.patch')
-rw-r--r--user/horizon/bootloader.patch94
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
+