summaryrefslogtreecommitdiff
path: root/src/Propellor/Property/DiskImage.hs
diff options
context:
space:
mode:
authorJoey Hess2017-12-21 00:12:01 -0400
committerJoey Hess2017-12-21 00:12:01 -0400
commit4b2f46e510080b6d5df0ee04a3fae8e53df1ea7a (patch)
tree57297d14f190e3d3d79d8bc5810b2088a7eb9c75 /src/Propellor/Property/DiskImage.hs
parent5c0dce561b037c6152fa9d02e5190daad7ee805d (diff)
Grub.boots, Grub.bootsMounted: Pass --target to grub-install.
This is to support eg, coreboot. The GrubTarget passed to Grub.installed is introspected to determine --target. If multiple grubs are installed, it currently doesn't pass any --target. Might make more sense to run grub-install repeatedly, but I don't know if that case is sane at all. The Xen -> "x86_64-xen" mapping is kind of arbitrarily chosen since there's a i386-xen available too. I don't know when that case would be used in any case though; chainPVGrub uses installed Xen, but it does not run grub-install. If this does become a problem, would probably need to split it into Xen64 and Xen32. Renamed BIOS to GrubTarget in passing to match grub's terminology; BIOS was kind of a joke term for this in propellor. This commit was sponsored by Francois Marier on Patreon.
Diffstat (limited to 'src/Propellor/Property/DiskImage.hs')
-rw-r--r--src/Propellor/Property/DiskImage.hs11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/Propellor/Property/DiskImage.hs b/src/Propellor/Property/DiskImage.hs
index 1f4f8118..24459476 100644
--- a/src/Propellor/Property/DiskImage.hs
+++ b/src/Propellor/Property/DiskImage.hs
@@ -17,7 +17,7 @@ module Propellor.Property.DiskImage (
imageRebuiltFor,
imageBuiltFrom,
imageExists,
- Grub.BIOS(..),
+ GrubTarget(..),
) where
import Propellor.Base
@@ -221,7 +221,7 @@ imageBuilt' rebuild img mkchroot tabletype partspec =
-- installed.
final = case fromInfo (containerInfo chroot) of
[] -> unbootable "no bootloader is installed"
- [GrubInstalled] -> grubFinalized
+ [GrubInstalled grubtarget] -> grubFinalized grubtarget
[UbootInstalled p] -> ubootFinalized p
[FlashKernelInstalled] -> flashKernelFinalized
[UbootInstalled p, FlashKernelInstalled] ->
@@ -454,9 +454,10 @@ unbootable msg = \_ _ _ -> property desc $ do
where
desc = "image is not bootable"
-grubFinalized :: Finalization
-grubFinalized _img mnt loopdevs = Grub.bootsMounted mnt wholediskloopdev
- `describe` "disk image boots using grub"
+grubFinalized :: GrubTarget -> Finalization
+grubFinalized grubtarget _img mnt loopdevs =
+ Grub.bootsMounted mnt wholediskloopdev grubtarget
+ `describe` "disk image boots using grub"
where
-- It doesn't matter which loopdev we use; all
-- come from the same disk image, and it's the loop dev