summaryrefslogtreecommitdiff
path: root/src/Utility
diff options
context:
space:
mode:
authorJoey Hess2015-10-27 23:52:02 -0400
committerJoey Hess2015-10-27 23:52:02 -0400
commit894e2f7980052f1c331ba7780100ae0ad19856cb (patch)
treeaffb9ffb3c77d4d8b12bf2cb6666ec28ce6a11a4 /src/Utility
parent261d008d41e6656ce4ceafb8c0f0630d5795944a (diff)
use execProcessConcurrent everywhere
Found a reasonable clean way to make Utility.Process use execProcessConcurrent, while still allowing copying updates to it from git-annex.
Diffstat (limited to 'src/Utility')
-rw-r--r--src/Utility/Process.hs16
-rw-r--r--src/Utility/Process/Shim.hs8
2 files changed, 16 insertions, 8 deletions
diff --git a/src/Utility/Process.hs b/src/Utility/Process.hs
index cc113867..c6699961e 100644
--- a/src/Utility/Process.hs
+++ b/src/Utility/Process.hs
@@ -41,9 +41,12 @@ module Utility.Process (
devNull,
) where
-import qualified System.Process
-import qualified System.Process as X hiding (CreateProcess(..), createProcess, runInteractiveProcess, readProcess, readProcessWithExitCode, system, rawSystem, runInteractiveCommand, runProcess)
-import System.Process hiding (createProcess, readProcess, waitForProcess)
+import qualified Utility.Process.Shim
+import qualified Utility.Process.Shim as X hiding (CreateProcess(..), createProcess, runInteractiveProcess, readProcess, readProcessWithExitCode, system, rawSystem, runInteractiveCommand, runProcess)
+import Utility.Process.Shim hiding (createProcess, readProcess, waitForProcess)
+import Utility.Misc
+import Utility.Exception
+
import System.Exit
import System.IO
import System.Log.Logger
@@ -58,9 +61,6 @@ import Control.Applicative
import Data.Maybe
import Prelude
-import Utility.Misc
-import Utility.Exception
-
type CreateProcessRunner = forall a. CreateProcess -> ((Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) -> IO a) -> IO a
data StdHandle = StdinHandle | StdoutHandle | StderrHandle
@@ -372,7 +372,7 @@ startInteractiveProcess cmd args environ = do
createProcess :: CreateProcess -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
createProcess p = do
debugProcess p
- System.Process.createProcess p
+ Utility.Process.Shim.createProcess p
-- | Debugging trace for a CreateProcess.
debugProcess :: CreateProcess -> IO ()
@@ -392,6 +392,6 @@ debugProcess p = debugM "Utility.Process" $ unwords
-- | Wrapper around 'System.Process.waitForProcess' that does debug logging.
waitForProcess :: ProcessHandle -> IO ExitCode
waitForProcess h = do
- r <- System.Process.waitForProcess h
+ r <- Utility.Process.Shim.waitForProcess h
debugM "Utility.Process" ("process done " ++ show r)
return r
diff --git a/src/Utility/Process/Shim.hs b/src/Utility/Process/Shim.hs
new file mode 100644
index 00000000..0da93bf7
--- /dev/null
+++ b/src/Utility/Process/Shim.hs
@@ -0,0 +1,8 @@
+module Utility.Process.Shim (module X, createProcess) where
+
+import System.Process as X hiding (createProcess)
+import Propellor.Message (createProcessConcurrent)
+import System.IO
+
+createProcess :: CreateProcess -> IO (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle)
+createProcess = createProcessConcurrent