summaryrefslogtreecommitdiff
path: root/src/Propellor
diff options
context:
space:
mode:
authorJoey Hess2017-11-29 11:53:58 -0400
committerJoey Hess2017-11-29 11:53:58 -0400
commitc485aba3663333b5518c86b68b12d92ed51def01 (patch)
tree1330786f8073bf554f6324641632ea36db8a2856 /src/Propellor
parent578ebbf861a074c33050f4fb927f6f88d442947d (diff)
bootstrappedFrom: Set up local privdata file.
Avoid needing to --spin host deployed from disk image to let its propellor access its privdata. This commit was sponsored by Boyd Stephen Smith Jr. on Patreon.
Diffstat (limited to 'src/Propellor')
-rw-r--r--src/Propellor/Property/Bootstrap.hs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/Propellor/Property/Bootstrap.hs b/src/Propellor/Property/Bootstrap.hs
index f0759dae..25a6af33 100644
--- a/src/Propellor/Property/Bootstrap.hs
+++ b/src/Propellor/Property/Bootstrap.hs
@@ -14,6 +14,8 @@ import Propellor.Base
import Propellor.Bootstrap
import Propellor.Types.Info
import Propellor.Property.Chroot
+import Propellor.PrivData.Paths
+import Utility.FileMode
import Data.List
import qualified Data.ByteString as B
@@ -63,8 +65,18 @@ bootstrappedFrom reposource = check inChroot $
go :: Property Linux
go = property "Propellor bootstrapped" $ do
system <- getOS
+ -- gets Host value representing the chroot this is run in
+ chroothost <- ask
+ -- load privdata from outside the chroot, and filter
+ -- to only the privdata needed inside the chroot.
+ privdata <- liftIO $ filterPrivData chroothost
+ <$> readPrivDataFile privDataLocal
bootstrapper <- getBootstrapper
- assumeChange $ exposeTrueLocaldir $ const $
+ assumeChange $ exposeTrueLocaldir $ const $ do
+ liftIO $ createDirectoryIfMissing True $
+ takeDirectory privDataLocal
+ liftIO $ writeFileProtected privDataLocal $
+ show privdata
runShellCommand $ buildShellCommand
[ "cd " ++ localdir
, checkDepsCommand bootstrapper system