Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > 6e204a966e8c42d976f99a1700ce5f20 > files > 2975

ghc-7.4.2-4.mga5.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Packages</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Packages.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">ghc-7.4.2: The GHC API</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Packages</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">The PackageConfigMap
</a></li><li><a href="#g:2">Reading the package config, and processing cmdline args
</a></li><li><a href="#g:3">Inspecting the set of packages in scope
</a></li><li><a href="#g:4">Utils
</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Package manipulation
</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short">module <a href="PackageConfig.html">PackageConfig</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:PackageConfigMap">PackageConfigMap</a> = <a href="UniqFM.html#t:UniqFM">UniqFM</a> <a href="PackageConfig.html#t:PackageConfig">PackageConfig</a></li><li class="src short"><a href="#v:emptyPackageConfigMap">emptyPackageConfigMap</a> :: <a href="Packages.html#t:PackageConfigMap">PackageConfigMap</a></li><li class="src short"><a href="#v:lookupPackage">lookupPackage</a> :: <a href="Packages.html#t:PackageConfigMap">PackageConfigMap</a> -&gt; <a href="Module.html#t:PackageId">PackageId</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="PackageConfig.html#t:PackageConfig">PackageConfig</a></li><li class="src short"><a href="#v:extendPackageConfigMap">extendPackageConfigMap</a> :: <a href="Packages.html#t:PackageConfigMap">PackageConfigMap</a> -&gt; [<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>] -&gt; <a href="Packages.html#t:PackageConfigMap">PackageConfigMap</a></li><li class="src short"><a href="#v:dumpPackages">dumpPackages</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> ()</li><li class="src short"><span class="keyword">data</span>  <a href="#t:PackageState">PackageState</a>  = <a href="#v:PackageState">PackageState</a> {<ul class="subs"><li><a href="#v:pkgIdMap">pkgIdMap</a> :: <a href="Packages.html#t:PackageConfigMap">PackageConfigMap</a></li><li><a href="#v:preloadPackages">preloadPackages</a> :: [<a href="Module.html#t:PackageId">PackageId</a>]</li><li><a href="#v:moduleToPkgConfAll">moduleToPkgConfAll</a> :: <a href="UniqFM.html#t:UniqFM">UniqFM</a> [(<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>, <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>)]</li><li><a href="#v:installedPackageIdMap">installedPackageIdMap</a> :: InstalledPackageIdMap</li></ul>}</li><li class="src short"><a href="#v:initPackages">initPackages</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> (<a href="DynFlags.html#t:DynFlags">DynFlags</a>, [<a href="Module.html#t:PackageId">PackageId</a>])</li><li class="src short"><a href="#v:getPackageDetails">getPackageDetails</a> :: <a href="Packages.html#t:PackageState">PackageState</a> -&gt; <a href="Module.html#t:PackageId">PackageId</a> -&gt; <a href="PackageConfig.html#t:PackageConfig">PackageConfig</a></li><li class="src short"><a href="#v:lookupModuleInAllPackages">lookupModuleInAllPackages</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; <a href="Module.html#t:ModuleName">ModuleName</a> -&gt; [(<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>, <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>)]</li><li class="src short"><a href="#v:lookupModuleWithSuggestions">lookupModuleWithSuggestions</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; <a href="Module.html#t:ModuleName">ModuleName</a> -&gt; <a href="../base-4.5.1.0/Data-Either.html#t:Either">Either</a> [<a href="Module.html#t:Module">Module</a>] [(<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>, <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>)]</li><li class="src short"><a href="#v:getPackageIncludePath">getPackageIncludePath</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</li><li class="src short"><a href="#v:getPackageLibraryPath">getPackageLibraryPath</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</li><li class="src short"><a href="#v:getPackageLinkOpts">getPackageLinkOpts</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</li><li class="src short"><a href="#v:getPackageExtraCcOpts">getPackageExtraCcOpts</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</li><li class="src short"><a href="#v:getPackageFrameworkPath">getPackageFrameworkPath</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</li><li class="src short"><a href="#v:getPackageFrameworks">getPackageFrameworks</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</li><li class="src short"><a href="#v:getPreloadPackagesAnd">getPreloadPackagesAnd</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>]</li><li class="src short"><a href="#v:collectIncludeDirs">collectIncludeDirs</a> :: [<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>] -&gt; [<a href="../base-4.5.1.0/System-IO.html#t:FilePath">FilePath</a>]</li><li class="src short"><a href="#v:collectLibraryPaths">collectLibraryPaths</a> :: [<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>] -&gt; [<a href="../base-4.5.1.0/System-IO.html#t:FilePath">FilePath</a>]</li><li class="src short"><a href="#v:collectLinkOpts">collectLinkOpts</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>] -&gt; [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</li><li class="src short"><a href="#v:packageHsLibs">packageHsLibs</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; <a href="PackageConfig.html#t:PackageConfig">PackageConfig</a> -&gt; [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</li><li class="src short"><a href="#v:isDllName">isDllName</a> :: <a href="Module.html#t:PackageId">PackageId</a> -&gt; <a href="Name.html#t:Name">Name</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src">module <a href="PackageConfig.html">PackageConfig</a></p></div><h1 id="g:1">The PackageConfigMap
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:PackageConfigMap" class="def">PackageConfigMap</a> = <a href="UniqFM.html#t:UniqFM">UniqFM</a> <a href="PackageConfig.html#t:PackageConfig">PackageConfig</a></p><div class="doc"><p>A PackageConfigMap maps a <code><a href="Module.html#t:PackageId">PackageId</a></code> to a <code><a href="PackageConfig.html#t:PackageConfig">PackageConfig</a></code>
</p></div></div><div class="top"><p class="src"><a name="v:emptyPackageConfigMap" class="def">emptyPackageConfigMap</a> :: <a href="Packages.html#t:PackageConfigMap">PackageConfigMap</a></p></div><div class="top"><p class="src"><a name="v:lookupPackage" class="def">lookupPackage</a> :: <a href="Packages.html#t:PackageConfigMap">PackageConfigMap</a> -&gt; <a href="Module.html#t:PackageId">PackageId</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="PackageConfig.html#t:PackageConfig">PackageConfig</a></p><div class="doc"><p>Find the package we know about with the given id (e.g. &quot;foo-1.0&quot;), if any
</p></div></div><div class="top"><p class="src"><a name="v:extendPackageConfigMap" class="def">extendPackageConfigMap</a> :: <a href="Packages.html#t:PackageConfigMap">PackageConfigMap</a> -&gt; [<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>] -&gt; <a href="Packages.html#t:PackageConfigMap">PackageConfigMap</a></p></div><div class="top"><p class="src"><a name="v:dumpPackages" class="def">dumpPackages</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> ()</p><div class="doc"><p>Show package info on console, if verbosity is &gt;= 3
</p></div></div><h1 id="g:2">Reading the package config, and processing cmdline args
</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:PackageState" class="def">PackageState</a>  </p><div class="doc"><p>Package state is all stored in <code><a href="DynFlags.html#t:DynFlag">DynFlag</a></code>s, including the details of
 all packages, which packages are exposed, and which modules they
 provide.
</p><p>The package state is computed by <code><a href="Packages.html#v:initPackages">initPackages</a></code>, and kept in DynFlags.
</p><ul><li> <code>-package <a href="pkg">pkg</a></code> causes <code><a href="pkg">pkg</a></code> to become exposed, and all other packages 
	with the same name to become hidden.
</li><li> <code>-hide-package <a href="pkg">pkg</a></code> causes <code><a href="pkg">pkg</a></code> to become hidden.
</li><li> Let <code>exposedPackages</code> be the set of packages thus exposed.  
     Let <code>depExposedPackages</code> be the transitive closure from <code>exposedPackages</code> of
     their dependencies.
</li><li> When searching for a module from an preload import declaration,
     only the exposed modules in <code>exposedPackages</code> are valid.
</li><li> When searching for a module from an implicit import, all modules
     from <code>depExposedPackages</code> are valid.
</li><li> When linking in a compilation manager mode, we link in packages the
     program depends on (the compiler knows this list by the
     time it gets to the link step).  Also, we link in all packages
     which were mentioned with preload <code>-package</code> flags on the command-line,
     or are a transitive dependency of same, or are &quot;base&quot;/&quot;rts&quot;.
     The reason for this is that we might need packages which don't
     contain any Haskell modules, and therefore won't be discovered
     by the normal mechanism of dependency tracking.
</li></ul></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:PackageState" class="def">PackageState</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:pkgIdMap" class="def">pkgIdMap</a> :: <a href="Packages.html#t:PackageConfigMap">PackageConfigMap</a></dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:preloadPackages" class="def">preloadPackages</a> :: [<a href="Module.html#t:PackageId">PackageId</a>]</dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:moduleToPkgConfAll" class="def">moduleToPkgConfAll</a> :: <a href="UniqFM.html#t:UniqFM">UniqFM</a> [(<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>, <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>)]</dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:installedPackageIdMap" class="def">installedPackageIdMap</a> :: InstalledPackageIdMap</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><a name="v:initPackages" class="def">initPackages</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> (<a href="DynFlags.html#t:DynFlags">DynFlags</a>, [<a href="Module.html#t:PackageId">PackageId</a>])</p><div class="doc"><p>Call this after <code><a href="DynFlags.html#v:parseDynFlags">parseDynFlags</a></code>.  It reads the package
 configuration files, and sets up various internal tables of package
 information, according to the package-related flags on the
 command-line (<code>-package</code>, <code>-hide-package</code> etc.)
</p><p>Returns a list of packages to link in if we're doing dynamic linking.
 This list contains the packages that the user explicitly mentioned with
 <code>-package</code> flags.
</p><p><code><a href="Packages.html#v:initPackages">initPackages</a></code> can be called again subsequently after updating the
 <code><a href="DynFlags.html#v:packageFlags">packageFlags</a></code> field of the <code><a href="DynFlags.html#t:DynFlags">DynFlags</a></code>, and it will update the
 <code><a href="DynFlags.html#v:pkgState">pkgState</a></code> in <code><a href="DynFlags.html#t:DynFlags">DynFlags</a></code> and return a list of packages to
 link in.
</p></div></div><div class="top"><p class="src"><a name="v:getPackageDetails" class="def">getPackageDetails</a> :: <a href="Packages.html#t:PackageState">PackageState</a> -&gt; <a href="Module.html#t:PackageId">PackageId</a> -&gt; <a href="PackageConfig.html#t:PackageConfig">PackageConfig</a></p><div class="doc"><p>Looks up the package with the given id in the package state, panicing if it is
 not found
</p></div></div><div class="top"><p class="src"><a name="v:lookupModuleInAllPackages" class="def">lookupModuleInAllPackages</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; <a href="Module.html#t:ModuleName">ModuleName</a> -&gt; [(<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>, <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>)]</p><div class="doc"><p>Takes a <code><a href="Module.html#t:Module">Module</a></code>, and if the module is in a package returns 
 <code>(pkgconf, exposed)</code> where pkgconf is the PackageConfig for that package,
 and exposed is <code>True</code> if the package exposes the module.
</p></div></div><div class="top"><p class="src"><a name="v:lookupModuleWithSuggestions" class="def">lookupModuleWithSuggestions</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; <a href="Module.html#t:ModuleName">ModuleName</a> -&gt; <a href="../base-4.5.1.0/Data-Either.html#t:Either">Either</a> [<a href="Module.html#t:Module">Module</a>] [(<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>, <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>)]</p></div><h1 id="g:3">Inspecting the set of packages in scope
</h1><div class="top"><p class="src"><a name="v:getPackageIncludePath" class="def">getPackageIncludePath</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</p><div class="doc"><p>Find all the include directories in these and the preload packages
</p></div></div><div class="top"><p class="src"><a name="v:getPackageLibraryPath" class="def">getPackageLibraryPath</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</p><div class="doc"><p>Find all the library paths in these and the preload packages
</p></div></div><div class="top"><p class="src"><a name="v:getPackageLinkOpts" class="def">getPackageLinkOpts</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</p><div class="doc"><p>Find all the link options in these and the preload packages
</p></div></div><div class="top"><p class="src"><a name="v:getPackageExtraCcOpts" class="def">getPackageExtraCcOpts</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</p><div class="doc"><p>Find all the C-compiler options in these and the preload packages
</p></div></div><div class="top"><p class="src"><a name="v:getPackageFrameworkPath" class="def">getPackageFrameworkPath</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</p><div class="doc"><p>Find all the package framework paths in these and the preload packages
</p></div></div><div class="top"><p class="src"><a name="v:getPackageFrameworks" class="def">getPackageFrameworks</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</p><div class="doc"><p>Find all the package frameworks in these and the preload packages
</p></div></div><div class="top"><p class="src"><a name="v:getPreloadPackagesAnd" class="def">getPreloadPackagesAnd</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="Module.html#t:PackageId">PackageId</a>] -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> [<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>]</p><div class="doc"><p>Find all the <code><a href="PackageConfig.html#t:PackageConfig">PackageConfig</a></code> in both the preload packages from <code><a href="DynFlags.html#t:DynFlags">DynFlags</a></code> and corresponding to the list of
 <code><a href="PackageConfig.html#t:PackageConfig">PackageConfig</a></code>s
</p></div></div><div class="top"><p class="src"><a name="v:collectIncludeDirs" class="def">collectIncludeDirs</a> :: [<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>] -&gt; [<a href="../base-4.5.1.0/System-IO.html#t:FilePath">FilePath</a>]</p></div><div class="top"><p class="src"><a name="v:collectLibraryPaths" class="def">collectLibraryPaths</a> :: [<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>] -&gt; [<a href="../base-4.5.1.0/System-IO.html#t:FilePath">FilePath</a>]</p></div><div class="top"><p class="src"><a name="v:collectLinkOpts" class="def">collectLinkOpts</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; [<a href="PackageConfig.html#t:PackageConfig">PackageConfig</a>] -&gt; [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</p></div><div class="top"><p class="src"><a name="v:packageHsLibs" class="def">packageHsLibs</a> :: <a href="DynFlags.html#t:DynFlags">DynFlags</a> -&gt; <a href="PackageConfig.html#t:PackageConfig">PackageConfig</a> -&gt; [<a href="../base-4.5.1.0/Data-String.html#t:String">String</a>]</p></div><h1 id="g:4">Utils
</h1><div class="top"><p class="src"><a name="v:isDllName" class="def">isDllName</a> :: <a href="Module.html#t:PackageId">PackageId</a> -&gt; <a href="Name.html#t:Name">Name</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></p><div class="doc"><p>Will the <code><a href="Name.html#t:Name">Name</a></code> come from a dynamically linked library?
</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>