RE: Problem building GHC

On 13 July 2005 08:18, Dinko Tenev wrote:
On 7/13/05, John Skaller
wrote: I guess I'll have to switch to version 2.95.2 as suggested by the guide (I am currently using 3.3.5,)
I think you need more RAM. I had to buy a new computer to fix this problem.
Oh my, that hurts...quite an expensive piece of software, GHC ;) But this really explains a lot, because two identical builds of mine happened to die on different files - it never occurred to me GCC could run low on memory though...
How about more swap, provided I would let it run overnight?
You should be able to use the native code generator to build GHC, which will compile a lot faster and use less memory. The GHC binary it produces may be slightly slower, however (on x86). To do this, create a file mk/build.mk in your build tree, containing the line: SRC_HC_OPTS = -H32m -O -fasm Cheers, Simon

On 7/13/05, Simon Marlow
You should be able to use the native code generator to build GHC, which will compile a lot faster and use less memory. The GHC binary it produces may be slightly slower, however (on x86).
To do this, create a file mk/build.mk in your build tree, containing the line:
SRC_HC_OPTS = -H32m -O -fasm
Great, that almost did it - thanks. It also took replacing some hard-coded -fvia-C options scattered throughout /fptools/ghc/compiler/Makefile. I still have the feeling this wasn't exactly the right thing to do, but it did work, as far as compilation goes. Now I am stuck on building the libs - ar dies ignominiously trying to create libHSbase.a. The thing that fails: (echo Control/Concurrent_stub.o System/CPUTime_hsc.o System/Time_hsc.o Text/Regex/Posix_hsc.o ; /usr/bin/find Control/Arrow_split Control/Concurrent_split Control/Concurrent/Chan_split Control/Concurrent/MVar_split Control/Concurrent/QSem_split Control/Concurrent/QSemN_split Control/Concurrent/SampleVar_split Control/Exception_split Control/Monad_split Control/Monad/Fix_split Control/Monad/ST_split Control/Monad/ST/Lazy_split Control/Monad/ST/Strict_split Control/Parallel_split Control/Parallel/Strategies_split Data/Array_split Data/Array/Base_split Data/Array/Diff_split Data/Array/IArray_split Data/Array/IO_split Data/Array/IO/Internals_split Data/Array/MArray_split Data/Array/ST_split Data/Array/Storable_split Data/Array/Unboxed_split Data/Bits_split Data/Bool_split Data/Char_split Data/Complex_split Data/Dynamic_split Data/Either_split Data/Eq_split Data/FiniteMap_split Data/FunctorM_split Data/Generics_split Data/Generics/Aliases_split Data/Generics/Basics_split Data/Generics/Instances_split Data/Generics/Schemes_split Data/Generics/Text_split Data/Generics/Twins_split Data/Graph_split Data/HashTable_split Data/IORef_split Data/Int_split Data/IntMap_split Data/IntSet_split Data/Ix_split Data/List_split Data/Map_split Data/Maybe_split Data/Monoid_split Data/Ord_split Data/PackedString_split Data/Queue_split Data/Ratio_split Data/STRef_split Data/STRef/Lazy_split Data/STRef/Strict_split Data/Set_split Data/Tree_split Data/Tuple_split Data/Typeable_split Data/Unique_split Data/Version_split Data/Word_split Debug/Trace_split Foreign_split Foreign/C_split Foreign/C/Error_split Foreign/C/String_split Foreign/C/Types_split Foreign/Concurrent_split Foreign/ForeignPtr_split Foreign/Marshal_split Foreign/Marshal/Alloc_split Foreign/Marshal/Array_split Foreign/Marshal/Error_split Foreign/Marshal/Pool_split Foreign/Marshal/Utils_split Foreign/Ptr_split Foreign/StablePtr_split Foreign/Storable_split GHC/Arr_split GHC/Base_split GHC/Conc_split GHC/ConsoleHandler_split GHC/Dotnet_split GHC/Enum_split GHC/Err_split GHC/Exception_split GHC/Exts_split GHC/Float_split GHC/ForeignPtr_split GHC/Handle_split GHC/IO_split GHC/IOBase_split GHC/Int_split GHC/List_split GHC/Num_split GHC/PArr_split GHC/Pack_split GHC/PrimopWrappers_split GHC/Ptr_split GHC/Read_split GHC/Real_split GHC/ST_split GHC/STRef_split GHC/Show_split GHC/Stable_split GHC/Storable_split GHC/TopHandler_split GHC/Unicode_split GHC/Weak_split GHC/Word_split Numeric_split Prelude_split System/CPUTime_split System/Cmd_split System/Console/GetOpt_split System/Directory_split System/Directory/Internals_split System/Environment_split System/Exit_split System/IO_split System/IO/Error_split System/IO/Unsafe_split System/Info_split System/Locale_split System/Mem_split System/Mem/StableName_split System/Mem/Weak_split System/Posix/Internals_split System/Posix/Signals_split System/Posix/Types_split System/Process_split System/Process/Internals_split System/Random_split System/Time_split Text/Html_split Text/Html/BlockTable_split Text/ParserCombinators/ReadP_split Text/ParserCombinators/ReadPrec_split Text/PrettyPrint_split Text/PrettyPrint/HughesPJ_split Text/Printf_split Text/Read_split Text/Read/Lex_split Text/Regex_split Text/Regex/Posix_split Text/Show_split Text/Show/Functions_split -name '*.o' -print) | xargs /usr/bin/ar q libHSbase.a /usr/bin/ar: creating libHSbase.a xargs: /usr/bin/ar: terminated by signal 9 make[2]: *** [libHSbase.a] Error 125 make[2]: *** Deleting file `libHSbase.a' make[1]: *** [all] Error 1 make[1]: Leaving directory `/home/shinobi/build/fptools/libraries' make: *** [build] Error 1 It appears to die at the point of adding Data/Array/Base_split/Base__191.o, or shortly afterwards perhaps, for no apparent reason. I imagine it might help changing this a bit so that it added the files one dir at a time to reduce the load somewhat, but I can't find where it's done - could you give me a pointer? Or is there anything more sensible to do? Cheers, D. Tenev

It turns out, ar couldn't quite handle building the symbol table for the archive. I tried ar qS, then ranlib the archive, but ranlib turns out to be exactly the same kind of brittle crap... I am currently looking for more robust binutils - I'll appreciate any siggestions. Cheers, D. Tenev
participants (2)
-
Dinko Tenev
-
Simon Marlow