update
This commit is contained in:
parent
7b8b779360
commit
446a2e4c9a
|
@ -133,9 +133,11 @@ orca = standardSystem "orca.kitenet.net" Unstable "amd64"
|
||||||
& Apt.serviceInstalledRunning "ntp"
|
& Apt.serviceInstalledRunning "ntp"
|
||||||
& Systemd.persistentJournal
|
& Systemd.persistentJournal
|
||||||
|
|
||||||
& Systemd.nspawned (GitAnnexBuilder.standardAutoBuilderContainer
|
& Systemd.nspawned (GitAnnexBuilder.autoBuilderContainer
|
||||||
|
GitAnnexBuilder.standardAutoBuilder
|
||||||
(System (Debian Testing) "amd64") fifteenpast "2h")
|
(System (Debian Testing) "amd64") fifteenpast "2h")
|
||||||
& Systemd.nspawned (GitAnnexBuilder.standardAutoBuilderContainer
|
& Systemd.nspawned (GitAnnexBuilder.autoBuilderContainer
|
||||||
|
GitAnnexBuilder.standardAutoBuilder
|
||||||
(System (Debian Testing) "i386") fifteenpast "2h")
|
(System (Debian Testing) "i386") fifteenpast "2h")
|
||||||
& Systemd.nspawned (GitAnnexBuilder.androidAutoBuilderContainer
|
& Systemd.nspawned (GitAnnexBuilder.androidAutoBuilderContainer
|
||||||
(Cron.Times "1 1 * * *") "3h")
|
(Cron.Times "1 1 * * *") "3h")
|
||||||
|
@ -151,15 +153,20 @@ honeybee = standardSystem "honeybee.kitenet.net" Testing "armhf"
|
||||||
-- (Also, system is not currently running a stock kernel,
|
-- (Also, system is not currently running a stock kernel,
|
||||||
-- although it should be able to.)
|
-- although it should be able to.)
|
||||||
& Postfix.satellite
|
& Postfix.satellite
|
||||||
& Apt.serviceInstalledRunning "ntp"
|
|
||||||
& Apt.serviceInstalledRunning "aiccu"
|
& Apt.serviceInstalledRunning "aiccu"
|
||||||
|
& Apt.serviceInstalledRunning "swapspace"
|
||||||
|
& Apt.serviceInstalledRunning "ntp"
|
||||||
|
|
||||||
-- Not using systemd-nspawn because it's broken (kernel issue?)
|
-- Not using systemd-nspawn because it's broken (kernel issue?)
|
||||||
-- & Systemd.nspawned (GitAnnexBuilder.standardAutoBuilderContainer
|
-- & Systemd.nspawned (GitAnnexBuilder.autoBuilderContainer
|
||||||
-- osver Cron.Daily "22h")
|
-- GitAnnexBuilder.armAutoBuilder
|
||||||
|
-- builderos Cron.Daily "22h")
|
||||||
& Chroot.provisioned
|
& Chroot.provisioned
|
||||||
(Chroot.debootstrapped builderos mempty "/var/lib/container/armel-git-annex-builder"
|
(Chroot.debootstrapped builderos mempty "/var/lib/container/armel-git-annex-builder"
|
||||||
& GitAnnexBuilder.standardAutoBuilder builderos Cron.Daily "22h")
|
& "/etc/timezone" `File.hasContent` ["America/New_York"]
|
||||||
|
& GitAnnexBuilder.armAutoBuilder
|
||||||
|
builderos (Cron.Times "1 1 * * *") "12h"
|
||||||
|
)
|
||||||
where
|
where
|
||||||
-- Using unstable to get new enough ghc for TH on arm.
|
-- Using unstable to get new enough ghc for TH on arm.
|
||||||
builderos = System (Debian Unstable) "armel"
|
builderos = System (Debian Unstable) "armel"
|
||||||
|
|
|
@ -6,9 +6,7 @@ import Propellor
|
||||||
import qualified Propellor.Property.Apt as Apt
|
import qualified Propellor.Property.Apt as Apt
|
||||||
import qualified Propellor.Property.User as User
|
import qualified Propellor.Property.User as User
|
||||||
import qualified Propellor.Property.Cron as Cron
|
import qualified Propellor.Property.Cron as Cron
|
||||||
import qualified Propellor.Property.Ssh as Ssh
|
|
||||||
import qualified Propellor.Property.File as File
|
import qualified Propellor.Property.File as File
|
||||||
import qualified Propellor.Property.Docker as Docker
|
|
||||||
import qualified Propellor.Property.Systemd as Systemd
|
import qualified Propellor.Property.Systemd as Systemd
|
||||||
import qualified Propellor.Property.Chroot as Chroot
|
import qualified Propellor.Property.Chroot as Chroot
|
||||||
import Propellor.Property.Cron (Times)
|
import Propellor.Property.Cron (Times)
|
||||||
|
@ -50,8 +48,6 @@ autobuilder arch crontimes timeout = combineProperties "gitannexbuilder" $ props
|
||||||
tree :: Architecture -> Property HasInfo
|
tree :: Architecture -> Property HasInfo
|
||||||
tree buildarch = combineProperties "gitannexbuilder tree" $ props
|
tree buildarch = combineProperties "gitannexbuilder tree" $ props
|
||||||
& Apt.installed ["git"]
|
& Apt.installed ["git"]
|
||||||
-- gitbuilderdir directory already exists when docker volume is used,
|
|
||||||
-- but with wrong owner.
|
|
||||||
& File.dirExists gitbuilderdir
|
& File.dirExists gitbuilderdir
|
||||||
& File.ownerGroup gitbuilderdir (User builduser) (Group builduser)
|
& File.ownerGroup gitbuilderdir (User builduser) (Group builduser)
|
||||||
& gitannexbuildercloned
|
& gitannexbuildercloned
|
||||||
|
@ -86,6 +82,13 @@ buildDepsNoHaskellLibs = Apt.installed
|
||||||
"alex", "happy", "c2hs"
|
"alex", "happy", "c2hs"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
haskellPkgsInstalled :: String -> Property NoInfo
|
||||||
|
haskellPkgsInstalled dir = flagFile go ("/haskellpkgsinstalled")
|
||||||
|
where
|
||||||
|
go = userScriptProperty (User builduser)
|
||||||
|
[ "cd " ++ builddir ++ " && ./standalone/ " ++ dir ++ "/install-haskell-packages"
|
||||||
|
]
|
||||||
|
|
||||||
-- Installs current versions of git-annex's deps from cabal, but only
|
-- Installs current versions of git-annex's deps from cabal, but only
|
||||||
-- does so once.
|
-- does so once.
|
||||||
cabalDeps :: Property NoInfo
|
cabalDeps :: Property NoInfo
|
||||||
|
@ -94,23 +97,36 @@ cabalDeps = flagFile go cabalupdated
|
||||||
go = userScriptProperty (User builduser) ["cabal update && cabal install git-annex --only-dependencies || true"]
|
go = userScriptProperty (User builduser) ["cabal update && cabal install git-annex --only-dependencies || true"]
|
||||||
cabalupdated = homedir </> ".cabal" </> "packages" </> "hackage.haskell.org" </> "00-index.cache"
|
cabalupdated = homedir </> ".cabal" </> "packages" </> "hackage.haskell.org" </> "00-index.cache"
|
||||||
|
|
||||||
standardAutoBuilderContainer :: System -> Times -> TimeOut -> Systemd.Container
|
autoBuilderContainer :: (System -> Property HasInfo) -> System -> Times -> TimeOut -> Systemd.Container
|
||||||
standardAutoBuilderContainer osver@(System _ arch) crontime timeout =
|
autoBuilderContainer mkprop osver@(System _ arch) crontime timeout =
|
||||||
Systemd.container name bootstrap
|
Systemd.container name bootstrap
|
||||||
& standardAutoBuilder osver crontime timeout
|
& mkprop osver
|
||||||
|
& buildDepsApt
|
||||||
|
& autobuilder arch crontime timeout
|
||||||
where
|
where
|
||||||
name = arch ++ "-git-annex-builder"
|
name = arch ++ "-git-annex-builder"
|
||||||
bootstrap = Chroot.debootstrapped osver mempty
|
bootstrap = Chroot.debootstrapped osver mempty
|
||||||
|
|
||||||
standardAutoBuilder :: System -> Times -> TimeOut -> Property HasInfo
|
standardAutoBuilder :: System -> Property HasInfo
|
||||||
standardAutoBuilder osver@(System _ arch) crontime timeout =
|
standardAutoBuilder osver@(System _ arch) =
|
||||||
propertyList "git-annex-builder" $ props
|
propertyList "git-annex-builder" $ props
|
||||||
& os osver
|
& os osver
|
||||||
& Apt.stdSourcesList
|
& Apt.stdSourcesList
|
||||||
& Apt.unattendedUpgrades
|
& Apt.unattendedUpgrades
|
||||||
& User.accountFor (User builduser)
|
& User.accountFor (User builduser)
|
||||||
& tree arch
|
& tree arch
|
||||||
& buildDepsApt
|
|
||||||
|
armAutoBuilder :: System -> Times -> TimeOut -> Property HasInfo
|
||||||
|
armAutoBuilder osver@(System _ arch) crontime timeout =
|
||||||
|
propertyList "git-annex-builder (arm)" $ props
|
||||||
|
& standardAutoBuilder osver
|
||||||
|
& buildDepsNoHaskellLibs
|
||||||
|
-- Works around ghc crash with parallel builds on arm.
|
||||||
|
& (homedir </> ".cabal" </> "config")
|
||||||
|
`File.lacksLine` "jobs: $ncpus"
|
||||||
|
-- Install patched haskell packages for portability to
|
||||||
|
-- arm NAS's using old kernel versions.
|
||||||
|
& haskellPkgsInstalled "linux"
|
||||||
& autobuilder arch crontime timeout
|
& autobuilder arch crontime timeout
|
||||||
|
|
||||||
androidAutoBuilderContainer :: Times -> TimeOut -> Systemd.Container
|
androidAutoBuilderContainer :: Times -> TimeOut -> Systemd.Container
|
||||||
|
@ -135,7 +151,7 @@ androidContainer name setupgitannexdir gitannexdir = Systemd.container name boot
|
||||||
& flagFile chrootsetup ("/chrootsetup")
|
& flagFile chrootsetup ("/chrootsetup")
|
||||||
`requires` setupgitannexdir
|
`requires` setupgitannexdir
|
||||||
& buildDepsApt
|
& buildDepsApt
|
||||||
& flagFile haskellpkgsinstalled ("/haskellpkgsinstalled")
|
& haskellPkgsInstalled "android"
|
||||||
where
|
where
|
||||||
-- Use git-annex's android chroot setup script, which will install
|
-- Use git-annex's android chroot setup script, which will install
|
||||||
-- ghc-android and the NDK, all build deps, etc, in the home
|
-- ghc-android and the NDK, all build deps, etc, in the home
|
||||||
|
@ -143,55 +159,5 @@ androidContainer name setupgitannexdir gitannexdir = Systemd.container name boot
|
||||||
chrootsetup = scriptProperty
|
chrootsetup = scriptProperty
|
||||||
[ "cd " ++ gitannexdir ++ " && ./standalone/android/buildchroot-inchroot"
|
[ "cd " ++ gitannexdir ++ " && ./standalone/android/buildchroot-inchroot"
|
||||||
]
|
]
|
||||||
haskellpkgsinstalled = userScriptProperty (User builduser)
|
|
||||||
[ "cd " ++ gitannexdir ++ " && ./standalone/android/install-haskell-packages"
|
|
||||||
]
|
|
||||||
osver = System (Debian Testing) "i386"
|
osver = System (Debian Testing) "i386"
|
||||||
bootstrap = Chroot.debootstrapped osver mempty
|
bootstrap = Chroot.debootstrapped osver mempty
|
||||||
|
|
||||||
-- armel builder has a companion container using amd64 that
|
|
||||||
-- runs the build first to get TH splices. They need
|
|
||||||
-- to have the same versions of all haskell libraries installed.
|
|
||||||
armelCompanionContainer :: (System -> Docker.Image) -> Docker.Container
|
|
||||||
armelCompanionContainer dockerImage = Docker.container "armel-git-annex-builder-companion"
|
|
||||||
(dockerImage $ System (Debian Unstable) "amd64")
|
|
||||||
& os (System (Debian Testing) "amd64")
|
|
||||||
& Apt.stdSourcesList
|
|
||||||
& Apt.installed ["systemd"]
|
|
||||||
-- This volume is shared with the armel builder.
|
|
||||||
& Docker.volume gitbuilderdir
|
|
||||||
& User.accountFor (User builduser)
|
|
||||||
-- Install current versions of build deps from cabal.
|
|
||||||
& tree "armel"
|
|
||||||
& buildDepsNoHaskellLibs
|
|
||||||
& cabalDeps
|
|
||||||
-- The armel builder can ssh to this companion.
|
|
||||||
& Docker.expose "22"
|
|
||||||
& Apt.serviceInstalledRunning "ssh"
|
|
||||||
& Ssh.authorizedKeys (User builduser) (Context "armel-git-annex-builder")
|
|
||||||
& Docker.tweaked
|
|
||||||
|
|
||||||
armelAutoBuilderContainer :: (System -> Docker.Image) -> Times -> TimeOut -> Docker.Container
|
|
||||||
armelAutoBuilderContainer dockerImage crontimes timeout = Docker.container "armel-git-annex-builder"
|
|
||||||
(dockerImage $ System (Debian Unstable) "armel")
|
|
||||||
& os (System (Debian Testing) "armel")
|
|
||||||
& Apt.stdSourcesList
|
|
||||||
& Apt.installed ["systemd"]
|
|
||||||
& Apt.installed ["openssh-client"]
|
|
||||||
& Docker.link "armel-git-annex-builder-companion" "companion"
|
|
||||||
& Docker.volumes_from "armel-git-annex-builder-companion"
|
|
||||||
& User.accountFor (User builduser)
|
|
||||||
-- TODO: automate installing haskell libs
|
|
||||||
-- (Currently have to run
|
|
||||||
-- git-annex/standalone/linux/install-haskell-packages
|
|
||||||
-- which is not fully automated.)
|
|
||||||
& buildDepsNoHaskellLibs
|
|
||||||
& autobuilder "armel" crontimes timeout
|
|
||||||
`requires` tree "armel"
|
|
||||||
& Ssh.keyImported SshRsa (User builduser) (Context "armel-git-annex-builder")
|
|
||||||
& trivial writecompanionaddress
|
|
||||||
& Docker.tweaked
|
|
||||||
where
|
|
||||||
writecompanionaddress = scriptProperty
|
|
||||||
[ "echo \"$COMPANION_PORT_22_TCP_ADDR\" > " ++ homedir </> "companion_address"
|
|
||||||
] `describe` "companion_address file"
|
|
||||||
|
|
Loading…
Reference in New Issue