summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2020-09-30 19:19:59 -0500
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2020-09-30 19:19:59 -0500
commit3658104dcc622e69a64cf97fbc9ed477f3faed6c (patch)
treecd45ab104250f2258b3da8f19ca33061c422a7ca
parent82d754f0018db28220fe0402eb0a796fa94af893 (diff)
downloadhorizon-3658104dcc622e69a64cf97fbc9ed477f3faed6c.tar.gz
horizon-3658104dcc622e69a64cf97fbc9ed477f3faed6c.tar.bz2
horizon-3658104dcc622e69a64cf97fbc9ed477f3faed6c.tar.xz
horizon-3658104dcc622e69a64cf97fbc9ed477f3faed6c.zip
meta: Run update-boot when bootloader requested
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.
-rw-r--r--hscript/meta.cc26
1 files 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;
}