[commit: ghc] wip/nfs-locking: Replace path with instance ShowAction Builder. (37de3d5)

git at git.haskell.org git at git.haskell.org
Thu Oct 26 23:18:06 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : wip/nfs-locking
Link       : http://ghc.haskell.org/trac/ghc/changeset/37de3d57c7e35237dea4f11c2cb2016eedeb49c5/ghc

>---------------------------------------------------------------

commit 37de3d57c7e35237dea4f11c2cb2016eedeb49c5
Author: Andrey Mokhov <andrey.mokhov at gmail.com>
Date:   Fri Jan 2 02:34:56 2015 +0000

    Replace path with instance ShowAction Builder.


>---------------------------------------------------------------

37de3d57c7e35237dea4f11c2cb2016eedeb49c5
 src/Oracles/Builder.hs | 73 +++++++++++++++++++++++---------------------------
 1 file changed, 34 insertions(+), 39 deletions(-)

diff --git a/src/Oracles/Builder.hs b/src/Oracles/Builder.hs
index 6c37ec0..3da6f9a 100644
--- a/src/Oracles/Builder.hs
+++ b/src/Oracles/Builder.hs
@@ -2,7 +2,7 @@
 
 module Oracles.Builder (
     Builder (..),
-    path, with, run, argPath,
+    with, run,
     hsColourSrcs
     ) where
 
@@ -14,39 +14,34 @@ import Oracles.Option
 
 data Builder = Ar | Ld | Gcc | Alex | Happy | HsColour | GhcCabal | GhcPkg Stage | Ghc Stage
 
-path :: Builder -> Action FilePath
-path builder = do
-    let key = case builder of
-            Ar            -> "ar"
-            Ld            -> "ld"
-            Gcc           -> "gcc"
-            Alex          -> "alex"
-            Happy         -> "happy"
-            HsColour      -> "hscolour"
-            GhcCabal      -> "ghc-cabal"
-            Ghc Stage0    -> "system-ghc"     -- Ghc Stage0 is the bootstrapping compiler 
-            Ghc Stage1    -> "ghc-stage1"     -- Ghc StageN, N > 0, is the one built on stage (N - 1)
-            Ghc Stage2    -> "ghc-stage2"
-            Ghc Stage3    -> "ghc-stage3"
-            GhcPkg Stage0 -> "system-ghc-pkg" -- GhcPkg Stage0 is the bootstrapping GhcPkg 
-            GhcPkg _      -> "ghc-pkg"        -- GhcPkg StageN, N > 0, is the one built on stage 0 (TODO: need only Stage1?)
-    cfgPath <- askConfigWithDefault key $
-        error $ "\nCannot find path to '"
-        ++ key
-        ++ "' in configuration files."
-    let cfgPathExe = if cfgPath /= "" then cfgPath -<.> exe else ""
-    windows <- windowsHost
-    if (windows && "/" `isPrefixOf` cfgPathExe)
-    then do
-        Stdout out <- quietly $ cmd ["cygpath", "-m", "/"]
-        return $ dropWhileEnd isSpace out ++ drop 1 cfgPathExe
-    else
-        return cfgPathExe
-
-argPath :: Builder -> Args
-argPath builder = do
-    path <- path builder
-    arg [path]
+instance ShowAction Builder where
+    showAction builder = do
+        let key = case builder of
+                Ar            -> "ar"
+                Ld            -> "ld"
+                Gcc           -> "gcc"
+                Alex          -> "alex"
+                Happy         -> "happy"
+                HsColour      -> "hscolour"
+                GhcCabal      -> "ghc-cabal"
+                Ghc Stage0    -> "system-ghc"     -- Ghc Stage0 is the bootstrapping compiler 
+                Ghc Stage1    -> "ghc-stage1"     -- Ghc StageN, N > 0, is the one built on stage (N - 1)
+                Ghc Stage2    -> "ghc-stage2"
+                Ghc Stage3    -> "ghc-stage3"
+                GhcPkg Stage0 -> "system-ghc-pkg" -- GhcPkg Stage0 is the bootstrapping GhcPkg 
+                GhcPkg _      -> "ghc-pkg"        -- GhcPkg StageN, N > 0, is the one built on stage 0 (TODO: need only Stage1?)
+        cfgPath <- askConfigWithDefault key $
+            error $ "\nCannot find path to '"
+            ++ key
+            ++ "' in configuration files."
+        let cfgPathExe = if cfgPath /= "" then cfgPath -<.> exe else ""
+        windows <- windowsHost
+        if (windows && "/" `isPrefixOf` cfgPathExe)
+        then do
+            Stdout out <- quietly $ cmd ["cygpath", "-m", "/"]
+            return $ dropWhileEnd isSpace out ++ drop 1 cfgPathExe
+        else
+            return cfgPathExe
 
 -- When LaxDeps flag is set (by adding 'lax-dependencies = YES' to user.config),
 -- dependencies on the GHC executable are turned into order-only dependencies to
@@ -55,12 +50,12 @@ argPath builder = do
 -- the flag (at least temporarily).
 needBuilder :: Builder -> Action ()
 needBuilder ghc @ (Ghc stage) = do
-    target  <- path ghc
+    target  <- showAction ghc
     laxDeps <- test LaxDeps
     if laxDeps then orderOnly [target] else need [target]
 
 needBuilder builder = do 
-    target <- path builder
+    target <- showAction builder
     need [target]
 
 -- Action 'with Gcc' returns an argument '--with-gcc=/path/to/gcc' and needs the builder 
@@ -75,18 +70,18 @@ with builder = do
             Happy    -> "--with-happy="
             GhcPkg _ -> "--with-ghc-pkg="
             HsColour -> "--with-hscolour="
-    suffix <- path builder
+    suffix <- showAction builder
     needBuilder builder
     return [prefix ++ suffix]
 
 run :: Builder -> Args -> Action ()
 run builder args = do
     needBuilder builder
-    exe   <- path builder
+    exe   <- showAction builder
     args' <- args
     cmd [exe :: FilePath] args'
 
 hsColourSrcs :: Condition
 hsColourSrcs = do
-    hscolour <- path HsColour
+    hscolour <- showAction HsColour
     return $ hscolour /= ""



More information about the ghc-commits mailing list