[Haskell-cafe] How to throw an error if using "cabal-install" < version XYZ?

Carter Schonwald carter.schonwald at gmail.com
Thu May 23 08:21:51 CEST 2013


constraining it to >= 1.17 would be better while 1.18 isn't out yet..


On Thu, May 23, 2013 at 1:42 AM, Roman Cheplyaka <roma at ro-che.info> wrote:

> Perhaps I'm missing something, but why not just
>
>   cabal-version:       >=1.18
>
> ?
>
> It will constrain the Cabal version, not cabal-install, but judging from
> the fix[1] this is what you actually need.
>
> [1]:
> https://github.com/haskell/cabal/commit/d148336e97cda2e3585c453cf9af61bc3635131a
>
> Roman
>
> * Ryan Newton <rrnewton at gmail.com> [2013-05-22 22:50:08-0400]
> > A cabal-install bug <https://github.com/haskell/cabal/issues/1284> was
> > fixed recently that pertains to building C libraries with profiling.
> >
> > As a result, I want a certain
> > package<http://hackage.haskell.org/package/atomic-primops-0.1.0.2>to
> > test if cabal-install < 0.17.0 is used, and throw a preemptive error.
> >  Otherwise this package fails in weird ways at runtime (it's a nasty
> one).
> >
> > I noticed with some surprise the following sequence:
> >
> > *   $ cabal --version*
> > *   cabal-install version 1.16.0.2*
> > *   using version 1.16.0.3 of the Cabal library*
> > *   $ cabal clean*
> > *   $ cabal install*
> > *   $ cat dist/build/autogen/cabal_macros.h  | grep VERSION_Cabal*
> > *   #define VERSION_Cabal "1.17.0"*
> >
> > Alright, so that, in retrospect, makes sense.  The version is which *my*
> > library is linked with is the relevant one, not the one cabal-install was
> > linked with [1].
> >
> > So the natural next thought is to move the MIN_VERSION_Cabal test into
> > Setup.hs, and force cabal to use it by setting the build type to Custom.
> >  But... I just learned from this ticket that the cabal macros are not
> > available in Setup.hs:
> >
> >    http://hackage.haskell.org/trac/hackage/ticket/326
> >
> > Uh oh, what's left?
> >
> >  -Ryan
> >
> > [1] P.S. Personally I'm now using a bash function like below, to force
> the
> > two versions to be the same:
> >
> > function safe_cabal_install () {
> >   VER=`cabal --version | tail -n1 | awk '{ print $3 }'`
> >   cabal install --constraint="Cabal==$VER" $*
> > }
>
> > _______________________________________________
> > cabal-devel mailing list
> > cabal-devel at haskell.org
> > http://www.haskell.org/mailman/listinfo/cabal-devel
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130523/f86bb95a/attachment.htm>


More information about the Haskell-Cafe mailing list