cabal2arch 0.6.1 now generates bad dependencies

Hello again, cabal2arch 0.6.1 seems to only be generating dependencies consisting of ghc and haskell-cabal. This is problematic since ghc 6.12 already includes Distribution.Cabal and a few packages have dependencies besides these two :P This should be pretty easy to fix, but I'm willing to help if it's too boring to contemplate.

On Sat, Jan 16, 2010 at 10:57 AM, Tasha Buckley
Hello again,
cabal2arch 0.6.1 seems to only be generating dependencies consisting of ghc and haskell-cabal.
This is problematic since ghc 6.12 already includes Distribution.Cabal and a few packages have dependencies besides these two :P
I thought 6.10 came with Cabal as well, and that it was dealt with by having 'ghc' provide 'haskell-cabal' in Arch. I notice that now the 'provides' in GHC 6.12 is much improved, excellent. /M -- Magnus Therning (OpenPGP: 0xAB4DFBA4) magnus@therning.org Jabber: magnus@therning.org http://therning.org/magnus identi.ca|twitter: magthe

On Sat, Jan 16, 2010 at 5:04 AM, Magnus Therning
I thought 6.10 came with Cabal as well, and that it was dealt with by having 'ghc' provide 'haskell-cabal' in Arch. These points are all true, but yaourt (the tool most people use and what's recommended in the wiki) doesn't seem to respect this and it seems kind of odd to me to have haskell-cabal an an explicit dep when none of ghc's other known provided packages are made explicit. Finally and most importantly, the main issue is that these are literally the only dependencies being generated. For example, many new 6.12 packages require mtl, but that's not being placed in the depends array.

On Sat, Jan 16, 2010 at 11:31 AM, Tasha Buckley
On Sat, Jan 16, 2010 at 5:04 AM, Magnus Therning
wrote: I thought 6.10 came with Cabal as well, and that it was dealt with by having 'ghc' provide 'haskell-cabal' in Arch. These points are all true, but yaourt (the tool most people use and what's recommended in the wiki) doesn't seem to respect this and it seems kind of odd to me to have haskell-cabal an an explicit dep when none of ghc's other known provided packages are made explicit. Finally and most importantly, the main issue is that these are literally the only dependencies being generated. For example, many new 6.12 packages require mtl, but that's not being placed in the depends array.
You are right, yaourt doesn't use the 'provides' field in the package description, I'd argue that is a bug in yaourt though (see my comment on the yaourt page in AUR from 8 March last year). I wouldn't be surprised if there are other sub-communities that bump into this as well. There is a new tool, paktahn, that aspires to take yaourt's place, it's far from there, but it does handle 'provides' properly. If you take a look at what GHC 6.12 has in its 'provides' I suspect that a decision has been taken to put even more into it, not less. I personally think this is the correct route, even though it means Haskell users are likely to bump into the yaourt bug even more often. The point about missing dependencies in PKGBUILDs generated by cabal2arch needs to be fixed. You said it'd be easy, and I think you are correct. AFAIU the cabal2arch code what needs to be done is remove all special handling of "core packages". The few packages that are shipped with GHC 6.12 are mentioned in its 'provides' field, so *everything* should now be mentioned as a dependency. /M -- Magnus Therning (OpenPGP: 0xAB4DFBA4) magnus@therning.org Jabber: magnus@therning.org http://therning.org/magnus identi.ca|twitter: magthe

* On Saturday, January 16 2010, Tasha Buckley wrote:
On Sat, Jan 16, 2010 at 5:04 AM, Magnus Therning
wrote: I thought 6.10 came with Cabal as well, and that it was dealt with by having 'ghc' provide 'haskell-cabal' in Arch. These points are all true, but yaourt (the tool most people use and what's recommended in the wiki) doesn't seem to respect this and it seems kind of odd to me to have haskell-cabal an an explicit dep when none of ghc's other known provided packages are made explicit. Finally and most importantly, the main issue is that these are literally the only dependencies being generated. For example, many new 6.12 packages require mtl, but that's not being placed in the depends array.
This is a simple change in cabal2arch: corePackages :: [Dependency] ... -- removed: ,Dependency (PackageName "mtl") (ThisVersion (Version [1,1,0,2] [])) ... But I'll hold off on sending a patch right away, since I think that other core packages (those provided by ghc-6.12) have also changed. -- Adam

vogt.adam:
* On Saturday, January 16 2010, Tasha Buckley wrote:
On Sat, Jan 16, 2010 at 5:04 AM, Magnus Therning
wrote: I thought 6.10 came with Cabal as well, and that it was dealt with by having 'ghc' provide 'haskell-cabal' in Arch. These points are all true, but yaourt (the tool most people use and what's recommended in the wiki) doesn't seem to respect this and it seems kind of odd to me to have haskell-cabal an an explicit dep when none of ghc's other known provided packages are made explicit. Finally and most importantly, the main issue is that these are literally the only dependencies being generated. For example, many new 6.12 packages require mtl, but that's not being placed in the depends array.
This is a simple change in cabal2arch:
corePackages :: [Dependency] ... -- removed: ,Dependency (PackageName "mtl") (ThisVersion (Version [1,1,0,2] [])) ...
But I'll hold off on sending a patch right away, since I think that other core packages (those provided by ghc-6.12) have also changed.
Right, that's the usual 'ghc major update' diff. I'll take care of it. The list just has to match this page: http://haskell.org/haskellwiki/Libraries_released_with_GHC -- Don

* On Saturday, January 16 2010, Don Stewart wrote: ...
Right, that's the usual 'ghc major update' diff.
I'll take care of it. The list just has to match this page:
http://haskell.org/haskellwiki/Libraries_released_with_GHC
-- Don
It might be sensible to remove the use of corePackages in: ] removeCoreFrom :: [Dependency] -> [Dependency] Considering the current ghc now provides haskell-* packages for all of it's core libraries: Provides : haskell-array=0.3.0.0 haskell-bytestring=0.9.1.5 haskell-cabal=1.8.0.2 haskell-containers=0.3.0.0 haskell-directory=1.0.1.0 haskell-extensible-exceptions=0.1.1.1 haskell-filepath=1.1.0.3 haskell-haskell98=1.0.1.1 haskell-hpc=0.5.0.4 haskell-old-locale=1.0.0.2 haskell-old-time=1.0.0.3 haskell-pretty=1.0.1.1 haskell-process=1.0.1.2 haskell-random=1.0.0.2 haskell-syb=0.1.0.2 haskell-template-haskell=2.4.0.0 haskell-time=1.1.4 haskell-unix=2.4.0.0 haskell-utf8-string=0.3.4 That would make all library dependencies explicit (well other than base). If ghc continues to reduce the set of core libraries (ex. mtl is missing from 6.12), pkgbuilds will have to be updated less frequently. But perhaps such a change isn't worth the extra time pacman will then take to resolve dependencies... and also other bugs in yaourt it might expose. -- Adam

vogt.adam:
* On Saturday, January 16 2010, Don Stewart wrote:
...
Right, that's the usual 'ghc major update' diff.
I'll take care of it. The list just has to match this page:
http://haskell.org/haskellwiki/Libraries_released_with_GHC
-- Don
It might be sensible to remove the use of corePackages in:
] removeCoreFrom :: [Dependency] -> [Dependency]
Considering the current ghc now provides haskell-* packages for all of it's core libraries:
Provides : haskell-array=0.3.0.0 haskell-bytestring=0.9.1.5 haskell-cabal=1.8.0.2 haskell-containers=0.3.0.0 haskell-directory=1.0.1.0 haskell-extensible-exceptions=0.1.1.1 haskell-filepath=1.1.0.3 haskell-haskell98=1.0.1.1 haskell-hpc=0.5.0.4 haskell-old-locale=1.0.0.2 haskell-old-time=1.0.0.3 haskell-pretty=1.0.1.1 haskell-process=1.0.1.2 haskell-random=1.0.0.2 haskell-syb=0.1.0.2 haskell-template-haskell=2.4.0.0 haskell-time=1.1.4 haskell-unix=2.4.0.0 haskell-utf8-string=0.3.4
That would make all library dependencies explicit (well other than base). If ghc continues to reduce the set of core libraries (ex. mtl is missing from 6.12), pkgbuilds will have to be updated less frequently.
Oh, that's an interesting idea. It moves the list to keeping ghc's list up to date. Which I presume happens every time we update ghc? Where does the list of what our ghc package provide live? Maybe I can just suck that in?
But perhaps such a change isn't worth the extra time pacman will then take to resolve dependencies... and also other bugs in yaourt it might expose.
That's always a risk.

On Sat, Jan 16, 2010 at 8:18 PM, Adam Vogt
] removeCoreFrom :: [Dependency] -> [Dependency]
Considering the current ghc now provides haskell-* packages for all of it's core libraries:
Provides : haskell-array=0.3.0.0 haskell-bytestring=0.9.1.5 haskell-cabal=1.8.0.2 haskell-containers=0.3.0.0 haskell-directory=1.0.1.0 haskell-extensible-exceptions=0.1.1.1 haskell-filepath=1.1.0.3 haskell-haskell98=1.0.1.1 haskell-hpc=0.5.0.4 haskell-old-locale=1.0.0.2 haskell-old-time=1.0.0.3 haskell-pretty=1.0.1.1 haskell-process=1.0.1.2 haskell-random=1.0.0.2 haskell-syb=0.1.0.2 haskell-template-haskell=2.4.0.0 haskell-time=1.1.4 haskell-unix=2.4.0.0 haskell-utf8-string=0.3.4
That would make all library dependencies explicit (well other than base). If ghc continues to reduce the set of core libraries (ex. mtl is missing from 6.12), pkgbuilds will have to be updated less frequently.
I think that is the Correct Way to do it!
But perhaps such a change isn't worth the extra time pacman will then take to resolve dependencies... and also other bugs in yaourt it might expose.
IMHO these are fairly silly reasons, pacman's dependency resolution may be slow, but it is insignificant compared to other stages during package building, for installing pre-built packages it might be more significant but I strongly doubt that it's enough to put people off. As for exposing bugs in yaourt, surely this is only good, isn't it? ;-) /M -- Magnus Therning (OpenPGP: 0xAB4DFBA4) magnus@therning.org Jabber: magnus@therning.org http://therning.org/magnus identi.ca|twitter: magthe

etherealgoddess:
Hello again,
cabal2arch 0.6.1 seems to only be generating dependencies consisting of ghc and haskell-cabal.
This is problematic since ghc 6.12 already includes Distribution.Cabal and a few packages have dependencies besides these two :P
This should be pretty easy to fix, but I'm willing to help if it's too boring to contemplate.
I've made the required patches to cabal2arch. See http://www.haskell.org/pipermail/arch-haskell/2010-January/000297.html Once vegai moves the other new core packages into [extra], I can continue to update PKGBUILDS. -- Don

etherealgoddess:
Hello again,
cabal2arch 0.6.1 seems to only be generating dependencies consisting of ghc and haskell-cabal.
This is problematic since ghc 6.12 already includes Distribution.Cabal and a few packages have dependencies besides these two :P
This should be pretty easy to fix, but I'm willing to help if it's too boring to contemplate.
Just to check in -- this was fixed in cabal2arch 0.7. Thanks for the report! -- Don
participants (4)
-
Adam Vogt
-
Don Stewart
-
Magnus Therning
-
Tasha Buckley