Hmatrix on Mac OS X
These notes may be incomplete or even incorrect, but should point you in the right direction. The latest version of hmatrix considered here is 0.5.2.2.
Please update this page with anything you discover along the way.
Installing GHC using MacPorts
First, you will want to install GHC using MacPorts, not the standalone installers. No sure why? Assuming that you have uninstalled any other versions of ghc, type:
sudo port install ghc
This may take several hours to bootstrap on a slow machine.
The hmatrix package requires working versions of GSL, BLAS and LAPACK.
You can get GSL and BLAS from DarwinPorts:
sudo port install gsl
LAPACK, however, is already installed on MacOS X 10.4/10.5, namely in the vecLib (10.4) or Accelerate (10.5) frameworks. They appear to work fine with hmatrix, though I didn't test very much.
If you're using the 32-bit Haskell Platform and your MacPorts installation defaults to 64-bit binaries you want MacPorts to build universal binaries of gsl using:
sudo port install gsl +universal
or upgrade after an installation using:
sudo port upgrade --enforce-variants gsl +universal
otherwise you'll get the following error when you try to use hmatrix:
Loading package hmatrix-0.9.3.0 ... can't load .so/.DLL for: gsl (dlopen(/opt/local/lib/libgsl.dylib, 9): no suitable image found. Did find: /opt/local/lib/libgsl.dylib: mach-o, but wrong architecture)
darcs get http://perception.inf.um.es/~aruiz/darcs/hmatrix --partial
The following steps seem obsolete to me. -- Apfelmus
Next, edit hmatrix.cabal to refer to the appropriate versions of BLAS and LAPACK:
extra-libraries: gsl gslcblas LAPACK
you might also have to edit cc-options and ld-options to look in your ports directory:
cc-options: -O4 -I/opt/local/include ld-options: -L/opt/local/lib
To build and install the package, type:
runhaskell Setup.lhs configure runhaskell Setup.lhs build sudo runhaskell Setup.lhs install
To load hmatrix using GHCI, you need to add the directory containing the gsl shared library to your LD_LIBRARY_PATH:
On Mac OS X 10.4, the LAPACK implementation is contained in the vecLib framework. For interactive use, type
ghci -framework vecLib
To build an example program using GHC, type:
cd examples ghc --make -framework vecLib plot.hs
Plotting with gnuplot and Aquaterm
Install gnuplot using MacPorts:
sudo port install gnuplot
If Aquaterm fails to compile, upgrade to the latest version of XCode. Tell gnuplot what terminal to use:
You should now be able to build and run examples/plot.hs, and see three nicely anti-aliased plots. If you're using an xterm, you can also choose to leave GNUTERM unset to use gnuplot's built-in X11 support, which is uglier, but apparently allows rotation of 3D plots using the mouse.
With minor changes the instructions work for fink. (I have already had the ghc and ghc-bin packages) In short:
fink install gsl fink install atlas fink install darcs darcs get http://perception.inf.um.es/~aruiz/darcs/hmatrix --partial (fink instal gnuplot)
runhaskell Setup.lhs configure runhaskell Setup.lhs build su runhaskell Setup.lhs install exit cd examples export LD_LIBRARY_PATH=/sw/lib/ runhaskell tests OK, passed 100 tests. OK, passed 100 tests. etc.
Note that the latest version requires cabal 1.2 and the present fink version of ghc (6.6) has lower version. Nevertheless after installing cabal (which itself requires zlib and filepath) hmatrix installs without problems.