Remove fancy shadowing logic; always override in package database order. ghc-8.0.2-rc1
authorEdward Z. Yang <ezyang@cs.stanford.edu>
Thu, 17 Nov 2016 22:08:21 +0000 (17:08 -0500)
committerBen Gamari <ben@smart-cactus.org>
Thu, 17 Nov 2016 22:10:03 +0000 (17:10 -0500)
commitb5b9cf3a424ed32e0495aedd2376a0ffdf4a967d
tree2037d8e0b19968b9f30d4266adc18c05fa90b660
parente7c12cdaa7df8a7c71395da026c003ed36d3cbe6
Remove fancy shadowing logic; always override in package database order.

This is a stopgap fix for GHC 8.0 bug #12485: in particular,
it relaxes need for -package-db flags to be given in
dependency order.  The trade-off is that we are a lot more
unsafe when there are packages with duplicate 'id's in
the database stack: the new code will not do an ABI compatibility
check: if two packages have the same 'id', they are assumed to
be ABI compatible.  If this is not true, GHC may build
segfaulting executables.

Missing test updates, but I'm putting it up so people can
take a look.

In GHC 8.2, we'll record ABIs for all dependencies, allowing
GHC to make better decisions about shadowing.

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

Reviewers: austin, niteria, bgamari, simonmar

Reviewed By: simonmar

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2613

GHC Trac Issues: #12485
compiler/main/Packages.hs
docs/users_guide/packages.rst
testsuite/tests/cabal/Makefile
testsuite/tests/cabal/cabal08/all.T
testsuite/tests/cabal/shadow.stderr
testsuite/tests/cabal/shadow.stdout