[commit: ghc] wip/nfs-locking: Move functions ghcOpts, packageArgs, includeArgs, srcArgs. (ccb5848)

git at git.haskell.org git at git.haskell.org
Thu Oct 26 23:48:52 UTC 2017


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

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

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

commit ccb58488381da821a99c95965d7a101d040bfd1f
Author: Andrey Mokhov <andrey.mokhov at gmail.com>
Date:   Sun Jan 11 03:29:44 2015 +0000

    Move functions ghcOpts, packageArgs, includeArgs, srcArgs.


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

ccb58488381da821a99c95965d7a101d040bfd1f
 src/Package/Base.hs | 33 ++++++++++++++++++++++++++-------
 1 file changed, 26 insertions(+), 7 deletions(-)

diff --git a/src/Package/Base.hs b/src/Package/Base.hs
index 43b4a37..4ef03fb 100644
--- a/src/Package/Base.hs
+++ b/src/Package/Base.hs
@@ -7,7 +7,8 @@ module Package.Base (
     Package (..), Settings (..), TodoItem (..),
     defaultSettings, libraryPackage,
     commonCcArgs, commonLdArgs, commonCppArgs, commonCcWarninigArgs,
-    bootPkgConstraints, ghcOpts
+    bootPkgConstraints,
+    packageArgs, includeArgs, srcArgs
     ) where
 
 import Base
@@ -76,10 +77,28 @@ bootPkgConstraints = mempty
 --        $(foreach p,$(basename $(notdir $(wildcard libraries/$d/*.cabal))),\
 --            --constraint "$p == $(shell grep -i "^Version:" libraries/$d/$p.cabal | sed "s/[^0-9.]//g")"))
 
--- TODO: move?
-ghcOpts :: Package -> Stage -> Way -> Action [String]
-ghcOpts pkg stage way = do
-    return $ ["-hisuf " ++ hisuf way]
-        ++   ["-osuf "  ++ osuf  way]
-        ++   ["-hcsuf " ++ hcsuf way]
+packageArgs :: Stage -> FilePath -> Args
+packageArgs stage pkgData = do
+    usePackageKey <- SupportsPackageKey || stage /= Stage0
+    arg ["-hide-all-packages", "-no-user-package-db", "-include-pkg-deps"]
+        <> when (stage == Stage0) (arg "-package-db libraries/bootstrapping.conf")
+        <> keyArgs usePackageKey
+  where
+    keyArgs True  = prefixArgs "-this-package-key" (PackageKey pkgData) <>
+                    prefixArgs "-package-key"      (DepKeys    pkgData)
+    keyArgs False = prefixArgs "-package-name"     (PackageKey pkgData) <>
+                    prefixArgs "-package"          (Deps       pkgData)
 
+includeArgs :: ShowArgs a => String -> FilePath -> a -> Args
+includeArgs prefix path as = map includePath <$> arg as
+  where
+    includePath dir | isRelative dir = prefix ++ path </> dir
+                    | isAbsolute dir = prefix         </> dir
+
+srcArgs :: FilePath -> FilePath -> Args
+srcArgs path pkgData = do
+    mods <- map (replaceEq '.' pathSeparator) <$> arg (Modules pkgData)
+    dirs <- arg (SrcDirs pkgData)
+    srcs <- getDirectoryFiles ""
+        [path </> dir </> mPath <.> ext | dir <- dirs, mPath <- mods, ext <- ["hs", "lhs"]]
+    arg (map normaliseEx srcs)



More information about the ghc-commits mailing list