Here are the gory details about some utility programs you may need;
perl
and gcc
are the only important ones. (PVM is important
if you're going for Parallel Haskell.) The configure
script will tell you if you are missing something.
You have to have Perl to proceed! Perl is a language quite good for doing shell-scripty tasks that involve lots of text processing. It is pretty easy to install.
Perl 5 is required. For Win32 platforms, we strongly suggest you pick
up a port of Perl 5 for cygwin32
, as the common Hip/ActiveWare port
of Perl is not Cool Enough for our purposes.
Perl should be put somewhere so that it can be invoked by the #!
script-invoking mechanism. (I believe /usr/bin/perl
is preferred;
we use /usr/local/bin/perl
at Glasgow.) The full pathname should
be less than 32 characters long.
gcc
):
Versions 2.7.2.x, 2.8.1 and egcs 1.1.2 are known to work. Use other versions at your own risk!
If your GCC dies with ``internal error'' on some GHC source file,
please let us know, so we can report it and get things improved.
(Exception: on iX86
boxes---you may need to fiddle with GHC's
-monly-N-regs
option; see the User's Guide)
xargs
on Solaris2:The GHC libraries are put together with something like:
find bunch-of-dirs -name '*.o' -print | xargs ar q ...
Unfortunately the Solaris xargs
(the shell-script equivalent
of map
) only ``bites off'' the .o
files a few at a
time---with near-infinite rebuilding of the symbol table in
the .a
file.
The best solution is to install a sane xargs
from the GNU
findutils distribution. You can unpack, build, and install the GNU
version in the time the Solaris xargs
mangles just one GHC
library.
GNU Autoconf is needed if you intend to build from the CVS sources, it is not needed if you just intend to build a standard source distribution.
Autoconf builds the configure
script from configure.in
and
aclocal.m4
. If you modify either of these files, you'll need
Autoconf to rebuild configure
.
sed
You need a working sed
if you are going to build from sources. The
build-configuration stuff needs it. GNU sed version 2.0.4 is no good!
It has a bug in it that is tickled by the build-configuration. 2.0.5
is ok. Others are probably ok too (assuming we don't create too
elaborate configure scripts..)
One fptools
project is worth a quick note at this point, because it
is useful for all the others: glafp-utils
contains several utilities
which aren't particularly Glasgow-ish, but Occasionally Indispensable.
Like lndir
for creating symbolic link trees.
PVM is the Parallel Virtual Machine on which Parallel Haskell programs run. (You only need this if you plan to run Parallel Haskell. Concurent Haskell, which runs concurrent threads on a uniprocessor doesn't need it.) Underneath PVM, you can have (for example) a network of workstations (slow) or a multiprocessor box (faster).
The current version of PVM is 3.3.11; we use 3.3.7. It is readily
available on the net; I think I got it from research.att.com
, in
netlib
.
A PVM installation is slightly quirky, but easy to do. Just follow
the Readme
instructions.
bash
:
Sadly, the gr2ps
script, used to convert ``parallelism profiles''
to PostScript, is written in Bash (GNU's Bourne Again shell).
This bug will be fixed (someday).
The following additional tools are required if you want to format the
documentation that comes with the fptools
projects:
All our documentation is written in SGML, using the LinuxDoc DTD that comes with the SGML-Tools, which is the most shrink-wrapped SGML suite that we could find. Should unpack and build painlessly on most architectures, and you can use it to generate HTML, Info, LaTeX (and hence DVI and Postscript), Groff, and plain text output from any LinuxDoc source file (including this manual). Sources are available from The SGML-Tools Web Page
A decent TeX distribution is required if you want to produce printable documentation. We recomment teTeX, which includes just about everything you need.
This is a quite-a-bit-better-than-Lex lexer. Used to build a couple
of utilities in glafp-utils
. Depending on your operating system,
the supplied lex
may or may not work; you should get the GNU
version.