Ticket #731 (closed defect: fixed)

Opened 3 years ago

Last modified 14 months ago

Custom Build-type with --package-db and --global encounters runtime error

Reported by: cygnus Owned by:
Priority: normal Milestone: cabal-install-0.14
Component: cabal-install tool Version: 1.8.0.4
Severity: normal Keywords:
Cc: josh.hoyt@…, jtd@…, Erkok, hvr@… Difficulty: unknown
GHC Version: 6.12.2 Platform: Linux

Description

To reproduce:

  • Run cabal init, change Build-type to Custom (Setup.hs already provided by cabal init)
  • Run ghc-pkg init db
  • Run cabal configure --package-db=./db --global
  • Output:
    Resolving dependencies...
    cabal: internal error: unexpected package db stack
    

In cabal-install-0.8.2, this appears to be caused by the code on lines 112-114 of Distribution.Client.Configure:

usePackageDB = if UserPackageDB `elem` packageDBs
                 then packageDBs
                 else packageDBs ++ [UserPackageDB]

in combination with the code on lines 297-306 of Distribution.Client.SetupWrapper:

ghcPackageDbOptions :: PackageDBStack -> [String]
ghcPackageDbOptions dbstack = case dbstack of
  (GlobalPackageDB:UserPackageDB:dbs) -> concatMap specific dbs
  (GlobalPackageDB:dbs)               -> "-no-user-package-conf"
                                       : concatMap specific dbs
  _                                   -> ierror
  where
    specific (SpecificPackageDB db) = [ "-package-conf", db ]
    specific _ = ierror
    ierror     = error "internal error: unexpected package db stack"

Essentially, the order of the package databases in the stack is not as expected since the list already contains a SpecificPackageDB when the UserPackageDB is appended.

(Note: this applies to GHC 6.12.3 and Cabal 1.8.0.6 on my system, but I could not select those versions in the ticket properties.)

Change History

Changed 3 years ago by erkokl@…

  • cc Erkok added

Changed 18 months ago by hvr

  • cc hvr@… added

Alas, this still applies to latest (unreleased) Cabal-1.13.3 / cabal-install-0.13.3 / GHC-7.3 versions

Also, cabal-dev calls cabal with that --package-db/--global combination, causing this "unexpected package db stack" error...

Changed 15 months ago by kosmikus

  • milestone set to cabal-install-0.14

Changed 14 months ago by duncan

  • status changed from new to closed
  • resolution set to fixed

Thanks for the report, and pinpointing the location of the problem.

Wed Mar 28 23:05:56 BST 2012  Duncan Coutts <duncan@community.haskell.org>
  * Fix ticket #731
Note: See TracTickets for help on using tickets.