<Para>This guide is in several parts:</para>
<itemizedlist>
-<listitem> Installing on Unix-a-likes (<Xref LinkEnd="sec-unix-a-likes">). </listitem>
-<listitem> Installing on Windows (<Xref LinkEnd="sec-install-windows">). </listitem>
-<listitem> The layout of installed files (<Xref LinkEnd="sec-install-files">).
+<listitem> <para> Installing on Unix-a-likes (<Xref LinkEnd="sec-unix-a-likes">). </para> </listitem>
+<listitem> <para> Installing on Windows (<Xref LinkEnd="sec-install-windows">). </para> </listitem>
+<listitem> <para> The layout of installed files (<Xref LinkEnd="sec-install-files">).
You don't need to know this to install GHC,
-but it's useful if you are changing the implementation. </listitem>
-<listitem> Installing or building the documentation (<Xref LinkEnd="building-docs">). </listitem>
+but it's useful if you are changing the implementation. </para> </listitem>
+<listitem> <para> Installing or building the documentation (<Xref LinkEnd="building-docs">). </para> </listitem>
</itemizedlist>
necessary privileges (or inclination) to properly install the tools
locally. Note that if you do decide to install the package `properly'
at a later date, you have to go through the installation steps that
-follows.
+follow.
</Para>
<Para>
<Para>
Getting the Glasgow Haskell Compiler (GHC) to run on Windows platforms can
be a bit of a trying experience. It should be much easier now than in the
-past, since all the software required to build and use GHC is included in
+past, since all the software required to use GHC is included in
the InstallShield.
</Para>
<Para>
-An installation of GHC requires about 70M of disk space (which can be
-reduced by choosing a “compact” installation).
+An installation of GHC requires about 140M of disk space.
To run GHC comfortably, your machine should have at least
64M of memory.
</Para>
<Sect2><Title>Installing GHC</Title>
<Para>
-Download the latest GHC distribution (ghc-4.08 InstallShield installer, 19M)
+Download the latest GHC distribution (ghc-5.02 InstallShield installer, 27M)
from <ULink
-URL="http://www.haskell.org/ghc/download.html">haskell.org</ULink>
-It is packaged up using an installer that should be familiar-looking to
-Windows users. The 4.08 InstallShield package comes with some Cygwin
-binaries, which unfortunately won't work with another Cygwin installation on
-the same machine, unless it uses exactly the same version of the Cygwin DLL
-(1.3.1 in this InstallShield).
+URL="http://www.haskell.org/ghc/download_ghc_502.html">haskell.org</ULink>.
</Para>
<Para>
-Note: The Cygwin support for long file names containing
-spaces is not 100%, so make sure that you install ghc in a directory
-that has no embedded spaces (i.e., resist the temptation to put it
-in <Filename>/Program Files/</Filename>!)
+When the installer has completed, make sure you add the location of the
+ghc <Filename>bin/</Filename> directory to your path, as directed in the
+final dialog of the installer. You need to do this in order to bring the
+various GHC binaries into scope.
</Para>
<Para>
-When the installer has completed, make sure you add the location of the
-ghc <Filename>bin/</Filename> directory to your path (e.g.
-<Filename>/ghc/ghc-4.08/bin</Filename>).
-You need to do this in order to bring the various GHC binaries into scope.
-Also, if the directory <Filename>C:/TEMP</Filename> doesn't already exist,
-you should create it.
+You can freely move the GHC tree once you've installed it just by copying
+the <Filename>ghc-x.yy</Filename> directory. You might want to do this in
+order to use GHC with tools that don't like spaces in paths (GHC is
+installed in <Filename>\Program Files\Glasgow Haskell
+Compiler</Filename> by default.
</Para>
<Para>
<Question>
<Para>
-I'm getting “permission denied” messages from <Command>rm</Command> or
+I'm getting “permission denied” messages from the <Command>rm</Command> or
<Command>mv</Command>.
</Para>
</Question>
</QandAEntry>
-<QandAEntry>
-
-<Question>
-<Para>
-I get errors when trying to build GHC 4.08 with GHC 4.05.
-</Para>
-</Question>
-
-<Answer> <Para> This seems to work better if you don't use
-<Option>-O</Option> in <Constant>GhcHcOpts</Constant>. It's a bug in 4.05,
-unfortunately. Anyway, better to install 4.08 binaries and use those.
-</Para> </Answer>
-
-</QandAEntry>
-
</QandASet>
</Sect2>
</Sect1>
-<Sect1 id="sec-install-files><Title>The layout of installed files</Title>
+<Sect1 id="sec-install-files"><Title>The layout of installed files</Title>
<para>
This section describes what files get installed where. You don't need to know it
<variablelist>
<varlistentry>
<term>Binary directory</term>
-<listitem> known as <Filename>$(bindir)</Filename>, holds executables that
+<listitem> <para> known as <Filename>$(bindir)</Filename>, holds executables that
the user is expected to invoke. Notably,
<Filename>ghc</Filename> and <Filename>ghci</FileName>. On Unix, this directory
is typically something like <Filename>/usr/local/bin</Filename>. On Windows,
however, this directory is always <Filename>$(libdir)/bin</Filename>.
+</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Library directory,</term>
-<listitem> known as <Filename>$(libdir)</Filename>, holds all the
+<listitem> <para> known as <Filename>$(libdir)</Filename>, holds all the
support files needed to run GHC. On Unix, this
-directory is usually something like <Filename>/usr/lib/ghc/ghc-5.02</Filename>.
+directory is usually something like <Filename>/usr/lib/ghc/ghc-5.02</Filename>. </para>
</listitem>
+</varlistentry>
</variablelist>
<para>
</para>
<itemizedlist>
<listitem>
+<para>
<Filename>$(libdir)</Filename> is passed to GHC using the <option>-B</option> flag.
On Unix (but not Windows), the installed <filename>ghc</filename> is just a one-line
shell script that invokes the real GHC, passing a suitable <option>-B</option> flag.
[All the user-supplied flags
follow, and a later <option>-B</option> flag overrides an earlier one, so a user-supplied
one wins.]
-
+</para>
</listitem>
<listitem>
-On Windows (but not Unix), if no <option>-B</option> flag is given, GHC uses a system
+<para> On Windows (but not Unix), if no <option>-B</option> flag is given, GHC uses a system
call to find the directory in which the running GHC executable lives, and derives
<Filename>$(libdir)</Filename> from that. [Unix lacks such a system call.]
+</para>
</listitem>
</itemizedlist>
<sect2> <title>Layout of the library directory</title>
-<para>
-The layout of the library directory is almost identical on Windows and Unix,
-as follows:
-layout:</para>
+<para>The layout of the library directory is almost identical on
+Windows and Unix, as follows: layout:</para>
+
<programlisting>
$(libdir)/
package.conf GHC package configuration
+ ghc-usage.txt Message displayed by ghc --help
bin/ [Win32 only] User-visible binaries
ghc.exe
ghci.bat
- extra-bin/ Support binaries
- unlit Remove literate markup
+ unlit Remove literate markup
- touch.exe [Win32 only]
- perl.exe [Win32 only]
- gcc.exe [Win32 only]
-
- ghc [Unix only]
-
- ghc-split Asm code splitter
- ghc-asm Asm code mangler
+ touchy.exe [Win32 only]
+ perl.exe [Win32 only]
+ gcc.exe [Win32 only]
+
+ ghc-x.xx GHC executable [Unix only]
+
+ ghc-split Asm code splitter
+ ghc-asm Asm code mangler
gcc-lib/ [Win32 only] Support files for gcc
specs gcc configuration
libmingw32.a Standard
..etc.. libraries
- include/*.h Include files
+ *.h Include files
imports/ GHC interface files
std/*.hi 'std' library
StgMacros.h GHC-specific
..etc... header files
- mingw/*.h Mingwin header files
+ mingw/*.h [Win32 only] Mingwin header files
libHSrts.a GHC library archives
libHSstd.a
<itemizedlist>
<listitem>
<para>On Win32, the <filename>$(libdir)/bin</filename> directory contains user-visible binaries;
-add it to you <filename>PATH</filename>. The <filename>ghci</filename> executable is a <filename>.bat</filename>
+add it to your <filename>PATH</filename>. The <filename>ghci</filename> executable is a <filename>.bat</filename>
file which invokes <filename>ghc</filename>. </para>
<para>The GHC executable is the Real Thing (no intervening
shell scripts or <filename>.bat</filename> files).
Reason: we sometimes invoke GHC with very long command lines,
-and <filename>.bat</filename> truncate them. [We assume people won't invoke ghci with very long
+and <filename>cmd.exe</filename> (which executes <filename>.bat</filename> files)
+truncates them. [We assume people won't invoke ghci with very long
command lines.]</para>
-<para>On Unix, the user-invokable <filename>ghc</filename> invokes <filename>$(libdir)/extra-bin/ghc</filename>,
+<para>On Unix, the user-invokable <filename>ghc</filename> invokes <filename>$(libdir)/ghc-<replaceable>version</replaceable></filename>,
passing a suitable <option>-B</option> flag.
</para>
</listitem>
-<listitem>
-<para> <filename>$(libdir)/extra-bin/</filename> contains support binaries. These
-are <emphasis>not</emphasis> expected to be on the user's <filename>PATH</filename>, but
-and are invoked directly by GHC. In the Makefile system, this directory is called
-<filename>$(libexecdir)</filename>, but <emphasis>you aren't free to change it</emphasis>. It must
-be <filename>$(libdir)/extra-bin/</filename>.
-</para>
-</listitem>
+ <listitem>
+ <para><filename>$(libdir)</filename> also contains support
+ binaries. These are <emphasis>not</emphasis> expected to be
+ on the user's <filename>PATH</filename>, but and are invoked
+ directly by GHC. In the Makefile system, this directory is
+ also called <filename>$(libexecdir)</filename>, but
+ <emphasis>you are not free to change it</emphasis>. It must
+ be the same as <filename>$(libdir)</filename>.</para>
+ </listitem>
<listitem>
-<para> We distribute <filename>gcc</filename> with the Win32 distribution of GHC, so that users
+<para>We distribute <filename>gcc</filename> with the Win32 distribution of GHC, so that users
don't need to install <filename>gcc</filename>, nor need to care about which version it is.
All <filename>gcc</filename>'s support files are kept in <filename>$(libdir)/gcc-lib/</filename>.
</para>
</listitem>
<listitem>
-<para> Similarly, we distribute <filename>perl</filename> and <filename>touch</filename>
+<para>Similarly, we distribute <filename>perl</filename> and a <filename>touch</filename>
+replacement (<filename>touchy.exe</filename>)
with the Win32 distribution of GHC. </para>
</listitem>
-<listitem> <para> The support programs <filename>ghc-split</filename> and <filename>ghc-asm</filename>
-are Perl scripts. The first line says <literal>#!/bin/perl</literal>; on Unix, the script is
-indeed invoked as a shell script, which invokes Perl; on Windows, GHC invokes
-<filename>$(libdir)/extra-bin/perl</filename>
-directly,
-which treats the <literal>#!/bin/perl</literal> as a comment. Reason: on Windows we want
-to invoke the Perl distributed with GHC, rather than assume some installed one.
-</para>
-</listitem>
-
-</itemizelist>
+ <listitem>
+ <para>The support programs <filename>ghc-split</filename>
+ and <filename>ghc-asm</filename> are Perl scripts. The
+ first line says <literal>#!/bin/perl</literal>; on Unix, the
+ script is indeed invoked as a shell script, which invokes
+ Perl; on Windows, GHC invokes
+ <filename>$(libdir)/perl.exe</filename> directly, which
+ treats the <literal>#!/bin/perl</literal> as a comment.
+ Reason: on Windows we want to invoke the Perl distributed
+ with GHC, rather than assume some installed one. </para>
+ </listitem>
+</itemizedlist>
</sect2>
<Sect1 id="building-docs">
<Title>Building the documentation</Title>
-<Para>
-We use the DocBook DTD, which is widely used. Most shrink-wrapped
+<Para>We use the DocBook DTD, which is widely used. Most shrink-wrapped
distributions seem to be broken in one way or another; thanks to
heroic efforts by Sven Panne and Manuel Chakravarty, we now support
most of them, plus properly installed versions.
</Para>
-<Para>
-Instructions on installing and configuring the DocBook tools follow.
+<Para>Instructions on installing and configuring the DocBook tools follow.
</Para>
<Sect2>
<Title>Installing the DocBook tools from RPMs</Title>
-<Para> If you're using a system that can handle RedHat RPM packages,
+<Para>If you're using a system that can handle RedHat RPM packages,
you can probably use the <ULink
URL="http://sourceware.cygnus.com/docbook-tools/">Cygnus DocBook
tools</ULink>, which is the most shrink-wrapped SGML suite that we
<Sect2>
<Title>Installing from binaries on Windows</Title>
-<Para>
-It's a good idea to use Norman Walsh's <ULink
+<Para>It's a good idea to use Norman Walsh's <ULink
URL="http://nwalsh.com/docbook/dsssl/doc/install.html">installation
notes</ULink> as a guide. You should get version 3.1 of DocBook, and note
that his file <Filename>test.sgm</Filename> won't work, as it needs version
<Sect3>
<Title>Jade</Title>
-<Para>
-Install <ULink URL="http://openjade.sourceforge.net/">OpenJade</ULink> (Windows binaries are available as well as sources). If you want DVI, PS, or PDF then install JadeTeX from the <Filename>dsssl</Filename>
+<Para>Install <ULink URL="http://openjade.sourceforge.net/">OpenJade</ULink> (Windows binaries are available as well as sources). If you want DVI, PS, or PDF then install JadeTeX from the <Filename>dsssl</Filename>
subdirectory. (If you get the error:
<Screen>
<Filename>../</Filename><Emphasis>filename</Emphasis>.)
</Para>
-<Para>
-Make links from <Filename>virtex</Filename> to <Filename>jadetex</Filename>
+<Para>Make links from <Filename>virtex</Filename> to <Filename>jadetex</Filename>
and <Filename>pdfvirtex</Filename> to <Filename>pdfjadetex</Filename>
(otherwise DVI, PostScript and PDF output will not work). Copy
<Filename>dsssl/*.{dtd,dsl}</Filename> and <Filename>catalog</Filename> to <Filename>/usr/[local/]lib/sgml</Filename>.
<Sect3>
<Title>DocBook and the DocBook stylesheets</Title>
-<Para>
-Get a Zip of <ULink
+<Para>Get a Zip of <ULink
URL="http://www.oasis-open.org/docbook/sgml/3.1/index.html">DocBook</ULink>
and install the contents in <Filename>/usr/[local/]/lib/sgml</Filename>.
</Para>
-<Para>
-Get the <ULink URL="http://nwalsh.com/docbook/dsssl/">DocBook
+<Para>Get the <ULink URL="http://nwalsh.com/docbook/dsssl/">DocBook
stylesheets</ULink> and install in
<Filename>/usr/[local/]lib/sgml/stylesheets</Filename> (thereby creating a
subdirectory docbook). For indexing, copy or link <Filename>collateindex.pl</Filename> from the DocBook stylesheets archive in <Filename>bin</Filename> into a directory on your <Constant>PATH</Constant>.
</Para>
-<Para>
-Download the <ULink
+<Para>Download the <ULink
URL="http://www.oasis-open.org/cover/ISOEnts.zip">ISO
entities</ULink> into <Filename>/usr/[local/]lib/sgml</Filename>.
</Para>
<Sect2>
<Title>Configuring the DocBook tools</Title>
-<Para>
-Once the DocBook tools are installed, the configure script will detect them and set up the build system accordingly. If you have a system that isn't supported, let us know, and we'll try to help.
+<Para>Once the DocBook tools are installed, the configure script will detect them and set up the build system accordingly. If you have a system that isn't supported, let us know, and we'll try to help.
</Para>
</Sect2>
<Sect2>
<Title>Remaining problems</Title>
-<Para>
-If you install from source, you'll get a pile of warnings of the form
+<Para>If you install from source, you'll get a pile of warnings of the form
<Screen>DTDDECL catalog entries are not supported</Screen>