</listitem>
<listitem>
<para>Set your <literal>$CVSROOT</literal> environment variable to
- <literal>:pserver:anoncvs@glass.cse.ogi.edu:/cvs</literal></para>
+ <literal>:pserver:anoncvs@cvs.haskell.org:/cvs</literal></para>
<para>If you set <literal>$CVSROOT</literal> in a shell script, be sure not to
have any trailing spaces on that line, otherwise CVS will respond with
a perplexing message like
Perl version 5 at least is required. GHC has been known to
tickle bugs in Perl, so if you find that Perl crashes when
running GHC try updating (or downgrading) your Perl
- installation. Versions of Perl that we use and are known to
- be fairly stable are 5.005 and 5.6.1.</para>
+ installation. Versions of Perl before 5.6 have been known to have
+ various bugs tickled by GHC, so the configure script
+ will look for version 5.6 or later.</para>
<para>For Win32 platforms, you should use the binary
supplied in the InstallShield (copy it to
<listitem>
<para>Touch the generated configuration files, just to make
sure they don't get replaced during the build:</para>
-<screen>$ touch <filename><replaceable>H</replaceable></filename>/ghc/includes/{ghcautoconf.h,DerivedConstants.h.GHCConstants.h.mkDerivedConstants.c,mkDerivedConstantsHdr,mkDerivedConstants.o,mkGHCConstants,mkGHCConstants.o}</screen>
+<screen>$ cd <filename><replaceable>H</replaceable></filename>/ghc/includes
+$ touch ghcautoconf.h DerivedConstants.h GHCConstants.h mkDerivedConstants.c
+$ touch mkDerivedConstantsHdr mkDerivedConstants.o mkGHCConstants mkGHCConstants.o</screen>
+
+ <para>Note: it has been reported that these files still get
+ overwritten during the next stage. We have installed a fix
+ for this in GHC 6.4.2, but if you are building a version
+ before that you need to watch out for these files getting
+ overwritte by the <literal>Makefile</literal> in
+ <literal>ghc/includes</literal>. If your system supports
+ it, you might be able to prevent it by making them
+ immutable:</para>
+<screen>$ chflags uchg ghc/includes/{ghcautoconf.h,DerivedConstants.h,GHCConstants.h}</screen>
</listitem>
<listitem>
<para><command>ssh</command> comes with both Cygwin and MSYS.
(Cygwin note: you need to ask for package <command>openssh</command> (not ssh)
in the Cygwin list of packages; or use the <command>ghc-depends</command>
-package -- see <xref linkend="install-cygwin">Cygwin installation instructions</xref>.)</para>
+package -- see <xref linkend="install-cygwin"/>.)</para>
<para>There are several strange things about <command>ssh</command> on Windows that you need to know.
<itemizedlist>
<sect2><title>A Windows build log using Cygwin</title>
-Here is a complete, from-scratch, log of all you need to build GHC using
+<para>Here is a complete, from-scratch, log of all you need to build GHC using
Cygwin, kindly provided by Claus Reinke. It does not discuss alternative
-choices, but it gives a single path that works.
-<programlisting>
-
-- Install some editor (vim, emacs, whatever)
+choices, but it gives a single path that works.</para>
+<programlisting>- Install some editor (vim, emacs, whatever)
- Install cygwin (http://www.cygwin.com)
; i used 1.5.16-1, installed in c:\cygwin
; http://www.haskell.org//pipermail/cvs-all/
- mkdir c:/fptools; cd c:/fptools
; (or whereever you want your cvs tree to be)
- - export CVSROOT=:pserver:anoncvs@glass.cse.ogi.edu:/cvs
+ - export CVSROOT=:pserver:anoncvs@cvs.haskell.org:/cvs
- cvs login
; pw: cvs
- cvs checkout fpconfig
- cvs checkout ghc hslibs libraries
- Build ghc, using cygwin and mingw, targetting mingw
- - export PATH=/cygdrive/c/ghc/ghc-6.4.1/tools:$PATH
+ - export PATH=/cygdrive/c/ghc/ghc-6.4.1:$PATH
; for haddock, alex, happy (*)
- export PATH=/cygdrive/c/mingw/bin:$PATH
; without, we pick up some cygwin tools at best!
; we use cygwin, but build for windows
- cp mk/build.mk.sample mk/build.mk
- in mk/build.mk:
+ add line: SplitObjs = NO
+ (MSYS seems slow when there are zillions of object files)
uncomment line: BuildFlavour = perf
+ (or BuildFlavour = devel, if you are doing development)
add line: BIN_DIST=1
- add line: SplitObjs = NO
- make 2>&1 | tee make.log
; always useful to have a log around
- chmod +x ../distrib/prep-bin-dist-mingw
; if you're happy with the script's contents (*)
- ../distrib/prep-bin-dist-mingw
- ; then tar up, unpack where wanted, and enjoy
-</programlisting>
+ ; then tar up, unpack where wanted, and enjoy</programlisting>
</sect2>
</sect1>