Hi Viktor,

I created an issue for this: https://gitlab.haskell.org/ghc/ghc/-/issues/22741

You can share your insights there!

On 4/30/23 03:00, Viktor Dukhovni wrote:
For some time now I'd been unable to build GHC 9.6 from source. The
reason turned out to be that my hadrian command-line selected an
explicit build directory that was not an immediate child of the source
directory (default it seems is "_build").

With the source tree under "$HOME/dev/ghc/", the hardrian command

$ hadrian/build -V -V -o"$HOME/dev/buildghc" --docs=no-sphinx binary-dist-dir

after building stage0, and running "configure" in libraries/base,
reports an error finding HsFFI.h:

Reading parameters from $HOME/dev/buildghc/stage1/libraries/base/build/base.buildinfo
/usr/bin/cc '-fuse-ld=gold' /tmp/2303653-4.c -o /tmp/2303653-5
'-D__GLASGOW_HASKELL__=906' \
'-Dlinux_BUILD_OS=1' \
'-Dx86_64_BUILD_ARCH=1' \
'-Dlinux_HOST_OS=1' \
'-Dx86_64_HOST_ARCH=1' \
-I$HOME/dev/buildghc/stage1/libraries/base/build/autogen \
-I$HOME/dev/buildghc/stage1/libraries/base/build/include \
-Ilibraries/base/include \
-Ilibraries/base \
-I/usr/include \
-I$HOME/dev/buildghc/stage1/inplace/../../..//libraries/ghc-bignum/include/ \
-I$HOME/dev/buildghc/stage1/libraries/ghc-bignum/build/include/ \
-I$HOME/dev/buildghc/stage1/inplace/../../..//libraries/ghc-bignum/include \
-I$HOME/dev/buildghc/stage1/libraries/ghc-bignum/build/include \
-I$HOME/dev/buildghc/stage1/inplace/../../..//rts/include \
-I$HOME/dev/buildghc/stage1/rts/build/include \
'-I$HOME/dev/buildghc/stage1/inplace/../../..//rts/@FFIIncludeDir@' \
'-I$HOME/dev/buildghc/stage1/rts/build/@FFIIncludeDir@' \
'-I$HOME/dev/buildghc/stage1/inplace/../../..//rts/@LibdwIncludeDir@' \
'-I$HOME/dev/buildghc/stage1/rts/build/@LibdwIncludeDir@' \
-L$HOME/dev/buildghc/stage1/inplace/../libraries/ghc-bignum/build \
-L$HOME/dev/buildghc/stage1/inplace/../libraries/ghc-prim/build \
-L$HOME/dev/buildghc/stage1/inplace/../rts/build -iquote \
$HOME/dev/ghc/libraries/base \
'-fuse-ld=gold'

There are two issues to note here:

- "hadrian" fails to substitute @FFIIncludeDir@ and @LibdwIncludeDir@.
This used to be handled by "configure", but the job of turning
"rts.cabal.in" into "rts.cabal" seems to have been reassigned to
"hadrian".

- With the build output directory a sibling rather than a child of
the source tree, the path to "rts/include" is not constructed
correctly. The path:

-I$HOME/dev/buildghc/stage1/inplace/../../..//rts/include

should have been:

-I$HOME/dev/buildghc/stage1/inplace/../../../ghc/rts/include

Switching to the default path proved to be a viable work-around, but
perhaps other choices should also work.

_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to