Opened 9 months ago

Closed 9 months ago

#15197 closed bug (fixed)

Apparent missing dependency in ghc-heap

Reported by: bgamari Owned by:
Priority: highest Milestone: 8.6.1
Component: Compiler Version: 8.4.3
Keywords: Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: None/Unknown Test Case:
Blocked By: Blocking:
Related Tickets: Differential Rev(s): Phab:D4753
Wiki Page:

Description

The ghc-heap library appears to be missing a dependency from GHC.Exts.Heap.Closures to GHC.Exts.Heap.InfoTableProf. This causes the vanilla build to fail (in particular when building the profiled way):

“inplace/bin/ghc-stage1” -hisuf p_hi -osuf  p_o -hcsuf p_hc -static -prof -eventlog  -H32m -O -Wall      -this-unit-id ghc-heap-8.5 -hide-all-packages -i -ilibraries/ghc-heap/. -ilibraries/ghc-heap/dist-install/build -Ilibraries/ghc-heap/dist-install/build -ilibraries/ghc-heap/dist-install/build/./autogen -Ilibraries/ghc-heap/dist-install/build/./autogen -Ilibraries/ghc-heap/.    -optP-include -optPlibraries/ghc-heap/dist-install/build/./autogen/cabal_macros.h -package-id base-4.12.0.0 -package-id ghc-prim-0.5.3 -package-id rts -Wall -XHaskell2010 -O2  -no-user-package-db -rtsopts  -Wno-deprecated-flags     -Wnoncanonical-monad-instances  -odir libraries/ghc-heap/dist-install/build -hidir libraries/ghc-heap/dist-install/build -stubdir libraries/ghc-heap/dist-install/build    -c libraries/ghc-heap/./GHC/Exts/Heap/Closures.hs -o libraries/ghc-heap/dist-install/build/GHC/Exts/Heap/Closures.p_o -dyno libraries/ghc-heap/dist-install/build/GHC/Exts/Heap/Closures.dyn_olibraries/ghc-heap/GHC/Exts/Heap/Closures.hs:23:1: error:
   Could not find module ‘GHC.Exts.Heap.InfoTableProf’
   It is a member of the hidden package ‘ghc-heap-8.5’.
   You can run ‘:set -package ghc-heap’ to expose it.
   (Note: this unloads all the modules in the current scope.)
   Use -v to see a list of the files searched for.
  |
23 | import GHC.Exts.Heap.InfoTableProf
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Building the libraries/ghc-heap/dist-install/GHC/Exts/Heap/InfoTableProf.p_o manually allows the build to proceed.

Change History (4)

comment:1 Changed 9 months ago by bgamari

The problem is apparently that the import of InfoTableProf is guarded behind a #if defined(PROFILING):

#if defined(PROFILING)
import GHC.Exts.Heap.InfoTableProf
#else
import GHC.Exts.Heap.InfoTable
#endif

Looking at the GHC-generated dependency file I see the following,

libraries/ghc-heap/dist-install/build/GHC/Exts/Heap/Closures.p_o : libraries/ghc-heap/dist-install/build/GHC/Exts/Heap/InfoTable.p_hi

It looks to me like ghc -M isn't correctly accounting for ways when generating its dependency graph.

comment:2 Changed 9 months ago by bgamari

Differential Rev(s): Phab:D4753
Status: newpatch

comment:3 Changed 9 months ago by Ben Gamari <ben@…>

In 64fd0fac/ghc:

ghc-heap: Add dependency from GHC.Exts.Heap.Closures to InfoTableProf

`ghc -M` currently doesn't properly account for ways when generating
dependencies (#15197). This import ensures correct build-ordering between this
module and GHC.Exts.Heap.InfoTableProf. Otherwise the profiled build may fail as
described in #15197.

comment:4 Changed 9 months ago by bgamari

Resolution: fixed
Status: patchclosed
Note: See TracTickets for help on using tickets.