
Message: 10 Date: Mon, 8 Nov 2010 09:42:33 +1100 From: Ivan Lazar Miljenovic
Subject: Re: Haskell Platform Proposal: HLint To: "Bryan O'Sullivan" Cc: libraries Message-ID: Content-Type: text/plain; charset=UTF-8 On 8 November 2010 08:35, Bryan O'Sullivan
wrote: Hlint isn't a library, right? And as an application, it presumably doesn't for any practical reason need its dependencies in the platform in order to itself be included?
As I stated earlier, the policy seems to state that they do need to be there (to be able to build the platform if nothing else):
http://trac.haskell.org/haskell-platform/wiki/AddingPackages#PackageRequirem...
Well, the policy can be changed if necessary (not that I'm proposing that here). While packages may need to be present to build an application in the platform, they don't necessarily need to be exposed as part of the platform. Rationale-8.5 seems to be targeted at libraries specifically. That is, it claims there's no technical means to differentiate between blessed and non-blessed packages, which is why non-blessed packages can't be included. But since an application doesn't expose libraries, there is a simple means to make this distinction. If you think of an application in the HP as maintaining a private fork of non-HP libraries, it makes sense. Of course, this also brings up one of my concerns. That is, the potential for future maintenance of depended-upon libraries should be considered as part of potential for maintenance of the application as a whole. If the libraries are already part of HP this is simpler. For HLint specifically, my personal opinion is that library dependencies shouldn't prevent hlint's inclusion in the HP. I'm confident that haskell-src-exts will continue to be well-maintained (and I'm glad to see that it's working towards HP inclusion as well), and since Neil maintains both uniplate and hlint I don't have any concern there. John Lato

On 8 November 2010 08:35, Bryan O'Sullivan
wrote: Hlint isn't a library, right? And as an application, it presumably doesn't for any practical reason need its dependencies in the platform in order to itself be included?
As I stated earlier, the policy seems to state that they do need to be there (to be able to build the platform if nothing else):
http://trac.haskell.org/haskell-platform/wiki/AddingPackages#PackageRequirem...
Well, the policy can be changed if necessary (not that I'm proposing that here). While packages may need to be present to build an application in the platform, they don't necessarily need to be exposed as part of the platform.
That's true for binary packaging systems. It would not be true for source based ones e.g. gentoo, freebsd ports, macports or indeed someone starting with just ghc and using cabal to install the platform meta-package.
Rationale-8.5 seems to be targeted at libraries specifically. That is, it claims there's no technical means to differentiate between blessed and non-blessed packages, which is why non-blessed packages can't be included. But since an application doesn't expose libraries, there is a simple means to make this distinction.
My opinion is that we should keep the source based distribution mechanisms in mind, in which case the rationale applies for programs as well as libraries. If we all think it's a major problem then we could look at technical solutions, but the current model is quite nice where each cabal package is translated 1:1 into a native package. In the case of HLint specifically, I think it's quite likely that we'll get haskell-src-exts into the platform in the next round. Duncan

Hi, On Mon, Nov 08, 2010 at 06:58:52PM +0000, Duncan Coutts wrote:
http://trac.haskell.org/haskell-platform/wiki/AddingPackages#PackageRequirem...
Well, the policy can be changed if necessary (not that I'm proposing that here). While packages may need to be present to build an application in the platform, they don't necessarily need to be exposed as part of the platform.
That's true for binary packaging systems. It would not be true for source based ones e.g. gentoo, freebsd ports, macports or indeed someone starting with just ghc and using cabal to install the platform meta-package.
On the other hand, on those systems people would get all packages (libraries and programs) required by the Haskell platform, plus some additional ones. Wouldn't hurt too much, IMHO (allthough it feels a little bit wrong if the platform would contain programs that can't be built with only the platform). As I'm doing OpenBSD stuff, where things are a little bit different (we have a ports tree for building stuff from sources, *but* we also provide binary packages and recommend and expect ordinary users to use those): if OpenBSD would provide meta-packages (which it doesn't do yet), there would be a meta-package `haskell-platform' which run- and lib-dependencies on all the nice stuff required by the platform, and at the same time build-depends on stuff only required for *building* the platform. But I readlly don't know what would happen wrt shared libraries (which are supported now in GHC on most archs, AFAIK). Ciao, Kili

On Mon, Nov 08, 2010 at 08:46:35PM +0100, Matthias Kilian wrote:
it feels a little bit wrong if the platform would contain programs that can't be built with only the platform).
I don't feel strongly about this, but that's basically my feeling. While it may not be technically impossible, it feels wrong. Thanks Ian

On Mon, Nov 8, 2010 at 7:46 PM, Matthias Kilian
Hi,
http://trac.haskell.org/haskell-platform/wiki/AddingPackages#PackageRequirem...
Well, the policy can be changed if necessary (not that I'm proposing
here). While packages may need to be present to build an application in the platform, they don't necessarily need to be exposed as part of the
On Mon, Nov 08, 2010 at 06:58:52PM +0000, Duncan Coutts wrote: that platform.
That's true for binary packaging systems. It would not be true for source based ones e.g. gentoo, freebsd ports, macports or indeed someone starting with just ghc and using cabal to install the platform meta-package.
On the other hand, on those systems people would get all packages (libraries and programs) required by the Haskell platform, plus some additional ones. Wouldn't hurt too much, IMHO (allthough it feels a little bit wrong if the platform would contain programs that can't be built with only the platform).
I think this was exactly the situation rationale 8.5 means to avoid. I do think it would be technically possible to make this work, but only by greatly increasing the maintenance cost for HP (I underestimated this cost originally). It's probably not a good trade-off. If cabal supported something like run-time-specified repos it would be much simpler. John

On 9 November 2010 10:40, John Lato
On the other hand, on those systems people would get all packages (libraries and programs) required by the Haskell platform, plus some additional ones. Wouldn't hurt too much, IMHO (allthough it feels a little bit wrong if the platform would contain programs that can't be built with only the platform).
I think this was exactly the situation rationale 8.5 means to avoid. I do think it would be technically possible to make this work, but only by greatly increasing the maintenance cost for HP (I underestimated this cost originally). It's probably not a good trade-off.
If cabal supported something like run-time-specified repos it would be much simpler.
What sort of thing are you thinking of here? Duncan

On Tue, Nov 9, 2010 at 5:12 PM, Duncan Coutts
On 9 November 2010 10:40, John Lato
wrote: On the other hand, on those systems people would get all packages (libraries and programs) required by the Haskell platform, plus some additional ones. Wouldn't hurt too much, IMHO (allthough it feels a little bit wrong if the platform would contain programs that can't be built with only the platform).
I think this was exactly the situation rationale 8.5 means to avoid. I do think it would be technically possible to make this work, but only by greatly increasing the maintenance cost for HP (I underestimated this cost originally). It's probably not a good trade-off.
If cabal supported something like run-time-specified repos it would be much simpler.
What sort of thing are you thinking of here?
If, in addition to the global and user package stores, you could specify alternate package stores. Then it would be possible to do e.g. cabal install --use-package-store=./buildlibs to create a package store at ./buildlibs (if it doesn't exist) and install a library there. Then later commands could do cabal install --extra-package-store=./buildlibs to check for packages in that extra location in addition to the default global and user locations. This would certainly enable building non-blessed libs as part of the HP and differentiating from the normal blessed packages. It might be useful for other reasons too. I'm not saying it's a good idea for HP, just that it would be technically possible. Were some other people already talking about this in this thread? Is this already implemented? John

On 10 November 2010 10:31, John Lato
If cabal supported something like run-time-specified repos it would be much simpler.
What sort of thing are you thinking of here?
If, in addition to the global and user package stores, you could specify alternate package stores. Then it would be possible to do e.g. cabal install --use-package-store=./buildlibs to create a package store at ./buildlibs (if it doesn't exist) and install a library there. Then later commands could do cabal install --extra-package-store=./buildlibs to check for packages in that extra location in addition to the default global and user locations.
Yes, this is already implemented. There is a single --package-db flag for both purposes.
This would certainly enable building non-blessed libs as part of the HP and differentiating from the normal blessed packages. It might be useful for other reasons too. I'm not saying it's a good idea for HP, just that it would be technically possible. Were some other people already talking about this in this thread?
The issue is with distro packages. We encourage distros to package individual cabal packages as individual native distro packages. Many distros have developed automated tools that perform this translation. If we have "hidden" or non-installed package dependencies then it complicates this model. Distros would then need to change their tools to allow bundling multiple cabal libs into a single program package. Duncan
participants (4)
-
Duncan Coutts
-
Ian Lynagh
-
John Lato
-
Matthias Kilian