Can't install packages with my inplace compiler

When I say cabal install --with-ghc=/home/simonpj/5builds/HEAD-2/inplace/bin/ghc-stage2 I get this ghc-stage2: ghc no longer supports single-file style package databases (dist/package.conf.inplace) use 'ghc-pkg init' to create the database with the correct format. Now, this is an old build tree, and I could blow it away entirely, but maybe there is something else going on. What should I do? Thanks (all on Linux) Simon

Hello Simon, On 2014-11-04 at 11:55:48 +0100, Simon Peyton Jones wrote:
When I say
cabal install --with-ghc=/home/simonpj/5builds/HEAD-2/inplace/bin/ghc-stage2
I get this
ghc-stage2: ghc no longer supports single-file style package databases (dist/package.conf.inplace) use 'ghc-pkg init' to create the database with the correct format.
Now, this is an old build tree, and I could blow it away entirely, but maybe there is something else going on. What should I do?
What does `cabal --version` say? If it doesn't say something like $ cabal --version cabal-install version 1.21.1.0 using version 1.21.1.0 of the Cabal library you probably need a newer one (in which case you should build the `cabal` binary from Git, and to make life easier compile `Cabal` and `cabal-install` with GHC 7.8.x rather than GHC HEAD) Cheers, hvr

It says simonpj@cam-05-unx:~/tmp/singletons-1.0$ cabal --version cabal-install version 1.21.0.0 using version 1.21.0.0 of the Cabal library Oddly if I try "cabal update; cabal install cabal-install" it says: Resolving dependencies... Downloading Cabal-1.20.0.2... so it looks as if it's about to install an *older* version than the one I have already! What now? Thanks SImon | -----Original Message----- | From: Herbert Valerio Riedel [mailto:hvriedel@gmail.com] | Sent: 04 November 2014 11:20 | To: Simon Peyton Jones | Cc: GHC Devs | Subject: Re: Can't install packages with my inplace compiler | | Hello Simon, | | On 2014-11-04 at 11:55:48 +0100, Simon Peyton Jones wrote: | > When I say | > | > cabal install | > --with-ghc=/home/simonpj/5builds/HEAD-2/inplace/bin/ghc-stage2 | > | > I get this | > | > ghc-stage2: ghc no longer supports single-file style package | databases | > (dist/package.conf.inplace) use 'ghc-pkg init' to create the | database | > with the correct format. | > | > Now, this is an old build tree, and I could blow it away entirely, | but | > maybe there is something else going on. What should I do? | | What does `cabal --version` say? If it doesn't say something like | | $ cabal --version | cabal-install version 1.21.1.0 | using version 1.21.1.0 of the Cabal library | | you probably need a newer one (in which case you should build the | `cabal` binary from Git, and to make life easier compile `Cabal` and | `cabal-install` with GHC 7.8.x rather than GHC HEAD) | | Cheers, | hvr

Yeah, that's too old; and there's not been a release of a Cabal which is new enough to do what you want. Try: git clone https://github.com/haskell/cabal cd cabal/Cabal cabal install cd ../cabal-install cabal install Edward Excerpts from Simon Peyton Jones's message of 2014-11-04 03:59:57 -0800:
It says
simonpj@cam-05-unx:~/tmp/singletons-1.0$ cabal --version cabal-install version 1.21.0.0 using version 1.21.0.0 of the Cabal library
Oddly if I try "cabal update; cabal install cabal-install" it says: Resolving dependencies... Downloading Cabal-1.20.0.2...
so it looks as if it's about to install an *older* version than the one I have already!
What now?
Thanks
SImon
| -----Original Message----- | From: Herbert Valerio Riedel [mailto:hvriedel@gmail.com] | Sent: 04 November 2014 11:20 | To: Simon Peyton Jones | Cc: GHC Devs | Subject: Re: Can't install packages with my inplace compiler | | Hello Simon, | | On 2014-11-04 at 11:55:48 +0100, Simon Peyton Jones wrote: | > When I say | > | > cabal install | > --with-ghc=/home/simonpj/5builds/HEAD-2/inplace/bin/ghc-stage2 | > | > I get this | > | > ghc-stage2: ghc no longer supports single-file style package | databases | > (dist/package.conf.inplace) use 'ghc-pkg init' to create the | database | > with the correct format. | > | > Now, this is an old build tree, and I could blow it away entirely, | but | > maybe there is something else going on. What should I do? | | What does `cabal --version` say? If it doesn't say something like | | $ cabal --version | cabal-install version 1.21.1.0 | using version 1.21.1.0 of the Cabal library | | you probably need a newer one (in which case you should build the | `cabal` binary from Git, and to make life easier compile `Cabal` and | `cabal-install` with GHC 7.8.x rather than GHC HEAD) | | Cheers, | hvr

