2 % (c) The University of Glasgow, 2000
4 \section{Package manipulation}
7 module Packages ( PackageConfig(..),
14 #include "HsVersions.h"
17 import SysTools ( dosifyPath )
18 import CmdLineOpts ( dynFlag, verbosity )
19 import DriverUtil ( my_prefix_match )
20 import ErrUtils ( dumpIfSet )
21 import Outputable ( docToSDoc, trace )
26 -- Yes, do generate pretty-printing stuff for packages
28 -- There's a blob of code shared with ghc-pkg,
29 -- so we just include it from there
30 #include "../utils/ghc-pkg/Package.hs"
33 %*********************************************************
35 \subsection{Load the config file}
37 %*********************************************************
40 mungePackagePaths :: String -> [PackageConfig] -> [PackageConfig]
41 -- a) replace the string "$libdir" at the beginning of a path with the
42 -- current libdir (obtained from the -B option).
43 -- b) dosify the paths [paths in the package-conf file aren't DOS style]
44 mungePackagePaths top_dir ps = map munge_pkg ps
46 munge_pkg p = p{ import_dirs = munge_paths (import_dirs p),
47 include_dirs = munge_paths (include_dirs p),
48 library_dirs = munge_paths (library_dirs p) }
50 munge_paths = map munge_path
53 | Just p' <- my_prefix_match "$libdir" p = dosifyPath (top_dir ++ p')
54 | otherwise = trace ("not: " ++ p) p
58 %*********************************************************
60 \subsection{Display results}
62 %*********************************************************
65 showPackages :: [PackageConfig] -> IO ()
66 -- Show package info on console, if verbosity is >=2
68 = do { verb <- dynFlag verbosity
69 ; dumpIfSet (verb >= 2) "Packages"
70 (docToSDoc (vcat (map dumpPkgGuts ps)))