diff options
author | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2020-09-30 19:19:59 -0500 |
---|---|---|
committer | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2020-09-30 19:19:59 -0500 |
commit | 3658104dcc622e69a64cf97fbc9ed477f3faed6c (patch) | |
tree | cd45ab104250f2258b3da8f19ca33061c422a7ca /hscript | |
parent | 82d754f0018db28220fe0402eb0a796fa94af893 (diff) | |
download | horizon-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.
Diffstat (limited to 'hscript')
-rw-r--r-- | hscript/meta.cc | 26 |
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; } |