Binary distributions produced from cross-compiled stage2 are broken
The binary distribution by a cross-compiled build (e.g. configure with
./configure --target=$cross_target) is broken out of the box.
After untarring and configuring the bindist,
make install fails due to missing files,
# make install make --no-print-directory -f ghc.mk install BINDIST=YES NO_INCLUDE_DEPS=YES ghc.mk:742: utils/ghctags/ghc.mk: No such file or directory ghc.mk:742: utils/check-api-annotations/ghc.mk: No such file or directory ghc.mk:742: utils/check-ppr/ghc.mk: No such file or directory make: *** No rule to make target 'utils/check-ppr/ghc.mk'. Stop. Makefile:51: recipe for target 'install' failed make: *** [install] Error 2
This can be worked around by,
$ mkdir utils/ghctags utils/check-ppr utils/check-api-annotations $ touch utils/hp2ps/dist/build/tmp/hp2ps \ utils/ghctags/ghc.mk \ utils/check-api-annotations/ghc.mk \ utils/check-ppr/ghc.mk
I believe the reason for this is that these are utilities which would typically be built by the stage2 compiler, which we obviously are unable to build.
There are a few options for fixing this,
- Produce a shell script throwing an error to sit in place of the unbuildable utilities
- Fix the build system to include the appropriate
ghc.mkfiles in the bindist, despite the utilities they build not being present
- Include the sources for the utilities in the bindist and teach
make installto build them