Ticket #731 (closed defect: fixed)
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
Note: See
TracTickets for help on using
tickets.
