[Haskell-cafe] ANN: HDBC v2.0 now available

Duncan Coutts duncan.coutts at worc.ox.ac.uk
Sun Feb 1 10:19:55 EST 2009


On Sun, 2009-02-01 at 15:56 +0100, Niklas Broberg wrote:
> > So in the next cabal-install release (which should be pretty soon now)
> > configure will do the same thing and pick base 3 unless you specify
> > build-depends base >= 4.
> 
> ... and so there will never be any incentive for these many packages
> to migrate to base-4, which also has consequences for packages that do
> want to use base-4, but also want to depend on such packages.

Actually a package that uses base 4 can depend on other packages that
use base 3. They all co-exist fine. This already happens now.

> I would suggest as a less stagnating approach to issue a warning/hint
> when a package with no explicit version dependency for base fails to
> build.

So my plan is to make hackage require an upper bound on the version of
base for all new packages. That should avoid the need to use the
preferences hack the next time around.

As for what mechanisms we use to persuade package authors to use base 4
over base 3 for new releases, I'm open to suggestions.

One possibility is to warn when configuring if we used the preference to
select base 3 rather than 4. That is, if the solver had a free choice
between 3 and 4 then that's probably a sign that it needs updating. Of
course that doesn't help for packages that work with 3 or 4 perfectly
well.

We could try a mechanism for base not using the preference system but
something more special. For example we could only apply the base 3
preference if there is no upper bound on the version of base. So if the
package says:

build-depends: base >= 3 && < 5

then we say great, and don't use any default preference (and thus pick
base 4). If on the other hand the package says:

build-depends: base

Then we pick base 3 and we reject all new packages uploaded to hackage
like this. They must all specify an upper bound. We could also warn at
configuration time.

So that's the suggestion, we'd only use the base 3 preference if there
is no upper bound on the version of base. That means it should continue
to work for old packages and new ones will default to base 4.

What do you think?

Duncan



More information about the Haskell-Cafe mailing list