summaryrefslogtreecommitdiff
path: root/src/Propellor/Property/Schroot.hs
diff options
context:
space:
mode:
authorJoey Hess <joeyh@joeyh.name>2016-05-23 11:25:41 -0400
committerJoey Hess <joeyh@joeyh.name>2016-05-23 11:25:41 -0400
commit9435ca9d7916c59fa37e2e4c3983dcd6eb20d8c0 (patch)
treec7cea9fad8eb237f3aee7543fbcbc81b368cf7ef /src/Propellor/Property/Schroot.hs
parent7869b471f953c16fa73bc45f3651dba6138a1af6 (diff)
parent864d47361ba34d851a9bbb34a6242854c042e556 (diff)
Merge branch 'master' into joeyconfig
Diffstat (limited to 'src/Propellor/Property/Schroot.hs')
-rw-r--r--src/Propellor/Property/Schroot.hs42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/Propellor/Property/Schroot.hs b/src/Propellor/Property/Schroot.hs
new file mode 100644
index 00000000..c53ce4f1
--- /dev/null
+++ b/src/Propellor/Property/Schroot.hs
@@ -0,0 +1,42 @@
+-- | Maintainer: Sean Whitton <spwhitton@spwhitton.name>
+
+module Propellor.Property.Schroot where
+
+import Propellor.Base
+import qualified Propellor.Property.File as File
+import qualified Propellor.Property.Apt as Apt
+
+import Utility.FileMode
+
+-- | Configure schroot such that all schroots with @union-type=overlay@ in their
+-- configuration will run their overlays in a tmpfs.
+--
+-- Shell script from <https://wiki.debian.org/sbuild>.
+overlaysInTmpfs :: Property DebianLike
+overlaysInTmpfs = go `requires` installed
+ where
+ f = "/etc/schroot/setup.d/04tmpfs"
+ go :: Property UnixLike
+ go = f `File.hasContent`
+ [ "#!/bin/sh"
+ , ""
+ , "set -e"
+ , ""
+ , ". \"$SETUP_DATA_DIR/common-data\""
+ , ". \"$SETUP_DATA_DIR/common-functions\""
+ , ". \"$SETUP_DATA_DIR/common-config\""
+ , ""
+ , ""
+ , "if [ $STAGE = \"setup-start\" ]; then"
+ , " mount -t tmpfs overlay /var/lib/schroot/union/overlay"
+ , "elif [ $STAGE = \"setup-recover\" ]; then"
+ , " mount -t tmpfs overlay /var/lib/schroot/union/overlay"
+ , "elif [ $STAGE = \"setup-stop\" ]; then"
+ , " umount -f /var/lib/schroot/union/overlay"
+ , "fi"
+ ]
+ `onChange` (f `File.mode` (combineModes (readModes ++ executeModes)))
+ `describe` "schroot overlays in tmpfs"
+
+installed :: Property DebianLike
+installed = Apt.installed ["schroot"]