|author||Joey Hess||2017-11-17 13:29:16 -0400|
|committer||Joey Hess||2017-11-17 13:29:16 -0400|
There are two variants. It only runs on armel, not armhf. Made the properties for machines check the architecture will work. This commit was sponsored by Trenton Cronholm on Patreon.
Diffstat (limited to 'src')
1 files changed, 41 insertions, 9 deletions
diff --git a/src/Propellor/Property/Machine.hs b/src/Propellor/Property/Machine.hs
index b6785bdb..a351ca80 100644
@@ -5,36 +5,57 @@
-- kernel, bootloader, etc needed by a given machine, if there's a property
-- in here for your machine, you can simply use it.
--- Sometime non-free firmware is needed to use a board. If the board won't
+-- You will need to configure the `Host` with the right `Architecture`
+-- for the machines. These properties do test at runtime that a supported
+-- Architecture was selected.
+-- Sometimes non-free firmware is needed to use a board. If the board won't
-- be functional at all without it, its property will include the non-free
-- firmware, but if the non-free firmware is only needed for non-critical
-- functionality, it won't be included.
module Propellor.Property.Machine (
-- * ARM boards
import qualified Propellor.Property.Apt as Apt
import qualified Propellor.Property.FlashKernel as FlashKernel
import qualified Propellor.Property.Uboot as Uboot
--- | Cubietech Cubietruck
+data Marvell_SheevaPlug_BootDevice = SDCard | ESATA
+-- | Marvel SheevaPlug
+-- Note that u-boot may need to be upgraded manually, and will need to be
+-- configured to boot from the SD card or eSATA. See
+marvell_SheevaPlug :: Marvell_SheevaPlug_BootDevice -> Property (HasInfo + DebianLike)
+marvell_SheevaPlug bd = case bd of
+ SDCard -> FlashKernel.installed "Marvell SheevaPlug Reference Board"
+ `requires` kirkwood
+ ESATA -> FlashKernel.installed "Marvell eSATA SheevaPlug Reference Board"
+ `requires` kirkwood
+-- | Cubietech Cubietruck (untested)
-- Wifi needs non-free firmware-brcm80211, whicn is not installed by
-- this property. Also, see https://bugs.debian.org/844056
cubietech_Cubietruck :: Property (HasInfo + DebianLike)
cubietech_Cubietruck = FlashKernel.installed "Cubietech Cubietruck"
- `requires` sunixi "Cubietruck"
- `requires` lpae
+ `requires` sunixi "Cubietruck"
+ `requires` lpae
--- | Olimex A10-OLinuXino-LIME
+-- | Olimex A10-OLinuXino-LIME (untested)
olimex_A10_OLinuXino_LIME :: Property (HasInfo + DebianLike)
olimex_A10_OLinuXino_LIME = FlashKernel.installed "Olimex A10-OLinuXino-LIME"
- `requires` sunixi "A10-OLinuXino-Lime"
- `requires` armmp
+ `requires` sunixi "A10-OLinuXino-Lime"
+ `requires` armmp
sunixi :: Uboot.BoardName -> Property (HasInfo + DebianLike)
sunixi boardname = Uboot.sunxi boardname
@@ -44,7 +65,18 @@ sunixi boardname = Uboot.sunxi boardname
armmp :: Property DebianLike
-armmp = Apt.installed ["linux-image-armmp"]
+armmp = checkArchitecture [ARMHF, ARMEL] $
+ Apt.installed ["linux-image-armmp"]
lpae :: Property DebianLike
-lpae = Apt.installed ["linux-image-armmp-lpae"]
+lpae = checkArchitecture [ARMHF, ARMEL] $
+ Apt.installed ["linux-image-armmp-lpae"]
+kirkwood :: Property DebianLike
+kirkwood = checkArchitecture [ARMEL] $
+ Apt.installed ["linux-image-kirkwwood"]
+checkArchitecture :: [Architecture] -> Property DebianLike -> Property DebianLike
+checkArchitecture as p = withOS (getDesc p) $ \w o -> case o of
+ (Just (System _ arch)) | arch `elem` as -> ensureProperty w p
+ _ -> unsupportedOS' -- error $ "Machine needs architecture to be one of: " ++ show as