diff options
author | Andrey Mokhov <andrey.mokhov@gmail.com> | 2019-01-09 21:34:03 +0000 |
---|---|---|
committer | Ben Gamari <ben@well-typed.com> | 2019-01-14 22:55:50 -0500 |
commit | e93901c42ebaa033e14cf69cfcc8b6a25e5234a5 (patch) | |
tree | 31f8ef28cdd2cee994fa567f5cc5a5f148f1f1c3 | |
parent | 69947d58c29cc0b047cc34fb4873e12f47e9674c (diff) | |
download | haskell-e93901c42ebaa033e14cf69cfcc8b6a25e5234a5.tar.gz |
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.
-rw-r--r-- | hadrian/src/Rules/Gmp.hs | 14 | ||||
-rw-r--r-- | 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 32265fe401..0194518d05 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 122004084a..8bd7067202 100644 --- a/hadrian/src/Rules/Library.hs +++ b/hadrian/src/Rules/Library.hs @@ -103,11 +103,8 @@ cObjects context = do -- 'Context' is @integer-gmp@. 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'. |