[Haskell-cafe] Info on dependencies among libs distributed with ghc?

Ivan Lazar Miljenovic ivan.miljenovic at gmail.com
Mon Apr 21 10:30:26 UTC 2014


On 21 April 2014 20:18, Magnus Therning <magnus at therning.org> wrote:
> On Mon, Apr 21, 2014 at 10:38:51AM +0200, Herbert Valerio Riedel wrote:
>> On 2014-04-21 at 07:35:32 +0200, Magnus Therning wrote:
>>> On Sun, Apr 20, 2014 at 06:01:33PM -0400, Carter Schonwald wrote:
>>>> yup. go crazy :)
>>>
>>> What other packages that are shipped with Ghc can I update without
>>> running into the diamond-dependency problem?
>>>
>>> Package          | Safe to update
>>> =================================
>>> Cabal            | ✓
>>
>> Problems can arise though, if you install packages which start
>> linking against the newer Cabal package, and then you happen to need
>> to link those together with the 'ghc' package (which currently
>> depends on the Cabal lib bundled with the GHC distro), then you got
>> yourself a diamond-dep problem nevertheless
>
> Yes, that would be the diamond-dependency problem, which I'm trying to
> avoid!
>
>> If that poses no problem to you, many of the packages listed below
>> (except for the wired-in packages, namely: base, ghc-prim,
>> integer-gmp, and template-haskell), could be regarded similarly
>> "safe to update" (more so in a Cabal sandbox)
>
> It does, since this isn't only my development environment but the
> development environment of everyone using the Arch Linux repository I
> upload packages to.
>
>> just look at the output of
>>
>>  ghc-pkg dot --global | dotty  -
>>
>> and look out for those packages that are only depended upon directly
>> by GHC (minus the aforementioned wired-in packages)
>
> Well, wouldn't I need to look at the transitive closure of `ghc`
> dependencies, since e.g. an upgrade of `array` would trigger a
> recompile of `Cabal` which is a dependency of `ghc` (a wired-in
> package)?
>
> If I'm reading that graph correctly only packages that have no
> incoming arrows and aren't wired-in are safe to upgrade.  That means
> only `haskell98` and `haskell2010` would be safe to upgrade.

What makes Cabal different is that most packages don't have an
actually dependency on Cabal (in terms of their code); they just use
Cabal to build themselves.

>
> /M
>
> --
> Magnus Therning                      OpenPGP: 0xAB4DFBA4
> email: magnus at therning.org   jabber: magnus at therning.org
> twitter: magthe               http://therning.org/magnus
>
> Perl is another example of filling a tiny, short-term need, and then
> being a real problem in the longer term.
>      -- Alan Kay
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>



-- 
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
http://IvanMiljenovic.wordpress.com


More information about the Haskell-Cafe mailing list