[Haskell-cafe] putting SOE 'on the library path'

Daniel Fischer daniel.is.fischer at web.de
Sat Mar 28 14:15:33 EDT 2009


Am Samstag 28 März 2009 18:46:39 schrieb Michael Mossey:
> I tried the -v, but I seem to have fixed my problem. It's working now. I
> don't know what I changed. Maybe I typed the paths wrong before. 
Anyway,
> it does seem to accept (on Windows) paths with backslashes and it
> accepts spaces in the path if you put quotes around it.
>
> I'm still interested, though, in how one "installs" packages or 
modules
> so they don't need to be on the path specified by -i. I notice there is
> a file called 'package.conf', which seems related to this.

Use Cabal.

a) module A.B.C should be in file A/B/C.hs, where A is a direct 
subdirectory of the top of your source-tree.

b) above your source tree, place the file packagename.cabal, where 
you tell Cabal the name of the package, its version number, licence, 
build depends, exposed modules and other stuff (read 
http://www.haskell.org/haskellwiki/How_to_write_a_Haskell_program 
and http://www.haskell.org/ghc/docs/latest/html/Cabal/authors.html for 
details) and a Setup.hs, which can often consist of the two lines

import Distribution.Simple
main = defaultMain

If you want to install a package written by somebody else, that should 
already be present in the bundle you got.

Then

runghc ./Setup.(l)hs configure

with the appropriate options, whether to allow dependencies to be 
satisfied from the user package database, whether to install per user 
or globally, install prefix, whether to build the library also for profiling, 
...

runghc ./Setup.hs build

optionally

runghc ./Setup.hs haddock

runghc ./Setup.hs install

That registers the package in the package database, and from then 
on, it will be automatically found by ghc --make.

If you have the cabal executable, it's even easier, just

cabal install packagename

if it's somebody else's package, that automatically takes care of its 
(Haskell) dependencies, downloads and installs them if necessary;

or simply

cabal install

in the appropriate directory if it's a package you have just written.




More information about the Haskell-Cafe mailing list