ghc-pkg, package database path containing a trailing slash, and ${pkgroot}
When passing a package database to ghc-pkg via GHC_PACKAGE_PATH or --package-db, ${pkgroot} does not get computed properly if the input path contains a trailing slash.
Default behavior:
$ ghc-pkg describe base | grep pkgroot
pkgroot: "/usr/lib/ghc-7.10.2"
Correct behavior (no trailing slash):
$ ghc-pkg --package-db /usr/lib/ghc-7.10.2/package.conf.d describe base | grep pkgroot
pkgroot: "/usr/lib/ghc-7.10.2"
$ GHC_PACKAGE_PATH=/usr/lib/ghc-7.10.2/package.conf.d ghc-pkg describe base | grep pkgroot
pkgroot: "/usr/lib/ghc-7.10.2"
Incorrect behavior (with trailing slash):
$ ghc-pkg --package-db /usr/lib/ghc-7.10.2/package.conf.d/ describe base | grep pkgroot
pkgroot: "/usr/lib/ghc-7.10.2/package.conf.d"
$ GHC_PACKAGE_PATH=/usr/lib/ghc-7.10.2/package.conf.d/ ghc-pkg describe base | grep pkgroot
pkgroot: "/usr/lib/ghc-7.10.2/package.conf.d"
When this bug happens, ghc-pkg check complains about missing files for packages using ${pkgroot}.
This bug happens because ${pkgroot} is computed using takeDirectory. It should instead use (takeDirectory . dropTrailingPathSeparator)
Trac metadata
Trac field | Value |
---|---|
Version | 8.0.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | ghc-pkg |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |