module PackageConfig (
-- * PackageId
- PackageId,
- mkPackageId, stringToPackageId, packageIdString, packageConfigId,
- packageIdFS, fsToPackageId,
+ mkPackageId, packageConfigId, unpackPackageId,
-- * The PackageConfig type: information about a package
PackageConfig,
- InstalledPackageInfo(..), showPackageId,
+ InstalledPackageInfo_(..), showPackageId,
Version(..),
PackageIdentifier(..),
- defaultPackageConfig
+ defaultPackageConfig,
) 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
-- -----------------------------------------------------------------------------
--
-- 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
packageConfigId :: PackageConfig -> PackageId
packageConfigId = mkPackageId . package
-
+unpackPackageId :: PackageId -> Maybe PackageIdentifier
+unpackPackageId p
+ = case [ pid | (pid,"") <- readP_to_S parsePackageId str ] of
+ [] -> Nothing
+ (pid:_) -> Just pid
+ where str = packageIdString p