-- $package_naming
-- * PackageId
- mkPackageId, packageConfigId, unpackPackageId,
+ mkPackageId, packageConfigId,
-- * The PackageConfig type: information about a package
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
+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
-- package sub-system.
--
-- This means that in theory you could have multiple base packages installed
--- (for example), and switch between them using @-package@/@-hide-package@.
+-- (for example), and switch between them using @-package@\/@-hide-package@.
--
-- A 'PackageId' is a string of the form @<pkg>-<version>@.
-- | Get the GHC 'PackageId' right out of a Cabalish 'PackageConfig'
packageConfigId :: PackageConfig -> PackageId
-packageConfigId = mkPackageId . package
+packageConfigId = mkPackageId . sourcePackageId
--- | 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 'ModuleName's into a Cabal specific
+-- | Turn a 'PackageConfig', which contains GHC 'Module.ModuleName's into a Cabal specific
-- 'InstalledPackageInfo' which contains Cabal 'Distribution.ModuleName.ModuleName's
packageConfigToInstalledPackageInfo :: PackageConfig -> InstalledPackageInfo
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 'ModuleName's
-installedPackageInfoToPackageConfig :: InstalledPackageInfo -> PackageConfig
+-- into a GHC specific 'PackageConfig' which contains GHC 'Module.ModuleName's
+installedPackageInfoToPackageConfig :: InstalledPackageInfo_ String -> PackageConfig
installedPackageInfoToPackageConfig
(pkgconf@(InstalledPackageInfo { exposedModules = e,
hiddenModules = h })) =
- pkgconf{ exposedModules = map convert e,
- hiddenModules = map convert h }
- where convert :: Distribution.ModuleName.ModuleName -> Module.ModuleName
- convert = mkModuleName . display
+ pkgconf{ exposedModules = map mkModuleName e,
+ hiddenModules = map mkModuleName h }