Specifying dependencies on Haskell code

Simon Marlow marlowsd at gmail.com
Fri May 9 08:00:11 EDT 2008

David Roundy wrote:
> On Sun, May 04, 2008 at 05:20:54PM +0100, Ian Lynagh wrote:
>> On Sat, May 03, 2008 at 11:30:44AM -0700, David Roundy wrote:
>>> On Sat, May 03, 2008 at 02:51:33PM +0100, Ian Lynagh wrote:
>>>> According to http://peak.telecommunity.com/DevCenter/PythonEggs, with
>>>> python eggs you do things like
>>>>     from pkg_resources import require
>>>>     require("FooBar>=1.2")
>>>> From what I can tell, python eggs aren't a build system either, but
>>>> rather a binary package format.
>> To install a trac plugin you download a tarball and do something like
>> python setup.py bdist_egg to create the .egg file, which you can then put
>> in the appropriate place. I think in general you can also do python
>> setup.py install to have it installed as a python library.
>> I know virtually nothing about eggs, and even less about gems, but I am
>> under the impression that they aim to solve the same problem as Cabal.
> Maybe the problem is that noone seems to know what problem cabal is
> supposed to be solving.  What problem is that? Some say it's a
> configuration/build system.  Others say it's a packaging system.  I think
> it's the latter.

Does it matter?  It's fine for a system to not fit entirely into one of the 
predefined boxes that you know about (e.g. is ZFS a file system or a volume 
manager?).  Cabal solves a specific problem, which is:

   it allows a package to be built from source, and installed, on
   a system with only a Haskell compiler (and Cabal).

the last part is important for people on Windows who don't want to install 
Cygwin or MSYS just to build Haskell packages.

Now, we discovered that by adding bits here and there we could solve other 
problems too: e.g. Cabal also builds programs.  But the above statement was 
originally the main reason for Cabal's existence.


More information about the Libraries mailing list