
To be clear, I suggest we change the default recommended build-depends text from: library -- ... if flag(network-uri) build-depends: network-uri >= 2.6 else build-depends: network < 2.6 to library -- ... if flag(network-uri) build-depends: network-uri >= 2.6, network >= 2.6 else build-depends: network < 2.6 Cheers, Edward Excerpts from Edward Z. Yang's message of 2014-08-27 15:15:27 +0100:
Hello all,
I'd like to report some more subtle breakage with respect to this split regarding packages which depend on just network-uri, but not network itself. The issue is reported here: https://github.com/haskell/cabal/issues/2063
I think the workaround is to add a "bogus" dependency on network if you use the flags.
Cheers, Edward
Excerpts from Michael Snoyman's message of 2014-08-01 12:31:13 +0100:
This was brought up last year[1], and I'd like to bring it up again, based on a recent issue I was working through with a user[2]. I realize that this is a breaking change, but:
1. It's a minor breaking change: you simply need to add an extra package to your build-depends. 2. The problems caused by having a parsec dependency in network can be severe, especially for new users (I'll describe the details after the proposal).
Concretely, I believe we should do the following:
1. Create a new package, network-uri, version 2.5.0.0, which exposes no modules and has an upper bound `network < 2.6. 2. Create a second release of network-uri, version 3.0.0.0, which provides the Network.URI module verbatim as provided by the network package today, and has a lower bound `network >= 3.0`. 3. Release network version 3.0.0.0, with no changes from the currently released version, except that (a) no Network.URI module is provided, and (b) there is no parsec dependency.
I don't remember how the discussion went last time, but I seem to remember general consensus. I'd like to set a discussion period of two weeks (August 15).
## Motivation
To give a concrete example of why this problem is severe, consider the following data:
* The network package is a pain to install on Windows for most users (especially new users), since it requires msys. * Most Windows users therefore install the Haskell Platform, avoiding the msys dependency. * The current release of HP installs text version 0.11.3.1. text is a dependency of parsec, and parsec is a dependency of network. Therefore, you can't build against a new version of text *and* use the network package without recompiling network, which as I mentioned is difficult. * A number of popular packages depend on newer versions of text. For example, since 0.8.0.0, aeson requires text version 1.1.0.0 or later. as does attoparsec since version 0.12.0.0.
[1] http://www.haskell.org/pipermail/libraries/2013-January/019234.html [2] https://groups.google.com/d/msg/yesodweb/auk2vByXgO8/lUZ9oanKyMwJ