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

GHC ghc-devs at haskell.org
Tue Feb 26 17:38:08 UTC 2019


#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>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list