
#7806: Dynamic linking and libffi ----------------------------------+----------------------------------------- Reporter: kazu-yamamoto | Owner: Type: bug | Status: new Priority: normal | Component: Build System Version: 7.7 | Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: Installing GHC failed | Blockedby: Blocking: | Related: ----------------------------------+----------------------------------------- After dynamic linking became the default, building/installing GHC on FreeBSD and Mac fails due to libffi. I don't see any problems on Linux. = FreeBSD without system libffi = GHC can be build: {{{ % make maintainer-clean % perl boot % ./configure --prefix=/ghc-head \ --with-iconv-includes=/usr/local/include \ --with-iconv-libraries=/usr/local/lib \ --with-gmp-includes=/usr/local/include \ --with-gmp-libraries=/usr/local/lib \ --with-gcc=/usr/local/bin/gcc47 \ --with-gcc-4.2=/usr/local/bin/gcc47 % gmake -j10 }}} But installation fails: {{{ % gmake install Installing library in /ghc-head/lib/ghc-7.7.20130323/haskell2010-1.1.1.0 "/ghc-head/lib/ghc-7.7.20130323/bin/ghc-pkg" --force --global-package-db "/ghc-head/lib/ghc-7.7.20130323/package.conf.d" update rts/package.conf.install Shared object "libffi.so.6" not found, required by "libHSrts- ghc7.7.20130323.so" gmake[1]: *** [install_packages] Error 1 gmake: *** [install] Error 2 }}} = FreeBSD with system libffi = The following procedure has no problems: {{{ % make maintainer-clean % perl boot % ./configure --prefix=/ghc-head \ --with-iconv-includes=/usr/local/include \ --with-iconv-libraries=/usr/local/lib \ --with-gmp-includes=/usr/local/include \ --with-gmp-libraries=/usr/local/lib \ --with-gcc=/usr/local/bin/gcc47 \ --with-gcc-4.2=/usr/local/bin/gcc47 --with-system-libffi \ --with-ffi-includes=/usr/local/include \ --with-ffi-libraries=/usr/local/lib % gmake -j10 % gmake install }}} = Mac without system libffi = GHC can be build: {{{ % make maintainer-clean % perl boot % ./configure --prefix=/ghc-head % make -j6 }}} But installation fails: {{{ % make install Installing library in /ghc-head/lib/ghc-7.7.20130323/haskell2010-1.1.1.0 "/ghc-head/lib/ghc-7.7.20130323/bin/ghc-pkg" --force --global-package-db "/ghc-head/lib/ghc-7.7.20130323/package.conf.d" update rts/package.conf.install dyld: Library not loaded: @loader_path/../terminfo-0.3.2.5/libHSterminfo-0.3.2.5-ghc7.7.20130323.dylib Referenced from: /ghc-head/lib/ghc-7.7.20130323/bin/ghc-pkg Reason: image not found make[1]: *** [install_packages] Trace/BPT trap: 5 make: *** [install] Error 2 }}} = Mac with system libffi = If I do: {{{ % make maintainer-clean % perl boot % ./configure --prefix=/ghc-head \ --with-system-libffi \ --with-ffi-includes=/usr/include/ffi \ --with-ffi-libraries=/usr/lib % make -j6 }}} hsc2hs cannot find necessary .h files. {{{ "inplace/bin/hsc2hs" '--cc=/usr/bin/gcc' '--ld=/usr/bin/gcc' --cross-safe --cflag=-m64 --cflag=-fno-stack-protector --cflag=-m64 --lflag=-m64 --cflag=-D__GLASGOW_HASKELL__=707 --cflag=-Dx86_64_HOST_ARCH=1 --cflag=-Ddarwin_HOST_OS=1 '--cflag=-m64' '--cflag=-fno-stack-protector' ' --cflag=-Icompiler/../rts/dist/build' '--cflag=-Icompiler/stage2' '-- cflag=-Icompiler/.' '--cflag=-Icompiler/parser' '--cflag=-Icompiler/utils' '--cflag=-DGHCI' '-- cflag=-I/Users/kazu/work/ghc/libraries/process/include' '-- cflag=-I/Users/kazu/work/ghc/libraries/directory/include' '-- cflag=-I/Users/kazu/work/ghc/libraries/unix/include' '-- cflag=-I/Users/kazu/work/ghc/libraries/time/include' '-- cflag=-I/Users/kazu/work/ghc/libraries/containers/include' '-- cflag=-I/Users/kazu/work/ghc/libraries/bytestring/include' '-- cflag=-I/Users/kazu/work/ghc/libraries/array/include' '-- cflag=-I/Users/kazu/work/ghc/libraries/base/include' '-- cflag=-I/Users/kazu/work/ghc/rts/dist/build' '-- cflag=-I/Users/kazu/work/ghc/includes' '-- cflag=-I/Users/kazu/work/ghc/includes/dist-derivedconstants/header' '-- lflag=-m64' '--lflag=-L/Users/kazu/work/ghc/libraries/transformers/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/template-haskell /dist-install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/hpc/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/hoopl/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/bin-package-db /dist-install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/binary /dist-install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/Cabal/Cabal /dist-install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/process /dist-install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/pretty /dist-install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/directory /dist-install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/unix/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/time/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/old-locale/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/filepath/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/containers/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/bytestring/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/deepseq/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/array/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/base/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/integer-gmp/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/libraries/ghc-prim/dist- install/build' '--lflag=-L/Users/kazu/work/ghc/rts/dist/build' '-- lflag=-ldl' '--lflag=-liconv' '--lflag=-lm' '--lflag=-ldl' '--lflag=-lffi' --cflag=-Icompiler/stage2/build/autogen --cflag=-include --cflag=compiler/stage2/build/autogen/cabal_macros.h compiler/ghci/LibFFI.hsc -o compiler/stage2/build/LibFFI.hs LibFFI.hsc:9:17: error: ffi.h: No such file or directory LibFFI.hsc: In function ‘main’: LibFFI.hsc:42: error: ‘ffi_cif’ undeclared (first use in this function) LibFFI.hsc:42: error: (Each undeclared identifier is reported only once LibFFI.hsc:42: error: for each function it appears in.) LibFFI.hsc:82: error: ‘ffi_status’ undeclared (first use in this function) LibFFI.hsc:82: error: expected expression before ‘int’ LibFFI.hsc:82: error: expected ‘)’ before numeric constant LibFFI.hsc:82: error: expected ‘)’ before numeric constant LibFFI.hsc:83: error: ‘ffi_abi’ undeclared (first use in this function) LibFFI.hsc:83: error: expected expression before ‘int’ LibFFI.hsc:83: error: expected ‘)’ before numeric constant LibFFI.hsc:83: error: expected ‘)’ before numeric constant LibFFI.hsc:99: error: ‘FFI_OK’ undeclared (first use in this function) LibFFI.hsc:106: error: ‘FFI_DEFAULT_ABI’ undeclared (first use in this function) compiling compiler/stage2/build/LibFFI_hsc_make.c failed (exit code 1) command was: /usr/bin/gcc -c compiler/stage2/build/LibFFI_hsc_make.c -o compiler/stage2/build/LibFFI_hsc_make.o -m64 -fno-stack-protector -I/Users/kazu/work/ghc/includes -m64 -fno-stack-protector -m64 -D__GLASGOW_HASKELL__=707 -Dx86_64_HOST_ARCH=1 -Ddarwin_HOST_OS=1 -m64 -fno-stack-protector -Icompiler/../rts/dist/build -Icompiler/stage2 -Icompiler/. -Icompiler/parser -Icompiler/utils -DGHCI -I/Users/kazu/work/ghc/libraries/process/include -I/Users/kazu/work/ghc/libraries/directory/include -I/Users/kazu/work/ghc/libraries/unix/include -I/Users/kazu/work/ghc/libraries/time/include -I/Users/kazu/work/ghc/libraries/containers/include -I/Users/kazu/work/ghc/libraries/bytestring/include -I/Users/kazu/work/ghc/libraries/array/include -I/Users/kazu/work/ghc/libraries/base/include -I/Users/kazu/work/ghc/rts/dist/build -I/Users/kazu/work/ghc/includes -I/Users/kazu/work/ghc/includes/dist-derivedconstants/header -Icompiler/stage2/build/autogen -include compiler/stage2/build/autogen/cabal_macros.h -I/Users/kazu/work/ghc/inplace/lib/include/ make[1]: *** [compiler/stage2/build/LibFFI.hs] Error 1 make: *** [all] Error 2 }}} -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7806 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler