diff options
author | Simon Marlow <simonmar@microsoft.com> | 2007-10-03 16:35:36 +0000 |
---|---|---|
committer | Simon Marlow <simonmar@microsoft.com> | 2007-10-03 16:35:36 +0000 |
commit | 1a7d1b77334529ca96ed4cbc03fcb5f55dc2de4a (patch) | |
tree | c65929c6b69c13266cdc0e6965b05e1f3a1af673 /compiler/main/PackageConfig.hs | |
parent | e932508283461bfc5b6658a374fd6e9126979e49 (diff) | |
download | haskell-1a7d1b77334529ca96ed4cbc03fcb5f55dc2de4a.tar.gz |
refactoring only: use the parameterised InstalledPackageInfo
This required moving PackageId from PackageConfig to Module
Diffstat (limited to 'compiler/main/PackageConfig.hs')
-rw-r--r-- | compiler/main/PackageConfig.hs | 78 |
1 files changed, 9 insertions, 69 deletions
diff --git a/compiler/main/PackageConfig.hs b/compiler/main/PackageConfig.hs index 14ac6b5793..c070ca2efb 100644 --- a/compiler/main/PackageConfig.hs +++ b/compiler/main/PackageConfig.hs @@ -1,49 +1,37 @@ -{-# OPTIONS -w #-} --- The above warning supression flag is a temporary kludge. --- While working on this module you are encouraged to remove it and fix --- any warnings in the module. See --- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings --- for details - -- -- (c) The University of Glasgow, 2004 -- module PackageConfig ( -- * PackageId - PackageId, - mkPackageId, stringToPackageId, packageIdString, packageConfigId, - packageIdFS, fsToPackageId, unpackPackageId, + mkPackageId, packageConfigId, unpackPackageId, -- * The PackageConfig type: information about a package PackageConfig, - InstalledPackageInfo(..), showPackageId, + InstalledPackageInfo_(..), showPackageId, Version(..), PackageIdentifier(..), defaultPackageConfig, - - -- * Wired-in PackageIds - basePackageId, - rtsPackageId, - haskell98PackageId, - thPackageId, - ndpPackageId, - mainPackageId ) where #include "HsVersions.h" +import Module import Distribution.InstalledPackageInfo import Distribution.Package import Distribution.Version -import FastString import Distribution.Compat.ReadP ( readP_to_S ) +-- warning suppression +_unused :: FS.FastString +_unused = FSLIT("") + -- ----------------------------------------------------------------------------- -- Our PackageConfig type is just InstalledPackageInfo from Cabal. Later we -- might need to extend it with some GHC-specific stuff, but for now it's fine. -type PackageConfig = InstalledPackageInfo +type PackageConfig = InstalledPackageInfo_ ModuleName +defaultPackageConfig :: PackageConfig defaultPackageConfig = emptyInstalledPackageInfo -- ----------------------------------------------------------------------------- @@ -60,22 +48,6 @@ defaultPackageConfig = emptyInstalledPackageInfo -- -- A PackageId is a string of the form <pkg>-<version>. -newtype PackageId = PId FastString deriving( Eq, Ord ) -- includes the version - -- easier not to use a newtype here, because we need instances of - -- Binary & Outputable, and we're too early to define them - -fsToPackageId :: FastString -> PackageId -fsToPackageId = PId - -packageIdFS :: PackageId -> FastString -packageIdFS (PId fs) = fs - -stringToPackageId :: String -> PackageId -stringToPackageId = fsToPackageId . mkFastString - -packageIdString :: PackageId -> String -packageIdString = unpackFS . packageIdFS - mkPackageId :: PackageIdentifier -> PackageId mkPackageId = stringToPackageId . showPackageId @@ -88,35 +60,3 @@ unpackPackageId p [] -> Nothing (pid:_) -> Just pid where str = packageIdString p - --- ----------------------------------------------------------------------------- --- Package Ids that are wired in - --- Certain packages are "known" to the compiler, in that we know about certain --- entities that reside in these packages, and the compiler needs to --- declare static Modules and Names that refer to these packages. Hence --- the wired-in packages can't include version numbers, since we don't want --- to bake the version numbers of these packages into GHC. --- --- So here's the plan. Wired-in packages are still versioned as --- normal in the packages database, and you can still have multiple --- versions of them installed. However, for each invocation of GHC, --- only a single instance of each wired-in package will be recognised --- (the desired one is selected via -package/-hide-package), and GHC --- will use the unversioned PackageId below when referring to it, --- including in .hi files and object file symbols. Unselected --- versions of wired-in packages will be ignored, as will any other --- package that depends directly or indirectly on it (much as if you --- had used -ignore-package). - -basePackageId = fsToPackageId FSLIT("base") -rtsPackageId = fsToPackageId FSLIT("rts") -haskell98PackageId = fsToPackageId FSLIT("haskell98") -thPackageId = fsToPackageId FSLIT("template-haskell") -ndpPackageId = fsToPackageId FSLIT("ndp") - --- This is the package Id for the program. It is the default package --- Id if you don't specify a package name. We don't add this prefix --- to symbol name, since there can be only one main package per program. -mainPackageId = fsToPackageId FSLIT("main") - |