[commit: ghc] wip/nfs-locking: Copy generated files to old build directories. (90c59d1)

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


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

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

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

commit 90c59d1382021802b10c385b93b70a6967a25719
Author: Andrey Mokhov <andrey.mokhov at gmail.com>
Date:   Sun Feb 7 02:32:32 2016 +0000

    Copy generated files to old build directories.
    
    See #98.


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

90c59d1382021802b10c385b93b70a6967a25719
 src/Rules/Generate.hs | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/Rules/Generate.hs b/src/Rules/Generate.hs
index 9c67760..4ced436 100644
--- a/src/Rules/Generate.hs
+++ b/src/Rules/Generate.hs
@@ -3,6 +3,8 @@ module Rules.Generate (
     includesDependencies, derivedConstantsPath, generatedDependencies
     ) where
 
+import qualified System.Directory as IO
+
 import Base
 import Expression
 import GHC
@@ -144,19 +146,32 @@ generatePackageCode _ target @ (PartialTarget stage pkg) =
             , "*.hs-incl" ] |%> \file -> do
                 need [primopsTxt stage]
                 build $ fullTarget target GenPrimopCode [primopsTxt stage] [file]
+                -- TODO: this is temporary hack, get rid of this (#113)
+                let oldPath = pkgPath pkg -/- targetDirectory stage pkg -/- "build"
+                    newFile = oldPath ++ (drop (length buildPath) file)
+                createDirectory $ takeDirectory newFile
+                liftIO $ IO.copyFile file newFile
+                putSuccess $ "| Duplicate file " ++ file ++ " -> " ++ newFile
 
         when (pkg == rts) $ buildPath -/- "AutoApply.cmm" %> \file -> do
             build $ fullTarget target GenApply [] [file]
 
         priority 2.0 $ do
+            -- TODO: this is temporary hack, get rid of this (#113)
+            let oldPath = pkgPath pkg -/- targetDirectory stage pkg -/- "build"
+                olden f = oldPath ++ (drop (length buildPath) f)
+
             when (pkg == compiler) $ buildPath -/- "Config.hs" %> \file -> do
                 file <~ generateConfigHs
+                olden file <~ generateConfigHs -- TODO: get rid of this (#113)
 
             when (pkg == compiler) $ platformH stage %> \file -> do
                 file <~ generateGhcBootPlatformH
+                olden file <~ generateGhcBootPlatformH -- TODO: get rid of this (#113)
 
             when (pkg == ghcPkg) $ buildPath -/- "Version.hs" %> \file -> do
                 file <~ generateVersionHs
+                olden file <~ generateVersionHs -- TODO: get rid of this (#113)
 
             when (pkg == runGhc) $ buildPath -/- "Main.hs" %> \file -> do
                 copyFileChanged (pkgPath pkg -/- "runghc.hs") file



More information about the ghc-commits mailing list