Re: [Haskell-cafe] hledget: mtv vs transformers

You mean mtl 2.*, right ? Yes that is a problem. I'm nervous about requiring mtl 2 because when I bumped hledger 0.13's process dependency to 0.14 for similar reasons it made all kinds of trouble for folks who just want to install the hledger core in standard/older haskell environments. On Jan 20, 2011, at 5:11 PM, Dmitry Astapov wrote:
Since hledger-chart depends on Chart, which in turn depends on transformers 0.2.*, it will make a sense to bump all mtl dependencies in hledger to 2.2
When one does "make install" with older GHC (like 6.12.1, for example), and mtl 1.x is available, it would be happily used for hledger-lib and hledger, but compilation of hledger-chart will pull in transformers 0.2 (but not the newer mtl) and will fail due to conflicting instances.

Couldn't you depend on either version of mtl?
On Fri, Jan 21, 2011 at 3:37 AM, Simon Michael
You mean mtl 2.*, right ?
Yes that is a problem. I'm nervous about requiring mtl 2 because when I bumped hledger 0.13's process dependency to 0.14 for similar reasons it made all kinds of trouble for folks who just want to install the hledger core in standard/older haskell environments.
On Jan 20, 2011, at 5:11 PM, Dmitry Astapov wrote:
Since hledger-chart depends on Chart, which in turn depends on transformers 0.2.*, it will make a sense to bump all mtl dependencies in hledger to 2.2
When one does "make install" with older GHC (like 6.12.1, for example), and mtl 1.x is available, it would be happily used for hledger-lib and hledger, but compilation of hledger-chart will pull in transformers 0.2 (but not the newer mtl) and will fail due to conflicting instances.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On Fri, Jan 21, 2011 at 8:02 AM, Michael Snoyman
Couldn't you depend on either version of mtl?
Point is that in this particular case two different versions of mtl are being pulled in the compilation by different dependencies. Plus, transformers 0.2.* is selected as well. Cabal reasons along the following lines: one dependency is hledger 0.13, which is built against the mtl 1.x. Selecting both another dependency is Chart, which is built against transformers 0.2.x Now instances from transformers conflict with those from mtl 1.x, when you are building hledger-chart Plus, when you are rebuilding hledger-0.13 from scratch, they start to conflict as well. Add in the mix deficiency of 6.12.1 which is sometimes picks up wrong version of packages (or so I remember), and all the hell breaks loose. The only solution for me was to bump mtl to 2.x, rebuild everything depending on mtl, and something pulled in newer "process" in the process, which caused another wave of rebuilds. With 6.12.3 or 7.0.1 everything is way easier (as expected) :)
On Fri, Jan 21, 2011 at 3:37 AM, Simon Michael
wrote: You mean mtl 2.*, right ?
Yes that is a problem. I'm nervous about requiring mtl 2 because when I bumped hledger 0.13's process dependency to 0.14 for similar reasons it made all kinds of trouble for folks who just want to install the hledger core in standard/older haskell environments.
On Jan 20, 2011, at 5:11 PM, Dmitry Astapov wrote:
Since hledger-chart depends on Chart, which in turn depends on transformers 0.2.*, it will make a sense to bump all mtl dependencies in hledger to 2.2
When one does "make install" with older GHC (like 6.12.1, for example), and mtl 1.x is available, it would be happily used for hledger-lib and hledger, but compilation of hledger-chart will pull in transformers 0.2
(but
not the newer mtl) and will fail due to conflicting instances.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Dmitry Astapov

