Fix #13703 by correctly using munged names in ghc-pkg.
authorEdward Z. Yang <ezyang@cs.stanford.edu>
Tue, 16 May 2017 04:17:45 +0000 (21:17 -0700)
committerEdward Z. Yang <ezyang@cs.stanford.edu>
Wed, 17 May 2017 01:59:53 +0000 (18:59 -0700)
commitd9e9a9b3016a05e6153de3803998877f91c6cdf4
tree053ab552a3be5b95502bf94146d0d19a27ae2386
parentcec7d580c2c033c3aaeba093752328d8f3635cd0
Fix #13703 by correctly using munged names in ghc-pkg.

Summary:
Cabal internal libraries are implemented using a trick, where the 'name'
field in ghc-pkg registration file is munged into a new form to keep
each internal library looking like a distinct package to ghc-pkg and
other tools; e.g. the internal library q from package p is named
z-p-z-q.

Later, Cabal library got refactored so that we made a closer distinction
between these "munged" package names and the true package name of a
package.  Unfortunately, this is an example of a refactor for clarity in
the source code which ends up causing problems downstream, because the
point of "munging" the package name was to make it so that ghc-pkg and
similar tools transparently used MungedPackageName whereever they
previously used PackageName (in preparation for them learning proper
syntax for package name + component name).  Failing to do this meant
that internal libraries from the same package (but with different
names) clobber each other.

This commit search-replaces most occurrences of PackageName in
ghc-pkg and turns them into MungedPackageName. Otherwise there
shouldn't be any functional differenes.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: bgamari, austin

Subscribers: rwbarton, thomie

GHC Trac Issues: #13703

Differential Revision: https://phabricator.haskell.org/D3590
testsuite/.gitignore
testsuite/tests/cabal/Makefile
testsuite/tests/cabal/T13703.stdout [new file with mode: 0644]
testsuite/tests/cabal/all.T
testsuite/tests/cabal/test13703a.pkg [new file with mode: 0644]
testsuite/tests/cabal/test13703b.pkg [new file with mode: 0644]
utils/ghc-pkg/Main.hs