
Brian Hulley wrote:
Hi - I've just downloaded and installed Edison using Cabal. 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?
Everything in hslibs-imports is for the old "hslibs" libraries. These are the non-hierarchical libraries that came with GHC < 5.04 and are still provided for backwards compatibility, although they will be removed in GHC 6.6. The documentation for the old libraries is here: http://www.haskell.org/ghc/docs/latest/html/hslibs/index.html (which is linked from the GHC documentation page, "(Old) Haskell Libraries").
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)
the .p_hi are the interface files for the profiling versions of these modules. If you configure with --enable-library-profiling you will get profiling libs for a Cabal package too.
(It would also be interesting to know where Cabal gets the information from to configure a package, and where the package database is stored...)
Cabal needs to collect various information: what GHC version you have, what versions of packages are available, etc. The ghc-pkg command is the interface to the package database. It will tell you where your package database is stored ("ghc-pkg list"). Cheers, Simon