diff options
author | Andrey Mokhov <andrey.mokhov@gmail.com> | 2019-01-09 21:34:03 +0000 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2019-01-16 14:17:34 -0500 |
commit | 7218270dee1067db9c4f342b97e07ca89b80b82d (patch) | |
tree | 189c2e9b640fcd9c9e6c63fbae679a4d68117bef | |
parent | 78ae2d5d7984a44db28756677cf1e76369324b83 (diff) | |
download | haskell-7218270dee1067db9c4f342b97e07ca89b80b82d.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'. |