summaryrefslogtreecommitdiff
path: root/compiler/GHC/Unit
diff options
context:
space:
mode:
authorWander Hillen <wjw.hillen@gmail.com>2020-09-25 11:41:06 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-10-13 00:12:47 -0400
commit7fdcce6d4d13a10a1b2336c1d40482c64dba664d (patch)
tree66dfd350e5abef849793060d745d1a1df64e47df /compiler/GHC/Unit
parent9bbc84d20d0f50901351246cbe97c45234ca7d95 (diff)
downloadhaskell-7fdcce6d4d13a10a1b2336c1d40482c64dba664d.tar.gz
Initial ShortText code and conversion of package db code
Metric Decrease: Naperian T10421 T10421a T10547 T12150 T12234 T12425 T13035 T18140 T18304 T5837 T6048 T13253-spj T18282 T18223 T3064 T9961 Metric Increase T13701 HFSKJH
Diffstat (limited to 'compiler/GHC/Unit')
-rw-r--r--compiler/GHC/Unit/Info.hs29
-rw-r--r--compiler/GHC/Unit/State.hs25
2 files changed, 28 insertions, 26 deletions
diff --git a/compiler/GHC/Unit/Info.hs b/compiler/GHC/Unit/Info.hs
index abb2122ef0..1f2366f292 100644
--- a/compiler/GHC/Unit/Info.hs
+++ b/compiler/GHC/Unit/Info.hs
@@ -31,6 +31,7 @@ import Data.Version
import Data.Bifunctor
import GHC.Data.FastString
+import qualified GHC.Data.ShortText as ST
import GHC.Utils.Outputable
import GHC.Unit.Module as Module
import GHC.Types.Unique
@@ -124,21 +125,21 @@ pprUnitInfo GenericUnitInfo {..} =
field "exposed-modules" (ppr unitExposedModules),
field "hidden-modules" (fsep (map ppr unitHiddenModules)),
field "trusted" (ppr unitIsTrusted),
- field "import-dirs" (fsep (map text unitImportDirs)),
- field "library-dirs" (fsep (map text unitLibraryDirs)),
- field "dynamic-library-dirs" (fsep (map text unitLibraryDynDirs)),
- field "hs-libraries" (fsep (map text unitLibraries)),
- field "extra-libraries" (fsep (map text unitExtDepLibsSys)),
- field "extra-ghci-libraries" (fsep (map text unitExtDepLibsGhc)),
- field "include-dirs" (fsep (map text unitIncludeDirs)),
- field "includes" (fsep (map text unitIncludes)),
+ field "import-dirs" (fsep (map (text . ST.unpack) unitImportDirs)),
+ field "library-dirs" (fsep (map (text . ST.unpack) unitLibraryDirs)),
+ field "dynamic-library-dirs" (fsep (map (text . ST.unpack) unitLibraryDynDirs)),
+ field "hs-libraries" (fsep (map (text . ST.unpack) unitLibraries)),
+ field "extra-libraries" (fsep (map (text . ST.unpack) unitExtDepLibsSys)),
+ field "extra-ghci-libraries" (fsep (map (text . ST.unpack) unitExtDepLibsGhc)),
+ field "include-dirs" (fsep (map (text . ST.unpack) unitIncludeDirs)),
+ field "includes" (fsep (map (text . ST.unpack) unitIncludes)),
field "depends" (fsep (map ppr unitDepends)),
- field "cc-options" (fsep (map text unitCcOptions)),
- field "ld-options" (fsep (map text unitLinkerOptions)),
- field "framework-dirs" (fsep (map text unitExtDepFrameworkDirs)),
- field "frameworks" (fsep (map text unitExtDepFrameworks)),
- field "haddock-interfaces" (fsep (map text unitHaddockInterfaces)),
- field "haddock-html" (fsep (map text unitHaddockHTMLs))
+ field "cc-options" (fsep (map (text . ST.unpack) unitCcOptions)),
+ field "ld-options" (fsep (map (text . ST.unpack) unitLinkerOptions)),
+ field "framework-dirs" (fsep (map (text . ST.unpack) unitExtDepFrameworkDirs)),
+ field "frameworks" (fsep (map (text . ST.unpack) unitExtDepFrameworks)),
+ field "haddock-interfaces" (fsep (map (text . ST.unpack) unitHaddockInterfaces)),
+ field "haddock-html" (fsep (map (text . ST.unpack) unitHaddockHTMLs))
]
where
field name body = text name <> colon <+> nest 4 body
diff --git a/compiler/GHC/Unit/State.hs b/compiler/GHC/Unit/State.hs
index be5b08110d..78f96c90f3 100644
--- a/compiler/GHC/Unit/State.hs
+++ b/compiler/GHC/Unit/State.hs
@@ -99,6 +99,7 @@ import GHC.Data.Maybe
import System.Environment ( getEnv )
import GHC.Data.FastString
+import qualified GHC.Data.ShortText as ST
import GHC.Utils.Error ( debugTraceMsg, MsgDoc, dumpIfSet_dyn,
withTiming, DumpFormat (..) )
import GHC.Utils.Exception
@@ -749,7 +750,7 @@ mungeUnitInfo :: FilePath -> FilePath
-> UnitInfo -> UnitInfo
mungeUnitInfo top_dir pkgroot =
mungeDynLibFields
- . mungeUnitInfoPaths top_dir pkgroot
+ . mungeUnitInfoPaths (ST.pack top_dir) (ST.pack pkgroot)
mungeDynLibFields :: UnitInfo -> UnitInfo
mungeDynLibFields pkg =
@@ -1797,7 +1798,7 @@ getUnitIncludePath ctx unit_state home_unit pkgs =
collectIncludeDirs `fmap` getPreloadUnitsAnd ctx unit_state home_unit pkgs
collectIncludeDirs :: [UnitInfo] -> [FilePath]
-collectIncludeDirs ps = ordNub (filter notNull (concatMap unitIncludeDirs ps))
+collectIncludeDirs ps = map ST.unpack $ ordNub (filter (not . ST.null) (concatMap unitIncludeDirs ps))
-- | Find all the library paths in these and the preload packages
getUnitLibraryPath :: SDocContext -> UnitState -> HomeUnit -> Ways -> [UnitId] -> IO [String]
@@ -1822,8 +1823,8 @@ collectLinkOpts :: DynFlags -> [UnitInfo] -> ([String], [String], [String])
collectLinkOpts dflags ps =
(
concatMap (map ("-l" ++) . packageHsLibs dflags) ps,
- concatMap (map ("-l" ++) . unitExtDepLibsSys) ps,
- concatMap unitLinkerOptions ps
+ concatMap (map ("-l" ++) . map ST.unpack . unitExtDepLibsSys) ps,
+ concatMap (map ST.unpack . unitLinkerOptions) ps
)
collectArchives :: DynFlags -> UnitInfo -> IO [FilePath]
collectArchives dflags pc =
@@ -1831,7 +1832,7 @@ collectArchives dflags pc =
| searchPath <- searchPaths
, lib <- libs ]
where searchPaths = ordNub . filter notNull . libraryDirsForWay (ways dflags) $ pc
- libs = packageHsLibs dflags pc ++ unitExtDepLibsSys pc
+ libs = packageHsLibs dflags pc ++ (map ST.unpack $ unitExtDepLibsSys pc)
getLibs :: DynFlags -> [UnitId] -> IO [(String,String)]
getLibs dflags pkgs = do
@@ -1846,7 +1847,7 @@ getLibs dflags pkgs = do
filterM (doesFileExist . fst) candidates
packageHsLibs :: DynFlags -> UnitInfo -> [String]
-packageHsLibs dflags p = map (mkDynName . addSuffix) (unitLibraries p)
+packageHsLibs dflags p = map (mkDynName . addSuffix . ST.unpack) (unitLibraries p)
where
ways0 = ways dflags
@@ -1895,27 +1896,27 @@ packageHsLibs dflags p = map (mkDynName . addSuffix) (unitLibraries p)
-- | Either the 'unitLibraryDirs' or 'unitLibraryDynDirs' as appropriate for the way.
libraryDirsForWay :: Ways -> UnitInfo -> [String]
-libraryDirsForWay ws
- | WayDyn `elem` ws = unitLibraryDynDirs
- | otherwise = unitLibraryDirs
+libraryDirsForWay ws ui
+ | WayDyn `elem` ws = map ST.unpack $ unitLibraryDynDirs ui
+ | otherwise = map ST.unpack $ unitLibraryDirs ui
-- | Find all the C-compiler options in these and the preload packages
getUnitExtraCcOpts :: SDocContext -> UnitState -> HomeUnit -> [UnitId] -> IO [String]
getUnitExtraCcOpts ctx unit_state home_unit pkgs = do
ps <- getPreloadUnitsAnd ctx unit_state home_unit pkgs
- return (concatMap unitCcOptions ps)
+ return $ map ST.unpack (concatMap unitCcOptions ps)
-- | Find all the package framework paths in these and the preload packages
getUnitFrameworkPath :: SDocContext -> UnitState -> HomeUnit -> [UnitId] -> IO [String]
getUnitFrameworkPath ctx unit_state home_unit pkgs = do
ps <- getPreloadUnitsAnd ctx unit_state home_unit pkgs
- return (ordNub (filter notNull (concatMap unitExtDepFrameworkDirs ps)))
+ return $ map ST.unpack (ordNub (filter (not . ST.null) (concatMap unitExtDepFrameworkDirs ps)))
-- | Find all the package frameworks in these and the preload packages
getUnitFrameworks :: SDocContext -> UnitState -> HomeUnit -> [UnitId] -> IO [String]
getUnitFrameworks ctx unit_state home_unit pkgs = do
ps <- getPreloadUnitsAnd ctx unit_state home_unit pkgs
- return (concatMap unitExtDepFrameworks ps)
+ return $ map ST.unpack (concatMap unitExtDepFrameworks ps)
-- -----------------------------------------------------------------------------
-- Package Utils