#2705: ghc does not report haskell98's version number.
---------------------------------+------------------------------------------
Reporter: thoughtpolice | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: 6.10.1 | Severity: normal
Keywords: | Testcase:
Architecture: Unknown/Multiple | Os: Unknown/Multiple
---------------------------------+------------------------------------------
If you invoke ghc with something like -hide-all-packages and then run it
over a file like so:
{{{
import Prelude
import System.Process
main = putStrLn "hi"
}}}
GHC will tell you:
{{{
$ ghc -hide-all-packages test1.hs
test2.hs:1:0:
Failed to load interface for `Prelude':
it is a member of package base-3.0.3.0, which is hidden
}}}
But if you have a file like this which uses haskell98
{{{
module Main where
import System
import Prelude
main = do p <- getProgName
putStrLn $ "program name is " ++ p
}}}
And try to compile it, GHC says this:
{{{
$ ghc -hide-all-packages test2.hs
Main.hs:2:0:
Failed to load interface for `System':
it is a member of package haskell98, which is hidden
}}}
It does not report the version number of haskell98. There is a reason we
want this: while hacking on David Roundy's build system franchise (darcs
get http://darcs.net/repos/franchise/) I noticed that while the package
built under GHC 6.10 (with a tweak or two,) it reported the franchise
package as broken. However, when running ghc-pkg check I got this (very
unhelpful) output:
{{{
$ ghc-pkg list franchise
/Library/Frameworks/GHC.framework/Versions/610/usr/lib/ghc-6.10.0.20081007/./package.conf:
/Users/austinseipp/.ghc/i386-darwin-6.10.0.20081007/package.conf:
{franchise-0.0.3}
$
ghc-pkg check
package franchise-0.0.3 has missing dependencies:
$
}}}
This is the configuration file generated by franchise, for itself:
{{{
name: franchise
version: 0.0.3
license: BSD3
copyright: David Roundy
maintainer: ???
import-dirs: "/Users/austinseipp/lib/franchise-0.0.3/"
library-dirs: "/Users/austinseipp/lib/franchise-0.0.3/"
exposed-modules: Distribution.Franchise
hidden-modules: Distribution.Franchise.StringSet
Distribution.Franchise.ConfigureState Distribution.Franchise.Util
Distribution.Franchise.Buildable Distribution.Franchise.Ghc
hs-libraries: franchise
exposed: True
depends: haskell98, base-3.0.3.0, directory-1.0.0.2, process-1.0.1.0
}}}
The problem is:
{{{
depends: haskell98, base-3.0.3.0, directory-1.0.0.2, process-1.0.1.0
}}}
Should be:
{{{
depends: haskell98-1.0.1.0, base-3.0.3.0, directory-1.0.0.2,
process-1.0.1.0
}}}
I tracked this down further by examining the source code; it seems as if
franchise starts off by running 'ghc -hide-all-packages' over the source
code repeatedly, gobbling up and parsing all of the 'package is hidden'
errors until there are no more, and determining what packages are
necessary and what version and using that as build info. But as GHC does
not report the version number of haskell98, it simply emits 'depends:
haskell98' and ghc-pkg reports it as broken!
Using a version of franchise with a patch of mine to show some debugging
output, we can see this is the problem:
{{{
$ runghc Setup.hs configure
Configuring...
"\nDistribution/Franchise/ConfigureState.hs:66:7:\n Could not find
module `Maybe':\n it is a member of package haskell98, which is
hidden\n"
adding ["haskell98"]
"\nDistribution/Franchise/ConfigureState.hs:63:7:\n Could not find
module `System.Console.GetOpt':\n it is a member of package
base-3.0.3.0, which is hidden\n"
adding ["base-3.0.3.0"]
"\nDistribution/Franchise/ConfigureState.hs:60:7:\n Could not find
module `System.Directory':\n it is a member of package
directory-1.0.0.2, which is hidden\n"
adding ["directory-1.0.0.2"]
"\nDistribution/Franchise/Util.hs:46:7:\n Could not find module
`System.Process':\n it is a member of package process-1.0.1.0, which
is hidden\n"
adding ["process-1.0.1.0"]
Added packages haskell98 base-3.0.3.0 directory-1.0.0.2 process-1.0.1.0...
Configure successful.
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/2705>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs