diff options
author | Duncan Coutts <duncan@well-typed.com> | 2014-08-24 03:38:39 +0100 |
---|---|---|
committer | Edward Z. Yang <ezyang@cs.stanford.edu> | 2014-08-29 12:39:04 +0100 |
commit | a4cb9a6173f0af76a32b812c022bbdd76b2abfac (patch) | |
tree | bd7183486166fcd4eb714dc777233e3d15fc9cca /compiler/main/Packages.lhs | |
parent | 8955b5eea3e8c1ddcba57261ab0e1250783ddda2 (diff) | |
download | haskell-a4cb9a6173f0af76a32b812c022bbdd76b2abfac.tar.gz |
Add a ghc -show-packages mode to display ghc's view of the package env
You can use ghc -show-packages, in addition to any -package -package-conf
-hide-package, etc flags and see just what ghc's package info looks like.
The format is much like ghc-pkg show.
Like the existing verbose tracing, but a specific mode.
Re-introduce pretty printed package info (Cabal handled this previously).
Diffstat (limited to 'compiler/main/Packages.lhs')
-rw-r--r-- | compiler/main/Packages.lhs | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/compiler/main/Packages.lhs b/compiler/main/Packages.lhs index 9b18a33eae..af2d3fe952 100644 --- a/compiler/main/Packages.lhs +++ b/compiler/main/Packages.lhs @@ -16,8 +16,6 @@ module Packages ( lookupPackage, resolveInstalledPackageId, searchPackageId, - dumpPackages, - simpleDumpPackages, getPackageDetails, listVisibleModuleNames, lookupModuleInAllPackages, @@ -42,6 +40,8 @@ module Packages ( -- * Utils packageKeyPackageIdString, pprFlag, + pprPackages, + pprPackagesSimple, pprModuleMap, isDllName ) @@ -63,7 +63,7 @@ import Maybes import System.Environment ( getEnv ) import FastString -import ErrUtils ( debugTraceMsg, putMsg, MsgDoc ) +import ErrUtils ( debugTraceMsg, MsgDoc ) import Exception import Unique @@ -1422,21 +1422,20 @@ isDllName dflags _this_pkg this_mod name -- ----------------------------------------------------------------------------- -- Displaying packages --- | Show (very verbose) package info on console, if verbosity is >= 5 -dumpPackages :: DynFlags -> IO () -dumpPackages = dumpPackages' showInstalledPackageInfo +-- | Show (very verbose) package info +pprPackages :: DynFlags -> SDoc +pprPackages = pprPackagesWith pprPackageConfig -dumpPackages' :: (PackageConfig -> String) -> DynFlags -> IO () -dumpPackages' showIPI dflags - = do putMsg dflags $ - vcat (map (text . showIPI) - (listPackageConfigMap dflags)) +pprPackagesWith :: (PackageConfig -> SDoc) -> DynFlags -> SDoc +pprPackagesWith pprIPI dflags = + vcat (intersperse (text "---") (map pprIPI (listPackageConfigMap dflags))) --- | Show simplified package info on console, if verbosity == 4. +-- | Show simplified package info. +-- -- The idea is to only print package id, and any information that might -- be different from the package databases (exposure, trust) -simpleDumpPackages :: DynFlags -> IO () -simpleDumpPackages = dumpPackages' showIPI +pprPackagesSimple :: DynFlags -> SDoc +pprPackagesSimple = pprPackagesWith (text . showIPI) where showIPI ipi = let InstalledPackageId i = installedPackageId ipi e = if exposed ipi then "E" else " " t = if trusted ipi then "T" else " " |