haskell98 package not linked by default in 7.0.1 (was: Re: making 7.01-pre)

Simon Marlow marlowsd at gmail.com
Mon Nov 1 06:06:01 EDT 2010


On 30/10/2010 16:52, David Fox wrote:
> On Sat, Oct 30, 2010 at 4:43 AM, Serge D. Mechveliani<mechvel at botik.ru>  wrote:
>> Dear GHC developers,
>>
>> I am testing this fresh  ghc-7.0.0.20101028
>> on  Debian Linux, i386-family.
>> Making it from source by  ghc-6.12.3  is all right.
>> Then, making it from source by itself reports
>> (here I abbreviate the messages by inserting `...')
>>
>> ---------------------------------------------------------------------
>> + test -f mk/config.mk.old
>> + cp -p mk/config.mk mk/config.mk.old
>> ...
>> ...
>> "inplace/bin/mkdirhier" utils/ghc-cabal/dist/build/tmp//.
>> "inplace/bin/mkdirhier" bootstrapping/.
>> "/home/mechvel/ghc/7.01pre/inst1/bin/ghc" -H32m -O --make
>>   utils/ghc-cabal/ghc-cabal.hs -o utils/ghc-cabal/dist/build/tmp/ghc-cabal
>> ...
>> ...
>> "rm" -f compiler/stage1/ghc_boot_platform.h
>> Creating compiler/stage1/ghc_boot_platform.h...
>> Done.
>> "/usr/bin/gcc"  -fno-stack-protector  -DTABLES_NEXT_TO_CODE -Iincludes
>>   -Irts  -DGEN_HASKELL  -c includes/mkDerivedConstants.c -o
>> includes/dist-ghcconstants/build/mkDerivedConstants.o
>> ...
>> ...
>> ...
>> utils/genprimopcode/dist/build/Lexer.o: In function `s2yT_info':
>> (.text+0x1e1d): undefined reference to
>>   `__stginit_arrayzm0zi3zi0zi2_DataziArray_'
>> ...
>> ...
>> utils/genprimopcode/dist/build/Parser.o: In function `s4pK_info':
>> (.text+0x5691): undefined reference to
>> `__stginit_arrayzm0zi3zi0zi2_DataziArray_'
>> collect2: ld returned 1 exit status
>> make[1]: *** [utils/genprimopcode/dist/build/tmp/genprimopcode] Error 1
>> make: *** [all] Error 2
>> ---------------------------------------------------------------------
>>
>> Why cannot it make itself?

genprimopcode now needs -package array to build.  We'll fix this in the 
build system but it raises an interesting point that we probably haven't 
publicised much.

Previously we linked the haskell98 package by default, which also caused 
its dependencies (include array) to also be linked, but in 7.0.1 we 
don't link haskell98 by default, only base.

If you're using --make (which is now the default in 7.0.1), you won't 
notice any difference, because all package dependencies are 
automatically linked, so this only makes a differences in "one-shot" 
mode where you compile each module to .o files first and then link by 
saying

   ghc Main.o Foo.o Bar.o -o prog

So if you're doing this, and the program has dependencies on modules not 
in base, then you need to list them explicitly, e.g.

   ghc -package haskell98 Main.o Foo.o Bar.o -o prog

This is part of moving from Haskell 98 to Haskell 2010 as our default 
base language.

Cheers,
	Simon


More information about the Glasgow-haskell-users mailing list