summaryrefslogtreecommitdiff
path: root/compiler/main/PackageConfig.hs
diff options
context:
space:
mode:
authorDuncan Coutts <duncan@well-typed.com>2014-08-24 03:38:39 +0100
committerEdward Z. Yang <ezyang@cs.stanford.edu>2014-08-29 12:39:04 +0100
commita4cb9a6173f0af76a32b812c022bbdd76b2abfac (patch)
treebd7183486166fcd4eb714dc777233e3d15fc9cca /compiler/main/PackageConfig.hs
parent8955b5eea3e8c1ddcba57261ab0e1250783ddda2 (diff)
downloadhaskell-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/PackageConfig.hs')
-rw-r--r--compiler/main/PackageConfig.hs41
1 files changed, 31 insertions, 10 deletions
diff --git a/compiler/main/PackageConfig.hs b/compiler/main/PackageConfig.hs
index 7cd2779bc4..3124e292c1 100644
--- a/compiler/main/PackageConfig.hs
+++ b/compiler/main/PackageConfig.hs
@@ -1,4 +1,4 @@
-{-# LANGUAGE CPP #-}
+{-# LANGUAGE CPP, RecordWildCards #-}
-- |
-- Package configuration information: essentially the interface to Cabal, with
@@ -23,7 +23,7 @@ module PackageConfig (
installedPackageIdString,
sourcePackageIdString,
packageNameString,
- showInstalledPackageInfo,
+ pprPackageConfig,
) where
#include "HsVersions.h"
@@ -97,14 +97,35 @@ packageNameString pkg = str
where
PackageName str = packageName pkg
-showInstalledPackageInfo :: PackageConfig -> String
-showInstalledPackageInfo = show
-
-instance Show ModuleName where
- show = moduleNameString
-
-instance Show PackageKey where
- show = packageKeyString
+pprPackageConfig :: PackageConfig -> SDoc
+pprPackageConfig InstalledPackageInfo {..} =
+ vcat [
+ field "name" (ppr packageName),
+ field "version" (text (showVersion packageVersion)),
+ field "id" (ppr installedPackageId),
+ field "key" (ppr packageKey),
+ field "exposed" (ppr exposed),
+ field "exposed-modules" (fsep (map ppr exposedModules)),
+ field "hidden-modules" (fsep (map ppr hiddenModules)),
+ field "reexported-modules" (fsep (map ppr haddockHTMLs)),
+ field "trusted" (ppr trusted),
+ field "import-dirs" (fsep (map text importDirs)),
+ field "library-dirs" (fsep (map text libraryDirs)),
+ field "hs-libraries" (fsep (map text hsLibraries)),
+ field "extra-libraries" (fsep (map text extraLibraries)),
+ field "extra-ghci-libraries" (fsep (map text extraGHCiLibraries)),
+ field "include-dirs" (fsep (map text includeDirs)),
+ field "includes" (fsep (map text includes)),
+ field "depends" (fsep (map ppr depends)),
+ field "cc-options" (fsep (map text ccOptions)),
+ field "ld-options" (fsep (map text ldOptions)),
+ field "framework-dirs" (fsep (map text frameworkDirs)),
+ field "frameworks" (fsep (map text frameworks)),
+ field "haddock-interfaces" (fsep (map text haddockInterfaces)),
+ field "haddock-html" (fsep (map text haddockHTMLs))
+ ]
+ where
+ field name body = text name <> colon <+> nest 4 body
-- -----------------------------------------------------------------------------