| Yeah, that's too old; and there's not been a release of a Cabal | which is new enough to do what you want. Wow! I'm doing the most basic thing: using Cabal to install a package with a specified GHC. I'll try what you suggest. Duncan: would a release be a good plan? Simon | | Try: | | git clone https://github.com/haskell/cabal | cd cabal/Cabal | cabal install | cd ../cabal-install | cabal install | | Edward | | Excerpts from Simon Peyton Jones's message of 2014-11-04 03:59:57 -0800: | > It says | > | > simonpj@cam-05-unx:~/tmp/singletons-1.0$ cabal --version | > cabal-install version 1.21.0.0 | > using version 1.21.0.0 of the Cabal library | > | > | > Oddly if I try "cabal update; cabal install cabal-install" it says: | > Resolving dependencies... | > Downloading Cabal-1.20.0.2... | > | > so it looks as if it's about to install an *older* version than the one | I have already! | > | > What now? | > | > Thanks | > | > SImon | > | > | -----Original Message----- | > | From: Herbert Valerio Riedel [mailto:hvriedel@gmail.com] | > | Sent: 04 November 2014 11:20 | > | To: Simon Peyton Jones | > | Cc: GHC Devs | > | Subject: Re: Can't install packages with my inplace compiler | > | | > | Hello Simon, | > | | > | On 2014-11-04 at 11:55:48 +0100, Simon Peyton Jones wrote: | > | > When I say | > | > | > | > cabal install | > | > --with-ghc=/home/simonpj/5builds/HEAD-2/inplace/bin/ghc-stage2 | > | > | > | > I get this | > | > | > | > ghc-stage2: ghc no longer supports single-file style package | > | databases | > | > (dist/package.conf.inplace) use 'ghc-pkg init' to create the | > | database | > | > with the correct format. | > | > | > | > Now, this is an old build tree, and I could blow it away entirely, | > | but | > | > maybe there is something else going on. What should I do? | > | | > | What does `cabal --version` say? If it doesn't say something like | > | | > | $ cabal --version | > | cabal-install version 1.21.1.0 | > | using version 1.21.1.0 of the Cabal library | > | | > | you probably need a newer one (in which case you should build the | > | `cabal` binary from Git, and to make life easier compile `Cabal` and | > | `cabal-install` with GHC 7.8.x rather than GHC HEAD) | > | | > | Cheers, | > | hvr

On Tue, 2014-11-04 at 21:04 +0000, Simon Peyton Jones wrote:
| Yeah, that's too old; and there's not been a release of a Cabal | which is new enough to do what you want.
Wow! I'm doing the most basic thing: using Cabal to install a package with a specified GHC.
I'll try what you suggest.
Actually I'd suggest you use the Cabal and cabal-install that are part of the ghc source tree, rather than Cabal/cabal-install HEAD. The two are not always the same. We try to avoid getting into situations where older cabal binaries cannot use the current ghc, but it does happen sometimes when we make changes in ghc that are not fully backwards compatible. In this case we (or rather I) removed ghc's support for single-file style package dbs and we later discovered that Cabal was in one place still using that style. It's plausible that we might want to add back some hack to ghc-pkg to allow older Cabal versions to work with ghc head. So in this situation we have to use the Cabal library (that you built with ghc head), to build cabal-install and its dependencies in the old style, using Setup.hs. That'll also need the dev version of zlib, due to the AMP things.
Duncan: would a release be a good plan?
We tend not to make intermediate releases to support ghc head because when we're making changes to work with ghc head we're not always in a good spot to make releases for the general public (we tend to be in the middle of things and not have enough testing feedback). Also, people using ghc head already have the corresponding version of Cabal/cabal-install in their source tree which they can install and use. On the other hand, when we think we're in a reasonable state with Cabal testing, and ghc is getting into release mode and we have more people needing to test ghc head, then of course making a release becomes important. My point is that when Edward and I were making all these breaking changes to Cabal/ghc in the packaging area is exactly the wrong time to make a cabal release. In this situation we just have to tell ghc hackers to use the Cabal/cabal-install from the ghc tree. -- Duncan Coutts, Haskell Consultant Well-Typed LLP, http://www.well-typed.com/

