[GHC] #12052: Split ghc-boot so we have better dependency hygiene

GHC ghc-devs at haskell.org
Thu May 12 19:55:27 UTC 2016


#12052: Split ghc-boot so we have better dependency hygiene
-------------------------------------+-------------------------------------
        Reporter:  ezyang            |                Owner:
            Type:  bug               |               Status:  new
        Priority:  high              |            Milestone:  8.0.2
       Component:  Core Libraries    |              Version:  8.0.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by hvr):

 It's not only `bytestring` `template-haskell` started to depend on:

 In GHC 7.10.3 there were the following deps:

 {{{
 "template-haskell-2.10.0.0" -> "base-4.8.2.0"
 "template-haskell-2.10.0.0" -> "pretty-1.1.2.0"
 "pretty-1.1.2.0" -> "base-4.8.2.0"
 "pretty-1.1.2.0" -> "deepseq-1.4.1.1"
 "pretty-1.1.2.0" -> "ghc-prim-0.4.0.0"
 "deepseq-1.4.1.1" -> "array-0.5.1.0"
 "deepseq-1.4.1.1" -> "base-4.8.2.0"
 }}}

 whereas with GHC 8.0 we have now


 {{{
 "template-haskell-2.11.0.0" -> "base-4.9.0.0"
 "template-haskell-2.11.0.0" -> "ghc-boot-8.0.0.20160511"
 "template-haskell-2.11.0.0" -> "pretty-1.1.3.3"
 "pretty-1.1.3.3" -> "base-4.9.0.0"
 "pretty-1.1.3.3" -> "deepseq-1.4.2.0"
 "pretty-1.1.3.3" -> "ghc-prim-0.5.0.0"
 "deepseq-1.4.2.0" -> "array-0.5.1.1"
 "deepseq-1.4.2.0" -> "base-4.9.0.0"

 "ghc-boot-8.0.0.20160511" -> "base-4.9.0.0"
 "ghc-boot-8.0.0.20160511" -> "binary-0.8.3.0"
 "ghc-boot-8.0.0.20160511" -> "bytestring-0.10.8.0"
 "ghc-boot-8.0.0.20160511" -> "directory-1.2.6.2"
 "ghc-boot-8.0.0.20160511" -> "filepath-1.4.1.0"
 "binary-0.8.3.0" -> "array-0.5.1.1"
 "binary-0.8.3.0" -> "base-4.9.0.0"
 "binary-0.8.3.0" -> "bytestring-0.10.8.0"
 "binary-0.8.3.0" -> "containers-0.5.7.1"
 "directory-1.2.6.2" -> "base-4.9.0.0"
 "directory-1.2.6.2" -> "filepath-1.4.1.0"
 "directory-1.2.6.2" -> "time-1.6.0.1"
 "directory-1.2.6.2" -> "unix-2.7.2.0"
 }}}

 so effectively, `template-haskell` now transitively adds the following
 dependencies (relative to GHC 7.10.3):

  - `unix`
  - `directory`
  - `filepath`
  - `containers`
  - `bytestring`
  - `binary`

 this reduces a lot of flexibility from the cabal solver, and makes it
 impossible to use newer versions of those packages (something I did
 frequently in GHC 7.10.3) as soon as `template-haskell` enters install-
 plans.

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


More information about the ghc-tickets mailing list