How to throw an error if using "cabal-install" < version XYZ?

Roman Cheplyaka roma at ro-che.info
Thu May 23 07:42:44 CEST 2013


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




More information about the cabal-devel mailing list