[GHC] #5442: ghc-pkg unregister --user/--global/--package-conf not normative
GHC
ghc-devs at haskell.org
Mon Jul 21 12:07:27 UTC 2014
#5442: ghc-pkg unregister --user/--global/--package-conf not normative
-------------------------------------+-------------------------------------
Reporter: guest | Owner: ezyang
Type: bug | Status: new
Priority: normal | Milestone: 7.10.1
Component: ghc-pkg | Version: 7.2.1
Resolution: | Keywords:
Differential Revisions: | Operating System: Unknown/Multiple
Architecture: | Type of failure: Other
Unknown/Multiple | Test Case:
Difficulty: Unknown | Blocking:
Blocked By: |
Related Tickets: |
-------------------------------------+-------------------------------------
Changes (by ezyang):
* owner: bgamari => ezyang
Comment:
OK, I can confirm that there is something fishy going on here. Here is the
matrix of behaviors that ghc-pkg implements right now:
* If P is in the user and global, {{{unregister --user}}} removes user,
{{{unregister --global}}} removes **USER**, {{{unregister}}} removes user
* If P is in the user but not global, {{{unregister --user}}} removes
user, {{{unregister --global}}} removes **USER**, {{{unregister}}} removes
user
* If P is in the global but not user, {{{unregister --user}}} removes
**GLOBAL**, {{{unregister --global}}} removes global, {{{unregister}}}
removes global
This seems clearly wrong. The bug seems to me that ghc-pkg calculates the
database to modify fine, but then ignores it in {{{modifyPackage}}},
always using the full database stack rather than the database it
calculated to use. My suggested fix is to switch unregister to use the
flag package stack, since it is implicitly a read, and then a delete. But
I don't know if there is any existing tooling that would be broken by this
fix. I have a patch and test-cases.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/5442#comment:8>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list