[GHC] #8244: Removing the Cabal dependency

GHC ghc-devs at haskell.org
Thu Aug 28 13:24:49 UTC 2014


#8244: Removing the Cabal dependency
-------------------------------------+-------------------------------------
              Reporter:  nh2         |            Owner:  duncan
                  Type:  bug         |           Status:  new
              Priority:  normal      |        Milestone:
             Component:  Compiler    |          Version:  7.6.3
            Resolution:              |         Keywords:
      Operating System:              |     Architecture:  Unknown/Multiple
  Unknown/Multiple                   |       Difficulty:  Unknown
       Type of failure:              |       Blocked By:
  None/Unknown                       |  Related Tickets:
             Test Case:              |
              Blocking:              |
Differential Revisions:  D172        |
-------------------------------------+-------------------------------------

Comment (by duncan):

 Replying to [comment:25 ezyang]:
 > refold: It's a good question, and thinking about this question more
 carefully, no, this patchset alone doesn't give us the capability. The
 problem is that GHC is still tightly coupled to ghc-pkg, but ghc-pkg still
 has a Cabal dependency and thus if you update Cabal, you also need to
 upgrade ghc-pkg. So, the only way to make Cabal separately upgradeable is
 by siphoning ghc-pkg off into a proper package, relaxing the tight
 coupling and upgrading it when you upgrade Cabal. duncan, can we do this?

 I don't think this is true. If you upgrade Cabal you do not need to
 upgrade ghc-pkg. Rememer that Cabal can work with older (and often newer)
 versions of ghc. It is in fact not tightly coupled with ghc-pkg, because
 the coupling is only via the external textual representation of the
 `InstalledPackageInfo` which gives us a lot of room for forwards and
 backwards compatability.

 The only times when they're more strongly coupled is when ghc-pkg requires
 new fields in the `InstalledPackageInfo`. In that case you need to be
 using a newer Cabal.

 So as far as I can see, upgrading Cabal will still be fine under this new
 scheme, with the bonus that the ghc library itself will not use it. GHC
 will still ship with Cabal, but you could add a new version.

 Could you take an existing ghc binary tarball and modifiy it to include a
 newer Cabal lib without breaking things? Probably yes. No other libraries
 that ghc ships will depend on Cabal, so they would not break. And it would
 be fine for ghc-pkg to have been built against the older Cabal, so long as
 it is statically linked against Cabal (or the older Cabal .so is still
 included).

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8244#comment:30>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list