diff options
| author | Joey Hess <joeyh@joeyh.name> | 2017-11-29 11:53:58 -0400 |
|---|---|---|
| committer | Joey Hess <joeyh@joeyh.name> | 2017-11-29 11:53:58 -0400 |
| commit | c485aba3663333b5518c86b68b12d92ed51def01 (patch) | |
| tree | 1330786f8073bf554f6324641632ea36db8a2856 /src | |
| parent | 578ebbf861a074c33050f4fb927f6f88d442947d (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')
| -rw-r--r-- | src/Propellor/Property/Bootstrap.hs | 14 |
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 |