| Actually I'd suggest you use the Cabal and cabal-install that are part | of the ghc source tree, rather than Cabal/cabal-install HEAD. The two | are not always the same. Aha ok, thank you. How exactly do I do that? Where is the executable cabal-install in the tree? IN inplace/bin I see an executable ghc-cabal. Is that it? Alternatively, "Plan B" on https://ghc.haskell.org/trac/ghc/wiki/Debugging/InstallingPackagesInplace (which I confess I'd forgotten about) describes a different plan that doesn't mention cabal-install at all. Is that better? Thanks Simon | -----Original Message----- | From: Duncan Coutts [mailto:duncan@well-typed.com] | Sent: 05 November 2014 09:41 | To: Simon Peyton Jones | Cc: Edward Z. Yang; Herbert Valerio Riedel; GHC Devs | Subject: Re: Can't install packages with my inplace compiler | | On Tue, 2014-11-04 at 21:04 +0000, Simon Peyton Jones wrote: | > | Yeah, that's too old; and there's not been a release of a Cabal | > | which is new enough to do what you want. | > | > Wow! I'm doing the most basic thing: using Cabal to install a | package with a specified GHC. | > | > I'll try what you suggest. | | Actually I'd suggest you use the Cabal and cabal-install that are part | of the ghc source tree, rather than Cabal/cabal-install HEAD. The two | are not always the same. | | We try to avoid getting into situations where older cabal binaries | cannot use the current ghc, but it does happen sometimes when we make | changes in ghc that are not fully backwards compatible. In this case | we (or rather I) removed ghc's support for single-file style package | dbs and we later discovered that Cabal was in one place still using | that style. It's plausible that we might want to add back some hack to | ghc-pkg to allow older Cabal versions to work with ghc head. | | So in this situation we have to use the Cabal library (that you built | with ghc head), to build cabal-install and its dependencies in the old | style, using Setup.hs. That'll also need the dev version of zlib, due | to the AMP things. | | > Duncan: would a release be a good plan? | | We tend not to make intermediate releases to support ghc head because | when we're making changes to work with ghc head we're not always in a | good spot to make releases for the general public (we tend to be in | the middle of things and not have enough testing feedback). Also, | people using ghc head already have the corresponding version of | Cabal/cabal-install in their source tree which they can install and | use. | | On the other hand, when we think we're in a reasonable state with | Cabal testing, and ghc is getting into release mode and we have more | people needing to test ghc head, then of course making a release | becomes important. | | My point is that when Edward and I were making all these breaking | changes to Cabal/ghc in the packaging area is exactly the wrong time | to make a cabal release. In this situation we just have to tell ghc | hackers to use the Cabal/cabal-install from the ghc tree. | | -- | Duncan Coutts, Haskell Consultant | Well-Typed LLP, http://www.well-typed.com/

Hmmm, is this cabal mess the reason for the problems with GHC head and Cabal head on https://travis-ci.org/haskell-opengl/StateVar/jobs/39533455#L102? I've brought up the problem in another thread, but there was no conclusion. As it is, there seems to be no way to test things with GHC head on Travis CI, which is really bad. :-/ What can be done here?

On Wed, 2014-11-05 at 09:50 +0000, Simon Peyton Jones wrote:
| Actually I'd suggest you use the Cabal and cabal-install that are part | of the ghc source tree, rather than Cabal/cabal-install HEAD. The two | are not always the same.
Aha ok, thank you. How exactly do I do that? Where is the executable cabal-install in the tree? IN inplace/bin I see an executable ghc-cabal. Is that it?
Alternatively, "Plan B" on https://ghc.haskell.org/trac/ghc/wiki/Debugging/InstallingPackagesInplace (which I confess I'd forgotten about) describes a different plan that doesn't mention cabal-install at all. Is that better?
To follow up on a rather old thread: I included a little backwards compatibility hack (which I think made it into RC2) so that other users will not hit this, so that they can continue to use an old version of cabal-install with 7.10. For context, the error you and others were seeing was:
ghc-stage2: ghc no longer supports single-file style package databases (dist/package.conf.inplace) use 'ghc-pkg init' to create the database with the correct format.
-- Duncan Coutts, Haskell Consultant Well-Typed LLP, http://www.well-typed.com/
participants (5)
-
Duncan Coutts
-
Edward Z. Yang
-
Herbert Valerio Riedel
-
Simon Peyton Jones
-
Sven Panne