Go to the first, previous, next, last section, table of contents.

Installing pre-supposed utilities

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.

Perl:
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 should be 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.
GNU C (`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...)
PVM version 3:
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.
`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).
Makeindex:
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.
Tgrind:
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.
Flex:
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'.
Yacc:
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:


Go to the first, previous, next, last section, table of contents.