[commit: ghc] wip/nfs-locking: Add Make builder. (f31a7de)

git at git.haskell.org git at git.haskell.org
Fri Oct 27 00:12:19 UTC 2017


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

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

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

commit f31a7de2d4a6886edc64ff5bfb3301bbdee7cc2c
Author: Andrey Mokhov <andrey.mokhov at gmail.com>
Date:   Tue May 10 00:32:04 2016 +0100

    Add Make builder.


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

f31a7de2d4a6886edc64ff5bfb3301bbdee7cc2c
 hadrian.cabal        |  1 +
 src/Builder.hs       |  4 ++--
 src/Rules/Actions.hs | 19 +++++++------------
 src/Rules/Gmp.hs     |  2 +-
 src/Rules/Libffi.hs  |  2 +-
 src/Rules/Test.hs    |  5 +++--
 src/Settings/Args.hs |  2 ++
 7 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/hadrian.cabal b/hadrian.cabal
index 160a5d0..2dfd9e9 100644
--- a/hadrian.cabal
+++ b/hadrian.cabal
@@ -84,6 +84,7 @@ executable hadrian
                        , Settings.Builders.Hsc2Hs
                        , Settings.Builders.HsCpp
                        , Settings.Builders.Ld
+                       , Settings.Builders.Make
                        , Settings.Builders.Tar
                        , Settings.Default
                        , Settings.Packages
diff --git a/src/Builder.hs b/src/Builder.hs
index a205067..76f0988 100644
--- a/src/Builder.hs
+++ b/src/Builder.hs
@@ -49,7 +49,7 @@ data Builder = Alex
              | HsCpp
              | Hsc2Hs
              | Ld
-             | Make
+             | Make FilePath
              | Nm
              | Objdump
              | Patch
@@ -111,7 +111,7 @@ builderPath builder = case builderProvenance builder of
         HsColour      -> fromKey "hscolour"
         HsCpp         -> fromKey "hs-cpp"
         Ld            -> fromKey "ld"
-        Make          -> fromKey "make"
+        Make _        -> fromKey "make"
         Nm            -> fromKey "nm"
         Objdump       -> fromKey "objdump"
         Patch         -> fromKey "patch"
diff --git a/src/Rules/Actions.hs b/src/Rules/Actions.hs
index 4928e00..4a0844b 100644
--- a/src/Rules/Actions.hs
+++ b/src/Rules/Actions.hs
@@ -1,8 +1,7 @@
 module Rules.Actions (
-    build, buildWithResources, buildWithCmdOptions, copyFile, moveFile,
-    removeFile, createDirectory, removeDirectory, copyDirectory, moveDirectory,
-    applyPatch, fixFile, runMake, renderLibrary, renderProgram, runBuilder,
-    makeExecutable
+    build, buildWithCmdOptions, buildWithResources, copyFile, fixFile, moveFile,
+    removeFile, copyDirectory, createDirectory, moveDirectory, removeDirectory,
+    applyPatch, renderLibrary, renderProgram, runBuilder, makeExecutable
     ) where
 
 import qualified System.Directory       as IO
@@ -74,6 +73,10 @@ customBuild rs opts target at Target {..} = do
                 Stdout output <- cmd (Stdin input) [path] argList
                 writeFileChanged file output
 
+            Make dir -> do
+                need [dir -/- "Makefile"]
+                cmd Shell cmdEcho path ["-C", dir] argList
+
             _  -> cmd [path] argList
 
 cmdEcho :: CmdOption
@@ -140,14 +143,6 @@ fixFile file f = do
         return new
     liftIO $ writeFile file contents
 
-runMake :: FilePath -> [String] -> Action ()
-runMake dir args = do
-    need [dir -/- "Makefile"]
-    path <- builderPath Make
-    let note = if null args then "" else " (" ++ intercalate ", " args ++ ")"
-    putBuild $ "| Run make" ++ note ++ " in " ++ dir ++ "..."
-    quietly $ cmd Shell cmdEcho path ["-C", dir] args
-
 applyPatch :: FilePath -> FilePath -> Action ()
 applyPatch dir patch = do
     let file = dir -/- patch
diff --git a/src/Rules/Gmp.hs b/src/Rules/Gmp.hs
index 1121d5d..fe5b684 100644
--- a/src/Rules/Gmp.hs
+++ b/src/Rules/Gmp.hs
@@ -84,7 +84,7 @@ gmpRules = do
                        [gmpBuildPath -/- "Makefile.in"]
                        [gmpBuildPath -/- "Makefile"]
 
-            runMake gmpBuildPath ["MAKEFLAGS="]
+            build $ Target gmpContext (Make gmpBuildPath) [] []
 
             createDirectory $ takeDirectory gmpLibraryH
             copyFile (gmpBuildPath -/- "gmp.h") gmpLibraryH
diff --git a/src/Rules/Libffi.hs b/src/Rules/Libffi.hs
index 20d5acf..3269a31 100644
--- a/src/Rules/Libffi.hs
+++ b/src/Rules/Libffi.hs
@@ -99,7 +99,7 @@ libffiRules = do
 
             -- The old build system did runMake libffiBuildPath ["MAKEFLAGS="]
             -- TODO: Find out why. It seems redundant, so I removed it.
-            runMake libffiBuildPath ["MAKEFLAGS=", "install"]
+            build $ Target libffiContext (Make libffiBuildPath) [] []
 
             let ffiHDir = libffiBuildPath -/- "inst/lib" -/- libname -/- "include"
             forM_ ["ffi.h", "ffitarget.h"] $ \file -> do
diff --git a/src/Rules/Test.hs b/src/Rules/Test.hs
index 544b5d9..7ec5e04 100644
--- a/src/Rules/Test.hs
+++ b/src/Rules/Test.hs
@@ -3,13 +3,14 @@ module Rules.Test (testRules) where
 import Base
 import Builder
 import Expression
-import GHC (rts, libffi)
+import GHC (compiler, rts, libffi)
 import Oracles.Config.Flag
 import Oracles.Config.Setting
 import Oracles.WindowsPath
 import Rules.Actions
 import Settings.Packages
 import Settings.User
+import Target
 
 -- TODO: clean up after testing
 testRules :: Rules ()
@@ -18,7 +19,7 @@ testRules = do
         needBuilder $ Ghc Compile Stage2
         needBuilder $ GhcPkg Stage1
         needBuilder Hpc
-        runMake "testsuite/tests" ["fast"]
+        build $ Target (vanillaContext Stage2 compiler) (Make "testsuite/tests") [] []
 
     "test" ~> do
         let yesNo x = show $ if x then "YES" else "NO"
diff --git a/src/Settings/Args.hs b/src/Settings/Args.hs
index b7c369f..d8c3649 100644
--- a/src/Settings/Args.hs
+++ b/src/Settings/Args.hs
@@ -17,6 +17,7 @@ import Settings.Builders.Happy
 import Settings.Builders.Hsc2Hs
 import Settings.Builders.HsCpp
 import Settings.Builders.Ld
+import Settings.Builders.Make
 import Settings.Builders.Tar
 import Settings.Flavours.Quick
 import Settings.Packages.Base
@@ -66,6 +67,7 @@ defaultBuilderArgs = mconcat
     , hsc2hsBuilderArgs
     , hsCppBuilderArgs
     , ldBuilderArgs
+    , makeBuilderArgs
     , tarBuilderArgs ]
 
 defaultPackageArgs :: Args



More information about the ghc-commits mailing list