Building GHC on Mac stops
Kazu Yamamoto ( 山本和彦 )
kazu at iij.ad.jp
Thu Aug 15 23:12:47 CEST 2013
Simon,
We have a ticket for this:
http://ghc.haskell.org/trac/ghc/ticket/8102
We guessed the source of this bug as described in this ticket but I
don't know how to write GNU Makefile.
--Kazu
> Austin
>
> This looks like a make-system bug, based on a cursory read. Worth a ticket? Do you know enough about the build system to fix it? It's clearly annoying!
>
> Simon Marlow and/or Ian Lynagh may well be able to help
>
> Simon
>
> -----Original Message-----
> From: ghc-devs [mailto:ghc-devs-bounces at haskell.org] On Behalf Of Kazu Yamamoto
> Sent: 06 August 2013 13:00
> To: ghc-devs at haskell.org
> Subject: Re: Building GHC on Mac stops
>
> Hi Nicolas,
>
> My guess is here: libraries/integer-gmp/configure generates "gmp.h".
> Building mkGmpDerivedConstants starts in parallel. Since "configure"
> takes time, "mkGmpDerivedConstants" is build before "gmp.h" is
> created.
>
> How can we ensure that these two jobs are carried out sequentially?
>
> --Kazu
>
>> I never determined how to fix this. Here's the notes I developed:
>>
>> tl;dr For some reason, it seems gmp.h is not recognized as a dependency of
>> mkGmpDerivedConstants.o
>>
>> HTH
>>
>> -----
>>
>> If I run
>>
>> $ perl boot; ./configure; make -j4
>>
>> I tend to see a build failure. Immediately running make -j4 again succeeds.
>>
>> In the following snippet from the log,
>> FILE=libraries/integer-gmp/mkGmpDerivedConstants/mkGmpDerivedConstants.c
>>
>> {{{
>> "/usr/bin/gcc" -m64 -fno-stack-protector
>> -Ilibraries/integer-gmp/gmp
>> -Ilibraries/integer-gmp/mkGmpDerivedConstants/dist
>> -c FILE -o
>> libraries/integer-gmp/mkGmpDerivedConstants/dist/build/mkGmpDerivedConstants.o
>>
>> FILE:15:17: error: gmp.h: No such file or directory
>> FILE: In function ¡main¢:
>> FILE:68: error: ¡MP_INT¢ undeclared (first use in this function)
>> FILE:68: error: (Each undeclared identifier is reported only once
>> FILE:68: error: for each function it appears in.)
>> FILE:69: error: expected expression before ¡)¢ token
>> FILE:69: error: expected expression before ¡)¢ token
>> FILE:70: error: expected expression before ¡)¢ token
>> FILE:70: error: expected expression before ¡)¢ token
>> FILE:71: error: expected expression before ¡)¢ token
>> FILE:71: error: expected expression before ¡)¢ token
>> make[1]: ***
>> [libraries/integer-gmp/mkGmpDerivedConstants/dist/build/mkGmpDerivedConstants.o]
>> Error 1
>> make[1]: *** Waiting for unfinished jobs....
>> }}}
>>
>> Some 1677 lines later, I see the line
>>
>>> cp libraries/integer-gmp/gmp/gmpbuild/gmp.h libraries/integer-gmp/gmp/
>>
>> Which is I suppose why make -j4 succeeds the second time around.
>>
>> I also see
>>
>>> libraries/integer-gmp/mkGmpDerivedConstants/ghc.mk:20:
>> libraries/integer-gmp/mkGmpDerivedConstants/dist/build/.depend.c_asm: No
>> such file or directory
>>
>> many lines above.
>>
>> On Mon, Aug 5, 2013 at 9:26 PM, Kazu Yamamoto <kazu at iij.ad.jp> wrote:
>>
>>> Hi,
>>>
>>> I'm using GHC head (32bit) on Mac. Recently, building GHC head
>>> stops:
>>>
>>> ----
>>> % make maintainer-clean; perl boot; ./configure --prefix=/ghc-head; make
>>> -j3
>>> ranlib: file: .libs/libgmp.a(mp_clz_tab.o) has no symbols
>>> ranlib: file: .libs/libgmp.a(obprintf.o) has no symbols
>>> ranlib: file: .libs/libgmp.a(obvprintf.o) has no symbols
>>> ranlib: file: .libs/libgmp.a(obprntffuns.o) has no symbols
>>> ranlib: file: .libs/libgmp.a(repl-vsnprintf.o) has no symbols
>>> libtool: link: rm -fr .libs/libgmp.lax
>>> libtool: link: ( cd ".libs" && rm -f "libgmp.la" && cp -p "../libgmp.la" "
>>> libgmp.la" )
>>> cp libraries/integer-gmp/gmp/gmpbuild/gmp.h libraries/integer-gmp/gmp/
>>> cp libraries/integer-gmp/gmp/gmpbuild/.libs/libgmp.a
>>> libraries/integer-gmp/gmp/
>>> inplace/bin/mkdirhier libraries/integer-gmp/gmp/objs
>>> cd libraries/integer-gmp/gmp/objs && /usr/bin/ar x ../libgmp.a
>>> ranlib libraries/integer-gmp/gmp/libgmp.a
>>> ranlib: file: libraries/integer-gmp/gmp/libgmp.a(mp_clz_tab.o) has no
>>> symbols
>>> ranlib: file: libraries/integer-gmp/gmp/libgmp.a(obprintf.o) has no symbols
>>> ranlib: file: libraries/integer-gmp/gmp/libgmp.a(obvprintf.o) has no
>>> symbols
>>> ranlib: file: libraries/integer-gmp/gmp/libgmp.a(obprntffuns.o) has no
>>> symbols
>>> ranlib: file: libraries/integer-gmp/gmp/libgmp.a(repl-vsnprintf.o) has no
>>> symbols
>>> make: *** [all] Error 2
>>> %
>>> ----
>>>
>>> One more "make -j3" finishes the building. I'm sure that this does not
>>> happen before.
>>>
>>> Are there any guys who get this problem?
>>>
>>> --Kazu
>>>
>>> _______________________________________________
>>> ghc-devs mailing list
>>> ghc-devs at haskell.org
>>> http://www.haskell.org/mailman/listinfo/ghc-devs
>>>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs
More information about the ghc-devs
mailing list