Changes between Version 1 and Version 2 of Building/KnownProblems


Ignore:
Timestamp:
Oct 27, 2006 5:07:05 PM (9 years ago)
Author:
alexey
Comment:

First import from xml docs

Legend:

Unmodified
Added
Removed
Modified
  • Building/KnownProblems

    v1 v2  
    11[[PageOutline]] 
     2 
     3= Known pitfalls in building Glasgow Haskell = 
     4 
     5WARNINGS about pitfalls and known "problems": 
     6 
     7 1. One difficulty that comes up from time to time is running out of space 
     8    in {{{TMPDIR}}}.  (It is impossible for the configuration stuff to 
     9    compensate for the vagaries of different sysadmin approaches to temp 
     10    space.) 
     11    [[br]] 
     12    The quickest way around it is {{{setenv TMPDIR /usr/tmp}}} or 
     13    even {{{setenv TMPDIR .}}} (or the equivalent incantation with your shell 
     14    of choice). 
     15    [[br]] 
     16    The best way around it is to say 
     17{{{ 
     18export TMPDIR=<dir> 
     19}}} 
     20    in your {{{build.mk}}} file.  Then GHC and the other 
     21    tools will use the appropriate directory in all cases. 
     22 2. In compiling some support-code bits, e.g., in {{{ghc/rts/gmp}}} and even 
     23    in {{{ghc/lib}}}, you may get a few C-compiler warnings.  We think these 
     24    are OK. 
     25 3.  When compiling via C, you'll sometimes get "warning: assignment from 
     26    incompatible pointer type" out of GCC.  Harmless. 
     27 4. Similarly, {{{ar}}}chiving warning messages like the following are not 
     28    a problem: 
     29{{{ 
     30ar: filename GlaIOMonad__1_2s.o truncated to GlaIOMonad_ 
     31ar: filename GlaIOMonad__2_2s.o truncated to GlaIOMonad_ 
     32... 
     33}}} 
     34 5. In compiling the compiler proper (in {{{compiler/}}}), you ''may'' 
     35    get an "Out of heap space" error message.  These can vary with the 
     36    vagaries of different systems, it seems.  The solution is simple: 
     37    * If you're compiling with GHC 4.00 or later, then the 
     38      ''maximum'' heap size must have been reached.  This 
     39      is somewhat unlikely, since the maximum is set to 64M by default. 
     40      Anyway, you can raise it with the 
     41      {{{-optCrts-M<size>}}} flag (add this flag to 
     42      {{{<module>_HC_OPTS}}} 
     43      {{{make}}} variable in the appropriate 
     44      {{{Makefile}}}). 
     45    * For GHC > 4.00, add a suitable {{{-H}}} flag to the {{{Makefile}}}, as 
     46      above. 
     47    * and try again: {{{make}}}.  (see <xref linkend="sec-suffix"/> for information about 
     48      {{{<module>_HC_OPTS}}}.) 
     49      [[br]] 
     50      Alternatively, just cut to the chase: 
     51{{{ 
     52$ cd ghc/compiler 
     53$ make EXTRA_HC_OPTS=-optCrts-M128M 
     54}}} 
     55 5. If you try to compile some Haskell, and you get errors from GCC about 
     56    lots of things from {{{/usr/include/math.h}}}, then your GCC was 
     57    mis-installed.  {{{fixincludes}}} wasn't run when it should've been. 
     58    [[br]] 
     59    As {{{fixincludes}}} is now automagically run as part of GCC installation, 
     60    this bug also suggests that you have an old GCC. 
     61 6. You ''may'' need to re-{{{ranlib}}} your libraries (on Sun4s). 
     62{{{ 
     63$ cd $(libdir)/ghc-x.xx/sparc-sun-sunos4 
     64$ foreach i ( `find . -name '*.a' -print` ) # or other-shell equiv... 
     65?    ranlib $i 
     66?    # or, on some machines: ar s $i 
     67? end 
     68}}} 
     69    We'd be interested to know if this is still necessary. 
     70 7. GHC's sources go through {{{cpp}}} before being compiled, and {{{cpp}}} varies 
     71    a bit from one Unix to another.  One particular gotcha is macro calls 
     72    like this: 
     73{{{ 
     74SLIT("Hello, world") 
     75}}} 
     76    Some {{{cpp}}}s treat the comma inside the string as separating two macro 
     77    arguments, so you get 
     78{{{ 
     79:731: macro `SLIT' used with too many (2) args 
     80}}} 
     81    Alas, {{{cpp}}} doesn't tell you the offending file! 
     82    [[br]] 
     83    Workaround: don't put weird things in string args to {{{cpp}}} macros. 
     84