[commit: ghc] wip/nfs-locking: Add GenApply builder, #22. (4b70d6e)

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


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

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

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

commit 4b70d6e8c474ba0a7789be0b3009e625c1a27820
Author: Andrey Mokhov <andrey.mokhov at gmail.com>
Date:   Sat Jan 2 02:09:27 2016 +0000

    Add GenApply builder, #22.


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

4b70d6e8c474ba0a7789be0b3009e625c1a27820
 cfg/system.config.in              |  1 +
 shaking-up-ghc.cabal              |  4 +++-
 src/Builder.hs                    |  2 ++
 src/Rules/Actions.hs              | 16 ++++++++++------
 src/Settings/Args.hs              |  4 ++++
 src/Settings/Builders/GenApply.hs |  8 ++++++++
 6 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/cfg/system.config.in b/cfg/system.config.in
index a2cfef3..c5808c7 100644
--- a/cfg/system.config.in
+++ b/cfg/system.config.in
@@ -22,6 +22,7 @@ haddock          = inplace/bin/haddock
 hsc2hs           = inplace/bin/hsc2hs
 
 genprimopcode    = inplace/bin/genprimopcode
+genapply         = inplace/bin/genapply
 derive-constants = inplace/bin/deriveConstants
 
 hs-cpp           = @HaskellCPPCmd@
diff --git a/shaking-up-ghc.cabal b/shaking-up-ghc.cabal
index 2c75566..48dd0b8 100644
--- a/shaking-up-ghc.cabal
+++ b/shaking-up-ghc.cabal
@@ -38,6 +38,7 @@ executable ghc-shake
                        , Rules.Cabal
                        , Rules.Compile
                        , Rules.Config
+                       , Rules.Copy
                        , Rules.Data
                        , Rules.Dependencies
                        , Rules.Documentation
@@ -48,7 +49,6 @@ executable ghc-shake
                        , Rules.Generators.GhcPlatformH
                        , Rules.Generators.GhcVersionH
                        , Rules.Generators.VersionHs
-                       , Rules.Install
                        , Rules.Library
                        , Rules.Oracles
                        , Rules.Package
@@ -63,6 +63,7 @@ executable ghc-shake
                        , Settings.Builders.Common
                        , Settings.Builders.DeriveConstants
                        , Settings.Builders.Gcc
+                       , Settings.Builders.GenApply
                        , Settings.Builders.GenPrimopCode
                        , Settings.Builders.Ghc
                        , Settings.Builders.GhcCabal
@@ -82,6 +83,7 @@ executable ghc-shake
                        , Settings.Packages.Haddock
                        , Settings.Packages.Hp2ps
                        , Settings.Packages.IntegerGmp
+                       , Settings.Packages.Rts
                        , Settings.Packages.RunGhc
                        , Settings.TargetDirectory
                        , Settings.User
diff --git a/src/Builder.hs b/src/Builder.hs
index b4b01c3..c8e3f6e 100644
--- a/src/Builder.hs
+++ b/src/Builder.hs
@@ -25,6 +25,7 @@ data Builder = Alex
              | DeriveConstants
              | Gcc Stage
              | GccM Stage
+             | GenApply
              | GenPrimopCode
              | Ghc Stage
              | GhcCabal
@@ -60,6 +61,7 @@ builderKey builder = case builder of
     Gcc Stage0       -> "system-gcc"
     Gcc _            -> "gcc"
     GccM stage       -> builderKey $ Gcc stage -- synonym for 'Gcc -MM'
+    GenApply         -> "genapply"
     GenPrimopCode    -> "genprimopcode"
     Ghc Stage0       -> "system-ghc"
     Ghc Stage1       -> "ghc-stage1"
diff --git a/src/Rules/Actions.hs b/src/Rules/Actions.hs
index 8b243eb..e930b52 100644
--- a/src/Rules/Actions.hs
+++ b/src/Rules/Actions.hs
@@ -27,14 +27,12 @@ buildWithResources rs target = do
         quietlyUnlessVerbose $ case builder of
             Ar -> arCmd path argList
 
-            HsCpp -> do
-                let file = head $ Target.outputs target  -- TODO: ugly
-                Stdout output <- cmd [path] argList
-                writeFileChanged file output
+            HsCpp    -> captureStdout target path argList
+            GenApply -> captureStdout target path argList
 
             GenPrimopCode -> do
-                let src  = head $ Target.inputs target -- TODO: ugly
-                    file = head $ Target.outputs target
+                src  <- interpret target getInput
+                file <- interpret target getOutput
                 input <- readFile' src
                 Stdout output <- cmd (Stdin input) [path] argList
                 writeFileChanged file output
@@ -45,6 +43,12 @@ buildWithResources rs target = do
 build :: Target -> Action ()
 build = buildWithResources []
 
+captureStdout :: Target -> FilePath -> [String] -> Action ()
+captureStdout target path argList = do
+    file <- interpret target getOutput
+    Stdout output <- cmd [path] argList
+    writeFileChanged file output
+
 -- Print out key information about the command being executed
 putInfo :: Target.Target -> Action ()
 putInfo (Target.Target {..}) = putBuild $ renderBox $
diff --git a/src/Settings/Args.hs b/src/Settings/Args.hs
index 8066e81..c4c919c 100644
--- a/src/Settings/Args.hs
+++ b/src/Settings/Args.hs
@@ -7,6 +7,7 @@ import Settings.Builders.Alex
 import Settings.Builders.Ar
 import Settings.Builders.DeriveConstants
 import Settings.Builders.Gcc
+import Settings.Builders.GenApply
 import Settings.Builders.GenPrimopCode
 import Settings.Builders.Ghc
 import Settings.Builders.GhcCabal
@@ -25,6 +26,7 @@ import Settings.Packages.GhcPrim
 import Settings.Packages.Haddock
 import Settings.Packages.Hp2ps
 import Settings.Packages.IntegerGmp
+import Settings.Packages.Rts
 import Settings.Packages.RunGhc
 import Settings.User
 
@@ -44,6 +46,7 @@ defaultBuilderArgs = mconcat
     , deriveConstantsBuilderArgs
     , gccBuilderArgs
     , gccMBuilderArgs
+    , genApplyBuilderArgs
     , genPrimopCodeBuilderArgs
     , ghcBuilderArgs
     , ghcCabalBuilderArgs
@@ -67,4 +70,5 @@ defaultPackageArgs = mconcat
     , haddockPackageArgs
     , hp2psPackageArgs
     , integerGmpPackageArgs
+    , rtsPackageArgs
     , runGhcPackageArgs ]
diff --git a/src/Settings/Builders/GenApply.hs b/src/Settings/Builders/GenApply.hs
new file mode 100644
index 0000000..2d8140a
--- /dev/null
+++ b/src/Settings/Builders/GenApply.hs
@@ -0,0 +1,8 @@
+module Settings.Builders.GenApply (genApplyBuilderArgs) where
+
+import Expression
+
+-- Stdin/stdout are handled in a special way. See Rules/Actions.hs.
+-- TODO: Dead code? ifeq "$(GhcUnregisterised)" "YES" GENAPPLY_OPTS = -u
+genApplyBuilderArgs :: Args
+genApplyBuilderArgs = mempty



More information about the ghc-commits mailing list