[commit: ghc] wip/nfs-locking: Factor out postProcessPackageData to Util.hs. (c4cc0dc)

git at git.haskell.org git at git.haskell.org
Thu Oct 26 23:45:50 UTC 2017


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

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

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

commit c4cc0dc7ab0465a67f9f81e309fa10eaa210b772
Author: Andrey Mokhov <andrey.mokhov at gmail.com>
Date:   Tue Dec 30 15:33:06 2014 +0000

    Factor out postProcessPackageData to Util.hs.


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

c4cc0dc7ab0465a67f9f81e309fa10eaa210b772
 src/Package.hs |  6 ++----
 src/Util.hs    | 12 +++++++++++-
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/Package.hs b/src/Package.hs
index 8488044..24ef85d 100644
--- a/src/Package.hs
+++ b/src/Package.hs
@@ -122,15 +122,13 @@ buildPackageData pkg @ (Package name path _) (stage, dist, settings) =
           "inplace-pkg-config",
           "setup-config",
           "build" </> "autogen" </> "cabal_macros.h",
-          "build" </> "autogen" </> ("Paths_" ++ name) <.> "hs" -- TODO: Is this needed? What's up with Paths_cpsa.hs?
+          "build" </> "autogen" </> ("Paths_" ++ name) <.> "hs" -- TODO: Is this needed? Also check out Paths_cpsa.hs.
         ] &%> \_ -> do
             need [path </> name <.> "cabal"]
             when (doesFileExist $ path </> "configure.ac") $ need [path </> "configure"]
             run GhcCabal cabalArgs
             when (registerPackage settings) $ run (GhcPkg stage) ghcPkgArgs
-            let pkgDataFile = path </> dist </> "package-data.mk"                 
-            pkgData <- lines <$> liftIO (readFile pkgDataFile)
-            length pkgData `seq` writeFileLines pkgDataFile $ map (replaceIf isSlash '_') $ filter ('$' `notElem`) pkgData
+            postProcessPackageData $ path </> dist </> "package-data.mk"
               where
                 cabalArgs, ghcPkgArgs :: Args
                 cabalArgs = mconcat
diff --git a/src/Util.hs b/src/Util.hs
index 8afd6cb..b8a38f4 100644
--- a/src/Util.hs
+++ b/src/Util.hs
@@ -1,9 +1,11 @@
 module Util (
     module Data.Char,
     isSlash,
-    replaceIf, replaceEq
+    replaceIf, replaceEq,
+    postProcessPackageData
     ) where
 
+import Base
 import Data.Char
 
 isSlash :: Char -> Bool
@@ -14,3 +16,11 @@ replaceIf p to = map (\from -> if p from then to else from)
 
 replaceEq :: Eq a => a -> a -> [a] -> [a]
 replaceEq from = replaceIf (== from)
+
+-- Prepare a given 'packaga-data.mk' file for parsing by readConfigFile:
+-- 1) Drop lines containing '$'
+-- 2) Replace '/' and '\' with '_'
+postProcessPackageData :: FilePath -> Action ()
+postProcessPackageData file = do
+    pkgData <- (filter ('$' `notElem`) . lines) <$> liftIO (readFile file)
+    length pkgData `seq` writeFileLines file $ map (replaceIf isSlash '_') pkgData



More information about the ghc-commits mailing list