[Haskell-cafe] Re: cabal install HaXml installs wrong version unless I specify the version number

Thomas Hartman tphyahoo at gmail.com
Sat Nov 15 07:31:34 EST 2008


This is all news to me, and un-googleable to boot:

http://www.google.pl/search?hl=en&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=cabal+referred-versions&spell=1

(no results)

So yes, I think this referred-versions machinery should at least be
made more transparent for situations when it does the wrong thing,
like with xml-parsec.

I think your last suggestion is good

> cabal install haxml
> Downloading HaXml-1.13.3...
> Note: the recommended version is HaXml-1.13.3 but latest version is
> HaXml-1.19, use cabal install haxml-1.19 if you want that version.

I would have this message pop up for both cabal install and cabal
upgrade -- especiallly since with cabal upgrade the result was for me
completely bafflling.

Thomas.



2008/11/15 Duncan Coutts <duncan.coutts at worc.ox.ac.uk>:
> On Sat, 2008-11-15 at 12:39 +0100, Thomas Hartman wrote:
>> When I specify
>>
>> Build-Depends:  base, parsec, HaXml >= 1.19.4
>>
>> in xml-parsec.cabal
>>
>> it does install correctly.
>
> Yes, saying what version it needs is a good thing. It's all guesses
> otherwise.
>
>> I guess what happens is that cabal install takes the earliest version
>> of a package registered to try to build. I guess that's a reasonable
>> default.
>
> Actually it does that for specific packages, there's a file in the
> hackage index called 'referred-versions':
>
> base < 4
> parsec < 3
> HaXml == 1.13.*
> QuickCheck < 2
>
> These are all cases where there are large numbers of packages that fail
> to specify an upper version constraint but break when built with the
> later version of the package. In the case of HaXml it is also because
> the 1.13 series is the one considered stable by its author.
>
>> What seems unreasonable to me is that cabal continued to take the
>> earlier version even after I hid it with ghc-pkg hide.
>
> We cannot in general consider the hidden status of packages or we'd
> never be able to use packages like 'ghc' which are always hidden.
> Perhaps they could be used as soft preferences. If so should those come
> before or after the preferences from the command line or from the
> hackage index?
>
>> My advice would be to improve the error message to read
>>
>> "...    Could not find module `Text.XML.HaXml.Posn':
>>       it is a member of package HaXml-1.19.4, which is hidden
>>       It can be unhidden by adding
>>
>>       Build-Depends: HaXml >= 1.19.4
>>
>>   to xml-parsec.cabal"
>
> Unfortunately we cannot easily do that. It is ghc that produces the
> message about hidden packages but it is cabal that told ghc to hide all
> the packages (other than those specified in the .cabal file). Some
> people suggest that we should try parsing the ghc error messages to be
> able to provide such hints but I don't think that's sensible.
>
>> That leaves the issue of cabal upgrade not upgrading to the latest
>> version available on hackage, which still feels like a real bug to me.
>
> That's again down to the preferred versions in the hackage index. It
> only comes into effect when you specify no version when asking for a
> package. If you cabal install 'haxml >= 1.14' then it'll pick the latest
> version.
>
> When you "cabal install haxml", do you mean "install the default
> version" or "install the latest experimental version"? Currently it
> means the former. If there is general agreement it should mean the
> latter then we can switch it.
>
> Or perhaps it just needs an informational message to tell the user
> whenever the default version is not the latest version.
>
> cabal install haxml
> Downloading HaXml-1.13.3...
> Note: the recommended version is HaXml-1.13.3 but latest version is
> HaXml-1.19, use cabal install haxml-1.19 if you want that version.
>
> Or something like that.
>
> Duncan
>
>


More information about the Haskell-Cafe mailing list