Add unique package identifiers (InstalledPackageId) in the package DB
[ghc-hetmet.git] / compiler / main / PackageConfig.hs
index 1602429..79521c7 100644 (file)
@@ -7,7 +7,7 @@ module PackageConfig (
     -- $package_naming
     
        -- * PackageId
-       mkPackageId, packageConfigId, unpackPackageId,
+       mkPackageId, packageConfigId,
        
        -- * The PackageConfig type: information about a package
        PackageConfig,
@@ -15,20 +15,19 @@ module PackageConfig (
        Version(..),
        PackageIdentifier(..),
        defaultPackageConfig,
-    packageConfigToInstalledPackageInfo,
-    installedPackageInfoToPackageConfig,
+        packageConfigToInstalledPackageInfo,
+        installedPackageInfoToPackageConfig,
   ) where
 
 #include "HsVersions.h"
 
-import Data.Maybe
+import Maybes
 import Module
 import Distribution.InstalledPackageInfo
 import Distribution.ModuleName
 import Distribution.Package hiding (PackageId)
 import Distribution.Text
 import Distribution.Version
-import Distribution.Compat.ReadP
 
 -- -----------------------------------------------------------------------------
 -- Our PackageConfig type is just InstalledPackageInfo from Cabal.  Later we
@@ -62,15 +61,6 @@ mkPackageId = stringToPackageId . display
 packageConfigId :: PackageConfig -> PackageId
 packageConfigId = mkPackageId . package
 
--- | Try and interpret a GHC 'PackageId' as a cabal 'PackageIdentifer'. Returns @Nothing@ if
--- we could not parse it as such an object.
-unpackPackageId :: PackageId -> Maybe PackageIdentifier
-unpackPackageId p
-  = case [ pid | (pid,"") <- readP_to_S parse str ] of
-        []      -> Nothing
-        (pid:_) -> Just pid
-  where str = packageIdString p
-
 -- | Turn a 'PackageConfig', which contains GHC 'Module.ModuleName's into a Cabal specific
 -- 'InstalledPackageInfo' which contains Cabal 'Distribution.ModuleName.ModuleName's
 packageConfigToInstalledPackageInfo :: PackageConfig -> InstalledPackageInfo
@@ -80,7 +70,7 @@ packageConfigToInstalledPackageInfo
         pkgconf{ exposedModules = map convert e,
                  hiddenModules  = map convert h }
     where convert :: Module.ModuleName -> Distribution.ModuleName.ModuleName
-          convert = fromJust . simpleParse . moduleNameString
+          convert = (expectJust "packageConfigToInstalledPackageInfo") . simpleParse . moduleNameString
 
 -- | Turn an 'InstalledPackageInfo', which contains Cabal 'Distribution.ModuleName.ModuleName's
 -- into a GHC specific 'PackageConfig' which contains GHC 'Module.ModuleName's