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

_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs

Reply via email to