Re: #16368: Boot GHC's libffi installation path leaks into stage1 build

"GHC" <[email protected]>
Newsgroups gmane.comp.lang.haskell.glasgow.bugs
Message-ID <[email protected]>
#16368: Boot GHC's libffi installation path leaks into stage1 build
-------------------------------------+-------------------------------------
        Reporter:  sgraf             |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  ⊥
       Component:  Build System      |              Version:  8.6.3
  (Hadrian)                          |
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Description changed by sgraf:

Old description:

> Starting yesterday, I'm having problems building GHC from a `nix-shell
> --pure https://github.com/alpmestan/ghc.nix/archive/master.tar.gz`.
>
> Build comes to a halt after/while configuring the RTS, because it can't
> find libffi.h in a global nix store installation that I can't find
> anywhere in my `env`. That nix-store path certainly exists and has an
> installation of `libffi`, but without an include path (probably since
> recently, haven't had problems before).
>
> After some debugging, I figured out that this path leaks in through `ghc-
> cabal` crawling through the Package DB of the host GHC. These are the
> libraries it finds out about this way (dumped by inserting `putStrLn
> (unlines (forDeps Installed.includeDirs))` in line 388 of `utils/ghc-
> cabal/Main.hs`:
>
> {{{
> /nix/store/7874h075nf8yikvr47642xqrwqwyv99s-
> ghc-8.6.3/lib/ghc-8.6.3/base-4.12.0.0/include
> /nix/store/5c9pfgazxid22ik3smh8zi805cp1i03y-gmp-6.1.2-dev/include
> /nix/store/7874h075nf8yikvr47642xqrwqwyv99s-ghc-8.6.3/lib/ghc-8.6.3
> /integer-gmp-1.0.2.0/include
> /nix/store/7874h075nf8yikvr47642xqrwqwyv99s-
> ghc-8.6.3/lib/ghc-8.6.3/include
> /nix/store/karxq4hlfmfj0c3yk4wv5mfaz06p70k8-libffi-3.2.1/include
> }}}
>
> They are then passed on to `DEP_INCLUDE_DIRS_SINGLE_QUOTED` and wreak
> havoc from there.
>
> Which of these paths are vital? The `libffi` path at least seems to
> shadow the local tarballs for me. This concerns Hadrian and the Make-
> based build system.

New description:

 Starting yesterday, I'm having problems building GHC from a `nix-shell
 --pure https://github.com/alpmestan/ghc.nix/archive/master.tar.gz`.

 Build comes to a halt after/while configuring the RTS, because it can't
 find libffi.h in a global nix store installation that I can't find
 anywhere in my `env`. That nix-store path certainly exists and has an
 installation of `libffi`, but without an include path (probably since
 recently, haven't had problems before).

 After some debugging, I figured out that this path leaks in through `ghc-
 cabal` crawling through the Package DB of the host GHC. These are the
 libraries it finds out about this way (dumped by inserting `putStrLn
 (unlines (forDeps Installed.includeDirs))` in line 388 of `utils/ghc-
 cabal/Main.hs`:

 {{{
 /nix/store/7874h075nf8yikvr47642xqrwqwyv99s-
 ghc-8.6.3/lib/ghc-8.6.3/base-4.12.0.0/include
 /nix/store/5c9pfgazxid22ik3smh8zi805cp1i03y-gmp-6.1.2-dev/include
 /nix/store/7874h075nf8yikvr47642xqrwqwyv99s-ghc-8.6.3/lib/ghc-8.6.3
 /integer-gmp-1.0.2.0/include
 /nix/store/7874h075nf8yikvr47642xqrwqwyv99s-
 ghc-8.6.3/lib/ghc-8.6.3/include
 /nix/store/karxq4hlfmfj0c3yk4wv5mfaz06p70k8-libffi-3.2.1/include
 }}}

 They are then passed on to `DEP_INCLUDE_DIRS_SINGLE_QUOTED` and wreak
 havoc from there.

 Which of these paths are vital? The `libffi` path at least seems to shadow
 the local tarballs for me. This concerns Hadrian and the Make-based build
 system.

 For completeness, this is the error I'm eventually seeing:

 {{{
 FFI.hsc:9:10: fatal error: ffi.h: No such file or directory
 compilation terminated.
 compiling _build/stage0/libraries/ghci/build/GHCi/FFI_hsc_make.c failed
 (exit code 1)
 command was: /nix/store/8zfm4i1aw4c3l5n6ay311ds6l8vd9983-gcc-
 wrapper-7.4.0/bin/cc -c
 _build/stage0/libraries/ghci/build/GHCi/FFI_hsc_make.c -o
 _build/stage0/libraries/ghci/build/GHCi/FFI_hsc_make.o
 -I/nix/store/891h83mar65k138156v41kzryc9ij0v3-ghc-build-
 environment/include -I_build/generated
 -I_build/stage0/libraries/ghci/build
 -I/nix/store/891h83mar65k138156v41kzryc9ij0v3-ghc-build-
 environment/include -I/nix/store/7874h075nf8yikvr47642xqrwqwyv99s-
 ghc-8.6.3/lib/ghc-8.6.3/unix-2.7.2.2/include -I/nix/store
 /7874h075nf8yikvr47642xqrwqwyv99s-
 ghc-8.6.3/lib/ghc-8.6.3/time-1.8.0.2/include -I/nix/store
 /7874h075nf8yikvr47642xqrwqwyv99s-
 ghc-8.6.3/lib/ghc-8.6.3/bytestring-0.10.8.2/include -I/nix/store
 /7874h075nf8yikvr47642xqrwqwyv99s-
 ghc-8.6.3/lib/ghc-8.6.3/base-4.12.0.0/include -I/nix/store
 /5c9pfgazxid22ik3smh8zi805cp1i03y-gmp-6.1.2-dev/include -I/nix/store
 /7874h075nf8yikvr47642xqrwqwyv99s-ghc-8.6.3/lib/ghc-8.6.3/integer-
 gmp-1.0.2.0/include -I/nix/store/7874h075nf8yikvr47642xqrwqwyv99s-
 ghc-8.6.3/lib/ghc-8.6.3/include
 -I/nix/store/karxq4hlfmfj0c3yk4wv5mfaz06p70k8-libffi-3.2.1/include -Wall
 -Werror=unused-but-set-variable -Wno-error=inline -include
 _build/stage0/libraries/ghci/build/autogen/cabal_macros.h
 -Dx86_64_HOST_ARCH=1 -Dlinux_HOST_OS=1 -D__GLASGOW_HASKELL__=806
 }}}

--

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16368#comment:2>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.