summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoey Hess2014-11-22 22:10:53 -0400
committerJoey Hess2014-11-22 22:10:53 -0400
commit96ecbaad25076901802dd7a311161d46a1212d68 (patch)
tree74f5b4aa02aa384c4fd5470076d24a4e89ed17a7 /src
parent7c5188b202977d341bdfae504c987e8ee0451157 (diff)
pute full path to bin/propellor inside shim
Diffstat (limited to 'src')
-rw-r--r--src/Propellor/Property/Chroot.hs2
-rw-r--r--src/Propellor/Property/Debootstrap.hs3
-rw-r--r--src/Propellor/Property/Docker.hs2
-rw-r--r--src/Propellor/Shim.hs6
-rw-r--r--src/Propellor/Spin.hs2
5 files changed, 8 insertions, 7 deletions
diff --git a/src/Propellor/Property/Chroot.hs b/src/Propellor/Property/Chroot.hs
index c3b14a8e..f45e2fc1 100644
--- a/src/Propellor/Property/Chroot.hs
+++ b/src/Propellor/Property/Chroot.hs
@@ -88,7 +88,7 @@ propellChroot c@(Chroot loc _ _ _) mkproc systemdonly = property (chrootDesc c "
let me = localdir </> "propellor"
shim <- liftIO $ ifM (doesDirectoryExist d)
( pure (Shim.file me d)
- , Shim.setup me d
+ , Shim.setup me Nothing d
)
ifM (liftIO $ bindmount shim)
( chainprovision shim
diff --git a/src/Propellor/Property/Debootstrap.hs b/src/Propellor/Property/Debootstrap.hs
index a8c80348..f85eb2e6 100644
--- a/src/Propellor/Property/Debootstrap.hs
+++ b/src/Propellor/Property/Debootstrap.hs
@@ -263,7 +263,8 @@ fixForeignDev target = whenM (doesFileExist (target ++ foreignDevFlag)) $ do
, Param "sh"
, Param "-c"
, Param $ intercalate " && "
- [ "rm -rf /dev"
+ [ "apt-get -y install makedev"
+ , "rm -rf /dev"
, "mkdir /dev"
, "cd /dev"
, "/sbin/MAKEDEV std ptmx fd consoleonly"
diff --git a/src/Propellor/Property/Docker.hs b/src/Propellor/Property/Docker.hs
index 460bc3ec..586ebc2e 100644
--- a/src/Propellor/Property/Docker.hs
+++ b/src/Propellor/Property/Docker.hs
@@ -377,7 +377,7 @@ runningContainer cid@(ContainerId hn cn) image runps = containerDesc cid $ prope
liftIO $ do
clearProvisionedFlag cid
createDirectoryIfMissing True (takeDirectory $ identFile cid)
- shim <- liftIO $ Shim.setup (localdir </> "propellor") (localdir </> shimdir cid)
+ shim <- liftIO $ Shim.setup (localdir </> "propellor") Nothing (localdir </> shimdir cid)
liftIO $ writeFile (identFile cid) (show ident)
ensureProperty $ boolProperty "run" $ runContainer img
(runps ++ ["-i", "-d", "-t"])
diff --git a/src/Propellor/Shim.hs b/src/Propellor/Shim.hs
index 6262ea5c..a97bf5c8 100644
--- a/src/Propellor/Shim.hs
+++ b/src/Propellor/Shim.hs
@@ -21,8 +21,8 @@ import System.Posix.Files
--
-- Propellor may be running from an existing shim, in which case it's
-- simply reused.
-setup :: FilePath -> FilePath -> IO FilePath
-setup propellorbin dest = checkAlreadyShimmed propellorbin $ do
+setup :: FilePath -> Maybe FilePath -> FilePath -> IO FilePath
+setup propellorbin propellorbinpath dest = checkAlreadyShimmed propellorbin $ do
createDirectoryIfMissing True dest
libs <- parseLdd <$> readProcess "ldd" [propellorbin]
@@ -44,7 +44,7 @@ setup propellorbin dest = checkAlreadyShimmed propellorbin $ do
, "GCONV_PATH=" ++ shellEscape gconvdir
, "export GCONV_PATH"
, "exec " ++ unwords (map shellEscape $ linker : linkerparams) ++
- " " ++ shellEscape propellorbin ++ " \"$@\""
+ " " ++ shellEscape (fromMaybe propellorbin propellorbinpath) ++ " \"$@\""
]
modifyFileMode shim (addModes executeModes)
return shim
diff --git a/src/Propellor/Spin.hs b/src/Propellor/Spin.hs
index 6add4f9f..228c4027 100644
--- a/src/Propellor/Spin.hs
+++ b/src/Propellor/Spin.hs
@@ -224,7 +224,7 @@ sendPrecompiled hn = void $ actionMessage ("Uploading locally compiled propellor
createDirectoryIfMissing True "bin"
unlessM (boolSystem "cp" [File me, File "bin/propellor"]) $
errorMessage "failed copying in propellor"
- void $ Shim.setup "bin/propellor" "."
+ void $ Shim.setup "bin/propellor" (localdir </> "bin/propellor") "."
changeWorkingDirectory tmpdir
withTmpFile "propellor.tar." $ \tarball _ -> allM id
[ boolSystem "strip" [File me]