dph related (?) build failure
Simon Marlow
marlowsd at gmail.com
Thu Jun 16 10:12:08 CEST 2011
On 16/06/2011 04:09, Manuel M T Chakravarty wrote:
> Simon Marlow:
>> On 15/06/2011 13:35, Manuel M T Chakravarty wrote:
>>> Ben mentioned this just this week. IIRC he meant to ask Ian for help with the build system issue but couldn't reproduce it anymore.
>>>
>>> I have been validating the tree many times in the last few days (with 3-4 cores) and I never saw this problem. How many threads are you using?
>>
>> I saw it on my laptop with 2 cores (using 3 threads), but I don't see it on our 8-core machine here where I normally use about 5 threads. Obviously it's non-deterministic, but it shouldn't be too hard to find the missing dependency - it looks like when building Data/Array/Parallel/PArray/PData.dyn_o we need the GHCi lib for HSdph-prim-par-0.5,
>
> Right, but 'Data/Array/Parallel/PArray/PData.dyn_o' is in the package 'dph-par', whose Cabal file includes
>
> Build-Depends: dph-prim-par
>
> Doesn't that imply that the build system will complete building
> 'dph-prim-par' (hence, also generating 'HSdph-prim-par-0.5') before
> starting to build 'dph-par' (and hence,
> 'Data/Array/Parallel/PArray/PData.dyn_o').
No, it doesn't work like that because we wouldn't get enough
parallelism. Dependencies are tracked at the module level, so the
dependency graph that make sees contains all modules of all libraries,
including GHC itself. The Build-depends line is used to ensure that we
configure packages in the correct order.
Unfortunately Template Haskell (and hence annotations) breaks this idea,
because TH needs the whole package compiled in order to load it. This
fragment from ghc.mk might be illuminating:
# Make sure we have all the GHCi libs by the time we've built
# ghc-stage2. DPH includes a bit of Template Haskell which needs the
# GHCI libs, and we don't have a better way to express that dependency.
#
GHCI_LIBS = $(foreach
lib,$(PACKAGES),$(libraries/$(lib)_dist-install_GHCI_LIB)) \
$(compiler_stage2_GHCI_LIB)
ifeq "$(UseArchivesForGhci)" "NO"
ghc/stage2/build/tmp/$(ghc_stage2_PROG) : $(GHCI_LIBS)
endif
So possibly something needs to be done for the dyn way here?
> I wonder why neither Ben nor I have been running into it. Could it
> be because we are on Mac OS X and it doesn't build dynamic libraries
> on that platform?
Weird, I thought we supported shared libraries on OS X? This from
mk/config.mk.in suggests that 32-bit OS X has shared libraries, but
64-bit doesn't:
# Do we support shared libs?
SharedLibsPlatformList = i386-unknown-linux x86_64-unknown-linux \
i386-unknown-freebsd x86_64-unknown-freebsd \
i386-unknown-openbsd x86_64-unknown-openbsd \
i386-unknown-mingw32 \
i386-apple-darwin powerpc-apple-darwin
which is very strange, I'm sure it used to work.
Cheers,
Simon
>
> Manuel
>
>
>>> Simon Marlow:
>>>> On 15/06/2011 10:06, Dimitrios Vytiniotis wrote:
>>>>> raries/dph/dph-par/. -optP-include -optPlibraries/dph/dph-par/dist-in stall/build/autogen/cabal_macros.h -package array-0.3.0.2 -package base- 4.3.1.0 -package dph-base-0.5 -package dph-prim-par-0.5 -package ghc-7.1 .20110614 -package ghc-prim-0.2.0.0 -package random-1.0.0.3 -package tem plate-haskell-2.5.0.0 -Odph -funbox-strict-fields -fcpr-off -fdph-this -package-name dph-par -XHaskell98 -XTy
pe
>> Fa
>>>> milies -XGADTs -XRankNTypes -X BangPatterns -XMagicHash -XUnboxedTuples -XTypeOperators -O2 -O -dcore-l int -fno-warn-deprecated-flags -no-user-package-conf -rtsopts -Wwarn -odir libraries/dph/dph-par/dist-install/build -hidir libraries/dph/dph- par/dist-install/build -stubdir libraries/dph/dph-par/dist-install/build -hisuf dyn_hi -osuf dyn_o -hcsuf dyn_hc -c libraries/dph/dph-par/../dp
>> h-common/Data/Array/Parallel/Lifted/Unboxed.hs -o libraries/dph/dph-par/ dist-install/build/Data/Array/Parallel/Lifted/Unboxed.dyn_o
>>>>> "inplace/bin/ghc-stage2.exe" -fPIC -dynamic -H32m -O -Wall -Werror -H64 m -O0 -package-name dph-par-0.5 -hide-all-packages -i -ilibraries/dph/dph-par/../dph-common -ilibraries/dph/dph-par/dist-install/build -ilibr aries/dph/dph-par/dist-install/build/autogen -Ilibraries/dph/dph-par/dis t-install/build -Ilibraries/dph/dph-par/dist-install/build/autogen -Ilib raries/dph/dph-par/. -optP-include -optPlibraries/dph/dph-par/dist-in
>>>> stall/build/autogen/cabal_macros.h -package array-0.3.0.2 -package base- 4.3.1.0 -package dph-base-0.5 -package dph-prim-par-0.5 -package ghc-7.1 .20110614 -package ghc-prim-0.2.0.0 -package random-1.0.0.3 -package tem plate-haskell-2.5.0.0 -Odph -funbox-strict-fields -fcpr-off -fdph-this -package-name dph-par -XHaskell98 -XTypeFamilies -XGADTs -XRankNTypes -X BangPatter
ns
>> -X
>>>> MagicHash -XUnboxedTuples -XTypeOperators -O2 -O -dcore-l int -fno-warn-deprecated-flags -no-user-package-conf -rtsopts -Wwarn -odir libraries/dph/dph-par/dist-install/build -hidir libraries/dph/dph- par/dist-install/build -stubdir libraries/dph/dph-par/dist-install/build -hisuf dyn_hi -osuf dyn_o -hcsuf dyn_hc -c libraries/dph/dph-par/../dp h-common/Data/Array/Parallel/PArray/PData.hs -o librar
ie
>> s/dp
>>>> h/dph-par/di st-install/build/Data/Array/Parallel/PArray/PData.dyn_o
>>>>> Loading package ghc-prim ... linking ... done.
>>>>> Loading package integer-gmp ... linking ... done.
>>>>> Loading package base ... linking ... done.
>>>>> Loading package array-0.3.0.2 ... linking ... done.
>>>>> Loading package containers-0.4.0.0 ... linking ... done.
>>>>> Loading package bytestring-0.9.1.10 ... linking ... done.
>>>>> Loading package Win32-2.2.0.1 ... linking ... done.
>>>>> Loading package filepath-1.2.0.0 ... linking ... done.
>>>>> Loading package old-locale-1.0.0.2 ... linking ... done.
>>>>> Loading package old-time-1.0.0.6 ... linking ... done.
>>>>> Loading package directory-1.1.0.0 ... linking ... done.
>>>>> Loading package pretty-1.0.2.0 ... linking ... done.
>>>>> Loading package process-1.0.1.4 ... linking ... done.
>>>>> Loading package Cabal-1.11.0 ... linking ... done.
>>>>> Loading package binary-0.5.0.2 ... linking ... done.
>>>>> Loading package bin-package-db-0.0.0.0 ... linking ... done.
>>>>> Loading package hoopl-3.8.7.0 ... linking ... done.
>>>>> Loading package hpc-0.5.0.6 ... linking ... done.
>>>>> Loading package template-haskell ... linking ... done.
>>>>> Loading package ghc-7.1.20110614 ... linking ... done.
>>>>> Loading package time-1.2.0.4 ... linking ... done.
>>>>> Loading package random-1.0.0.3 ... linking ... done.
>>>>> Loading package primitive-0.3.1 ... linking ... done.
>>>>> Loading package vector-0.7.0.1 ... linking ... done.
>>>>> Loading package dph-base-0.5 ... linking ... done.
>>>>> Loading package dph-prim-interface-0.5 ... linking ... done.
>>>>> Loading package dph-prim-seq-0.5 ... linking ... done.
>>>>> Loading package dph-prim-par-0.5 ...<command line>: can't load .so/.DLL for: HSdph-prim-par-0.5 (addDLL: could not load DLL)
>>>>> ghc-stage2.exe: HSdph-prim-par-0.5: The specified module could not be fo und.
>>>>> make[1]: *** [libraries/dph/dph-par/dist-install/build/Data/Array/Parall el/PArray/PData.dyn_o] Error 1
>>>>> make[1]: *** Waiting for unfinished jobs..
>>>>
>>>> I've also seen validate fail like this on Linux. Presumably it's a missing dependency somewhere in the build system for DPH. Ben, weren't you looking into this (or something like it) recently?
>>>>
>>>> Cheers,
>>>> Simon
>>>>
>>>> _______________________________________________
>>>> Cvs-ghc mailing list
>>>> Cvs-ghc at haskell.org
>>>> http://www.haskell.org/mailman/listinfo/cvs-ghc
>>>
>>
>
More information about the Cvs-ghc
mailing list