
Somebody claiming to be Simon Marlow wrote:
On 17/01/13 14:08, Simon Marlow wrote: Ok, new wiki page is here:
http://hackage.haskell.org/trac/ghc/wiki/Building/CrossCompiling
This is my report on using these instructions to build for i486-pc-nto-qnx8.0.0 TL;DR: Needs one GHC patch and one base patch, has to use integer-simple, and make install still does not work. Otherwise works fine. Needs the patch to add QNX as a supported OS (first patch from http://www.haskell.org/pipermail/cvs-ghc/2012-December/079078.html) to even try to configure, which is expected. After applying that patch: ./configure --target=i486-pc-nto-qnx8.0.0 --prefix="${QNX_HOST}/usr" succeeds. Copied build.mk.sample to build.mk and added: Stage1Only = YES as instructed. Uncommented the "quick" build type. Type "make" and get: $ make + test -f mk/config.mk.old + cp -p mk/config.mk mk/config.mk.old touch -r mk/config.mk.old mk/config.mk + test -f mk/project.mk.old + cp -p mk/project.mk mk/project.mk.old touch -r mk/project.mk.old mk/project.mk + test -f compiler/ghc.cabal.old + cp -p compiler/ghc.cabal compiler/ghc.cabal.old touch -r compiler/ghc.cabal.old compiler/ghc.cabal ===--- building phase 0 make -r --no-print-directory -f ghc.mk phase=0 phase_0_builds libraries/hpc/ghc.mk:3: libraries/hpc/dist-boot/package-data.mk: No such file or directory libraries/Cabal/Cabal/ghc.mk:3: libraries/Cabal/Cabal/dist-boot/package-data.mk: No such file or directory libraries/binary/ghc.mk:3: libraries/binary/dist-boot/package-data.mk: No such file or directory libraries/bin-package-db/ghc.mk:3: libraries/bin-package-db/dist-boot/package-data.mk: No such file or directory libraries/hoopl/ghc.mk:3: libraries/hoopl/dist-boot/package-data.mk: No such file or directory libraries/transformers/ghc.mk:3: libraries/transformers/dist-boot/package-data.mk: No such file or directory compiler/ghc.mk:439: compiler/stage1/package-data.mk: No such file or directory utils/hsc2hs/ghc.mk:15: utils/hsc2hs/dist/package-data.mk: No such file or directory ghc/ghc.mk:109: ghc/stage1/package-data.mk: No such file or directory libraries/dph/ghc.mk:123: *** dph_th_deps(v): libraries/dph/dph-base_dist-install_GHCI_LIB not defined!. Stop. make: *** [all] Error 2 So, I have commented out the dph libraries from ./packages I think this is still expected behaviour. Should something about this possibility be added to the wiki page? The next thing to happen is I run into http://hackage.haskell.org/trac/ghc/ticket/7519, so I apply the patch from there and continue. building integer-gmp fails with: cd libraries/integer-gmp/gmp; (set -o igncr 2>/dev/null) && set -o igncr; export SHELLOPTS; \ PATH=`pwd`:$PATH; \ export PATH; \ cd gmpbuild && \ CC=/home/singpolyma/bbndk/host_10_0_9_404/linux/x86/usr/bin/i486-pc-nto-qnx8.0.0-gcc NM=/home/singpolyma/bbndk/host_10_0_9_404/linux/x86/usr/bin/i486-pc-nto-qnx8.0.0-nm AR=/usr/bin/ar /bin/sh configure \ --enable-shared=no \ --host=i386-unknown-linux --build=i386-unknown-linux checking build system type... i386-unknown-linux-gnu checking host system type... i386-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether to enable maintainer-specific portions of Makefiles... no checking ABI=32 checking whether /home/singpolyma/bbndk/host_10_0_9_404/linux/x86/usr/bin/i486-pc-nto-qnx8.0.0-gcc is gcc... yes checking compiler /home/singpolyma/bbndk/host_10_0_9_404/linux/x86/usr/bin/i486-pc-nto-qnx8.0.0-gcc -m32 -O2 -pedantic -fomit-frame-pointer ... no, program does not run checking compiler /home/singpolyma/bbndk/host_10_0_9_404/linux/x86/usr/bin/i486-pc-nto-qnx8.0.0-gcc -O2 -pedantic -fomit-frame-pointer ... no, program does not run configure: error: could not find a working compiler, see config.log for details make[1]: *** [libraries/integer-gmp/gmp/gmp.h] Error 1 make: *** [all] Error 2 I'm not sure why it does not get the target right, but I can work around this by adding the following to build.mk: INTEGER_LIBRARY=integer-simple So I do this and continue, which leads me to: make[1]: *** No rule to make target `libraries/integer-gmp/dist-install/build/GHC/Integer.hi', needed by `libraries/base/dist-install/build/GHC/Base.o'. Stop. make: *** [all] Error 2 Oh, it didn't switch. Hmm. cd libraries/base && make clean && cd - Then I get: libraries/base/GHC/Base.lhs:124:1: Bad interface file: /home/singpolyma/src/ghc-qnx-nto-i486/libraries/integer-simple/dist-install/build/GHC/Integer.hi Something is amiss; requested module integer-simple-0.1.1.0:GHC.Integer differs from name found in the interface file integer-simple:GHC.Integer make[1]: *** [libraries/base/dist-install/build/GHC/Base.o] Error 1 make: *** [all] Error 2 Okay, fine: make clean I didn't want to do that, because of how long this all takes, but I have done it. So I continue... and get the same thing again. cd libraries/integer-simple && make clean && cd - Same thing. What? I delete my entire GHC source repo and copy from a pristine copy. Apply the two patches and two additions to mk/build.mk from above. Comment out dph stuff from ./packages. Ok, trying again. Ah! Good! Now I get http://hackage.haskell.org/trac/ghc/ticket/7490, which is expected. So I just type make again to continue. Success! I type `make install` which results in: Installing library in /home/singpolyma/bbndk/host_10_0_9_404/linux/x86/usr/lib/ghc-7.7.20130118/transformers-0.3.0.0 "/home/singpolyma/bbndk/host_10_0_9_404/linux/x86/usr/lib/ghc-7.7.20130118/bin/ghc-pkg" --force --global-package-db "/home/singpolyma/bbndk/host_10_0_9_404/linux/x86/usr/lib/ghc-7.7.20130118/package.conf.d" update rts/package.conf.install /bin/sh: 1: /home/singpolyma/bbndk/host_10_0_9_404/linux/x86/usr/lib/ghc-7.7.20130118/bin/ghc-pkg: not found make[1]: *** [install_packages] Error 127 make: *** [install] Error 2 Which I have reported before. So, there it is. I will try with arm-unknown-nto-qnx8.0.0 (uses LLVM) next. -- Stephen Paul Weber, @singpolyma See http://singpolyma.net for how I prefer to be contacted edition right joseph