Understanding directory structure of ghc installation
Robert Dockins
robdockins at fastmail.fm
Thu Jun 1 10:03:22 EDT 2006
On Jun 1, 2006, at 6:36 AM, Brian Hulley wrote:
> Hi -
> I've just downloaded and installed Edison using Cabal.
How did that go for you? You appear to have had some success ;-) I
ask because 1.2rc4 has a new build system and I'm interested in your
experience. Also, have you tried running the test suite?
> However I now see that Edison seems to have been already installed
> with the ghc 6.4.2 installation, even though there's no mention of
> Edison in /doc/html/libraries/index.html, because there are old
> Edison .hi files in
>
> ghc-6.4.2/hslibs-imports/data
>
> whereas the Cabal install process copied newly built Edison files to
> C:\Program Files\Haskell\EdisonAPI-1.2\ghc-6.4.2\Data
> and
> C:\Program Files\Haskell\EdisonCore-1.2\ghc-6.4.2\Data
>
> I was about to just delete the old .hi files from the hslibs-
> imports/data directory, but then I noticed there are a few .hi
> files there for Set and FiniteMap, even though there are also .hi
> files (though of different sizes) for Set and FiniteMap stored in
> the imports/data directory as well.
>
> So my question is: how to understand all this? Why are there
> different copies of Set.hi which have different sizes, but in the
> same installation, and which one does ghc use when I use import
> Data.Set in a program?
Simon already touched on this, but let me be a little more explicit:
GHC < 5.04 included a version of the Edison library in its standard
libraries. At the time it was not being maintained and when GHC
moved to the hierarchical libraries, Edison was not included. Thus,
the old standard libraries include Edison (version 1.0 I believe) in
a flat namespace and the new standard libraries do not include Edison.
I have recently undertaken the maintenance of Edison. All Edison
packages I have released have the Edison modules under
"Data.Edison.*" in the module hierarchy and should not clash with
older Edison versions. Also, Edison does not provide the "Data.Set"
or "Data.Map" modules. It does, however, provide light wrappers for
them which allows you to use Data.Set and Data.Map via the Edison
API. These wrappers are Data.Edison.Coll.StandardSet and
Data.Edison.Assoc.StandardMap.
I hope that clears up any confusion.
BTW, I'll be releasing Edison 1.2 final very soon now (probably this
weekend, when I can steal a few moments to roll the tarballs).
> Also, what does .p_hi mean? (The new build of Edison only
> creates .hi files not .p_hi files but all the ghc-6.4.2 modules
> have both .hi and .p_hi files)
>
> (It would also be interesting to know where Cabal gets the
> information from to configure a package, and where the package
> database is stored...)
>
> Thanks, Brian.
Rob Dockins
Speak softly and drive a Sherman tank.
Laugh hard; it's a long way to the bank.
-- TMBG
More information about the Glasgow-haskell-users
mailing list