ghc-pkg, package database path containing a trailing slash, and ${pkgroot}

Nicolas Dudebout nicolas.dudebout at gmail.com
Wed Jun 15 10:34:56 UTC 2016


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)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20160615/3852547f/attachment.html>


More information about the ghc-devs mailing list