summaryrefslogtreecommitdiff
path: root/src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs')
-rw-r--r--src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs40
1 files changed, 38 insertions, 2 deletions
diff --git a/src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs b/src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs
index 153d714f..2932baf7 100644
--- a/src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs
+++ b/src/Propellor/Property/SiteSpecific/GitAnnexBuilder.hs
@@ -80,7 +80,7 @@ buildDepsNoHaskellLibs = Apt.installed
"liblockfile-simple-perl", "cabal-install", "vim", "less",
-- needed by haskell libs
"libxml2-dev", "libidn11-dev", "libgsasl7-dev", "libgnutls28-dev",
- "alex", "happy", "c2hs"
+ "libmagic-dev", "alex", "happy", "c2hs"
]
haskellPkgsInstalled :: String -> Property NoInfo
@@ -105,7 +105,6 @@ autoBuilderContainer :: (System -> Flavor -> Property HasInfo) -> System -> Flav
autoBuilderContainer mkprop osver@(System _ arch) flavor crontime timeout =
Systemd.container name osver (Chroot.debootstrapped mempty)
& mkprop osver flavor
- & buildDepsApt
& autobuilder arch crontime timeout
where
name = arch ++ fromMaybe "" flavor ++ "-git-annex-builder"
@@ -116,11 +115,48 @@ standardAutoBuilder :: System -> Flavor -> Property HasInfo
standardAutoBuilder osver@(System _ arch) flavor =
propertyList "standard git-annex autobuilder" $ props
& os osver
+ & buildDepsApt
+ & Apt.stdSourcesList
+ & Apt.unattendedUpgrades
+ & Apt.cacheCleaned
+ & User.accountFor (User builduser)
+ & tree arch flavor
+
+stackAutoBuilder :: System -> Flavor -> Property HasInfo
+stackAutoBuilder osver@(System _ arch) flavor =
+ propertyList "git-annex autobuilder using stack" $ props
+ & os osver
+ & buildDepsNoHaskellLibs
& Apt.stdSourcesList
& Apt.unattendedUpgrades
& Apt.cacheCleaned
& User.accountFor (User builduser)
& tree arch flavor
+ & stackInstalled
+
+stackInstalled :: Property NoInfo
+stackInstalled = withOS "stack installed" $ \o ->
+ case o of
+ (Just (System (Debian (Stable "jessie")) "i386")) ->
+ ensureProperty $ manualinstall "i386"
+ _ -> ensureProperty $ Apt.installed ["haskell-stack"]
+ where
+ -- Warning: Using a binary downloaded w/o validation.
+ manualinstall arch = check (not <$> doesFileExist binstack) $
+ propertyList "stack installed from upstream tarball"
+ [ cmdProperty "wget" ["https://www.stackage.org/stack/linux-" ++ arch, "-O", tmptar]
+ `assume` MadeChange
+ , File.dirExists tmpdir
+ , cmdProperty "tar" ["xf", tmptar, "-C", tmpdir, "--strip-components=1"]
+ `assume` MadeChange
+ , cmdProperty "mv" [tmpdir </> "stack", binstack]
+ `assume` MadeChange
+ , cmdProperty "rm" ["-rf", tmpdir, tmptar]
+ `assume` MadeChange
+ ]
+ binstack = "/usr/bin/stack"
+ tmptar = "/root/stack.tar.gz"
+ tmpdir = "/root/stack"
armAutoBuilder :: System -> Flavor -> Property HasInfo
armAutoBuilder osver flavor =