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 the current version; GHC is Perl 4 friendly though. For
Win32 platforms, Perl 5 is recommended, we even 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
):The current version is 2.7.2.
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; ask if confused...)
EGCS (the Enhanced GNU Compiler Suite) may or may not work, we haven't tested it fully yet.
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.
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 used to build the configure
script from
configure.in
in a source distribution. If you modify configure.in
, you'll need autoconf
to regenerate configure
.
bash
(Parallel Haskell only):
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).
You won't need this unless you are re-making our documents. Makeindex normally comes with a TeX distribution, but if not, we can provide the latest and greatest.
This is required only if you remake lots of our documents and
you use the -t tgrind
option with lit2latex
(also literate
programming), to do ``fancy'' typesetting of your code. Unlikely.
This is a quite-a-bit-better-than-Lex lexer. Used in the
literate-programming stuff. You won't need it unless you're hacking
on some of our more obscure stuff. On our machines, the version in
/bin
doesn't work; you need the GNU version. Find out by saying
flex --version
(our current version is 2.5.3, but maybe earlier ones
will work). If it doesn't know about the --version
flag, it ain't
the right flex
.
If you mess with the Haskell parser, you'll need a Yacc that can cope.
The unbundled /usr/lang/yacc
is OK; the GNU bison
is OK;
Berkeley yacc, byacc
, is not OK.
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..)
Two fptools
projects are worth a quick note at this point, because
they are 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.
literate
contains the Glasgow-built tools for generating
documentation. (The unoriginal idea is to be able to generate latex
, info
,
and program code from a single source file.) To get anywhere you'll
need at least lit2pgm
, either from the literate
project, or
because it's already installed on your system.