On Fri, Jan 21, 2011 at 12:50 PM, Dmitry Astapov
On Fri, Jan 21, 2011 at 8:02 AM, Michael Snoyman
wrote: Couldn't you depend on either version of mtl?
Point is that in this particular case two different versions of mtl are being pulled in the compilation by different dependencies. Plus, transformers 0.2.* is selected as well. Cabal reasons along the following lines: one dependency is hledger 0.13, which is built against the mtl 1.x. Selecting both another dependency is Chart, which is built against transformers 0.2.x Now instances from transformers conflict with those from mtl 1.x, when you are building hledger-chart Plus, when you are rebuilding hledger-0.13 from scratch, they start to conflict as well. Add in the mix deficiency of 6.12.1 which is sometimes picks up wrong version of packages (or so I remember), and all the hell breaks loose. The only solution for me was to bump mtl to 2.x, rebuild everything depending on mtl, and something pulled in newer "process" in the process, which caused another wave of rebuilds. With 6.12.3 or 7.0.1 everything is way easier (as expected) :)
What I mean is that if his code isn't using any features particular to a specific version of mtl, he can relax the version bounds to allow *either* version, which should at least sidestep the issue. If the underlying libraries depend on both mtl 1 and 2, though, there really isn't much to be done.
On Fri, Jan 21, 2011 at 3:37 AM, Simon Michael
wrote: You mean mtl 2.*, right ?
Yes that is a problem. I'm nervous about requiring mtl 2 because when I bumped hledger 0.13's process dependency to 0.14 for similar reasons it made all kinds of trouble for folks who just want to install the hledger core in standard/older haskell environments.
On Jan 20, 2011, at 5:11 PM, Dmitry Astapov wrote:
Since hledger-chart depends on Chart, which in turn depends on transformers 0.2.*, it will make a sense to bump all mtl dependencies in hledger to 2.2
When one does "make install" with older GHC (like 6.12.1, for example), and mtl 1.x is available, it would be happily used for hledger-lib and hledger, but compilation of hledger-chart will pull in transformers 0.2 (but not the newer mtl) and will fail due to conflicting instances.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Dmitry Astapov

On Fri, Jan 21, 2011 at 3:37 AM, Simon Michael
You mean mtl 2.*, right ?
Yes that is a problem. I'm nervous about requiring mtl 2 because when I bumped hledger 0.13's process dependency to 0.14 for similar reasons it made all kinds of trouble for folks who just want to install the hledger core in standard/older haskell environments.
Well, chalk me up as the person with standard/old haskell environment :) I have many versions of GHC installed, plus I have a Haskell Platform from .debs as provided by Debian/unstable. That version of HP still carries GHC 6.12.1 and mtl 1.* Using that, it is impossible to "make install" hledger for the reasons outlined below - you either have to exclude hledger-chart, or build fails.
On Jan 20, 2011, at 5:11 PM, Dmitry Astapov wrote:
Since hledger-chart depends on Chart, which in turn depends on transformers 0.2.*, it will make a sense to bump all mtl dependencies in hledger to 2.2
When one does "make install" with older GHC (like 6.12.1, for example), and mtl 1.x is available, it would be happily used for hledger-lib and hledger, but compilation of hledger-chart will pull in transformers 0.2 (but not the newer mtl) and will fail due to conflicting instances.
-- Dmitry Astapov

On 1/20/11 10:02 PM, Michael Snoyman wrote:
Couldn't you depend on either version of mtl?
I currently depend on "mtl", no version.. am I missing your point ? On 1/21/11 2:50 AM, Dmitry Astapov wrote:
something pulled in newer "process" in the process, which caused another wave of rebuilds.
hledger! As I said. Due to just the kind of dependency bump you're suggesting. (I've since reverted that higher process dependency.) On 1/21/11 2:44 AM, Dmitry Astapov wrote:
I have many versions of GHC installed, plus I have a Haskell Platform from .debs as provided by Debian/unstable. That version of HP still carries GHC 6.12.1 and mtl 1.*
So I think you're saying: "I know I won't be able to install hledger with my standard platform install, but I'm willing to upgrade my whole system to mtl 2 for hledger, because at least I know hledger-chart will install in the end." And I'm saying: I now think it's a better trade-off for now to leave hledger core installable without this pain, and let hledger-chart users - who are less numerous, since gtk is relatively difficult, and hledger-chart is for now quite limited - deal with the problem (by installing hledger-chart before hledger, or by using --constraint 'mtl>=2'). And, though I know few read them, document it as best we can at http://hledger.org/MANUAL.html#installing and http://hledger.org/MANUAL.html#installation-issues . Also I seem to remember 6.12.1 had at least one specific problem, as you suggest, so supporting it might be out of scope...
participants (3)
-
Dmitry Astapov
-
Michael Snoyman
-
Simon Michael