summary refs log tree commit diff
path: root/pkgs/applications/window-managers/xmonad/xmonad_ghc_var_0.11.patch
blob: f0785773cc146f6a50864258440fa60afe3a483d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
--- xmonad-0.11/XMonad/Core.hs	2013-01-01 01:31:47.000000000 +0000
+++ new-xmonad/XMonad/Core.hs	2013-12-23 17:36:40.862146910 +0000
@@ -47,6 +47,7 @@
 import System.Process
 import System.Directory
 import System.Exit
+import System.Environment (lookupEnv)
 import Graphics.X11.Xlib
 import Graphics.X11.Xlib.Extras (Event)
 import Data.Typeable
@@ -452,6 +453,7 @@
         err  = base ++ ".errors"
         src  = base ++ ".hs"
         lib  = dir </> "lib"
+    ghc <- fromMaybe "ghc" <$> liftIO (lookupEnv "XMONAD_GHC")
     libTs <- mapM getModTime . Prelude.filter isSource =<< allFiles lib
     srcT <- getModTime src
     binT <- getModTime bin
@@ -460,7 +462,7 @@
         -- temporarily disable SIGCHLD ignoring:
         uninstallSignalHandlers
         status <- bracket (openFile err WriteMode) hClose $ \h ->
-            waitForProcess =<< runProcess "ghc" ["--make", "xmonad.hs", "-i", "-ilib", "-fforce-recomp", "-v0", "-o",binn] (Just dir)
+            waitForProcess =<< runProcess ghc ["--make", "xmonad.hs", "-i", "-ilib", "-fforce-recomp", "-v0", "-o",binn] (Just dir)
                                     Nothing Nothing Nothing (Just h)
 
         -- re-enable SIGCHLD:
@@ -469,6 +471,7 @@
         -- now, if it fails, run xmessage to let the user know:
         when (status /= ExitSuccess) $ do
             ghcErr <- readFile err
+            xmessage <- fromMaybe "xmessage" <$> liftIO (lookupEnv "XMONAD_XMESSAGE")
             let msg = unlines $
                     ["Error detected while loading xmonad configuration file: " ++ src]
                     ++ lines (if null ghcErr then show status else ghcErr)
@@ -476,7 +479,7 @@
             -- nb, the ordering of printing, then forking, is crucial due to
             -- lazy evaluation
             hPutStrLn stderr msg
-            forkProcess $ executeFile "xmessage" True ["-default", "okay", msg] Nothing
+            forkProcess $ executeFile xmessage True ["-default", "okay", msg] Nothing
             return ()
         return (status == ExitSuccess)
       else return True