[commit: ghc] wip/T16197: Switch to the untracked version of getDirectoryFiles when scanning for GMP objects (7218270)
git at git.haskell.org
git at git.haskell.org
Thu Jan 17 13:59:13 UTC 2019
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/T16197
Link : http://ghc.haskell.org/trac/ghc/changeset/7218270dee1067db9c4f342b97e07ca89b80b82d/ghc
>---------------------------------------------------------------
commit 7218270dee1067db9c4f342b97e07ca89b80b82d
Author: Andrey Mokhov <andrey.mokhov at gmail.com>
Date: Wed Jan 9 21:34:03 2019 +0000
Switch to the untracked version of getDirectoryFiles when scanning for GMP objects
See https://ghc.haskell.org/trac/ghc/ticket/15971.
This is work in progress: this commit does the right thing, but does not
yet fix the ticket.
>---------------------------------------------------------------
7218270dee1067db9c4f342b97e07ca89b80b82d
hadrian/src/Rules/Gmp.hs | 14 +++++++++++++-
hadrian/src/Rules/Library.hs | 7 ++-----
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/hadrian/src/Rules/Gmp.hs b/hadrian/src/Rules/Gmp.hs
index 32265fe..0194518 100644
--- a/hadrian/src/Rules/Gmp.hs
+++ b/hadrian/src/Rules/Gmp.hs
@@ -1,5 +1,5 @@
module Rules.Gmp (
- gmpRules, gmpBuildPath, gmpObjectsDir, gmpLibraryH
+ gmpRules, gmpBuildPath, gmpObjects, gmpLibraryH
) where
import Base
@@ -9,6 +9,18 @@ import Packages
import Target
import Utilities
+-- | Build GMP library objects and return their paths.
+gmpObjects :: Action [FilePath]
+gmpObjects = do
+ gmpPath <- gmpBuildPath
+ need [gmpPath -/- gmpLibraryH]
+ -- We need to use the untracked version of 'getDirectoryFiles', because the
+ -- contents of 'gmpObjectsDir' is built by Hadrian (in 'gmpRules'). Using
+ -- the tracked version can lead to Shake Lint failure.
+ -- See: https://ghc.haskell.org/trac/ghc/ticket/15971.
+ map unifyPath <$>
+ liftIO (getDirectoryFilesIO "" [gmpPath -/- gmpObjectsDir -/- "*.o"])
+
gmpBase :: FilePath
gmpBase = pkgPath integerGmp -/- "gmp"
diff --git a/hadrian/src/Rules/Library.hs b/hadrian/src/Rules/Library.hs
index 1220040..8bd7067 100644
--- a/hadrian/src/Rules/Library.hs
+++ b/hadrian/src/Rules/Library.hs
@@ -103,11 +103,8 @@ cObjects context = do
-- 'Context' is @integer-gmp at .
extraObjects :: Context -> Action [FilePath]
extraObjects context
- | package context == integerGmp = do
- gmpPath <- gmpBuildPath
- need [gmpPath -/- gmpLibraryH]
- map unifyPath <$> getDirectoryFiles "" [gmpPath -/- gmpObjectsDir -/- "*.o"]
- | otherwise = return []
+ | package context == integerGmp = gmpObjects
+ | otherwise = return []
-- | Return all the object files to be put into the library we're building for
-- the given 'Context'.
More information about the ghc-commits
mailing list