Opened 10 months ago

Last modified 7 months ago

#15779 new task

Follow-ups to D5169

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

Description

Simonmar points out that there are a few follow-up tasks after Phab:D5169:

  1. We should build these at installation time, so they don't have to go into the binary distribution (the same goes for the vanilla way libHSfoo.o files)
  2. This also needs to be done in Hadrian

Change History (7)

comment:1 Changed 10 months ago by simonmar

Milestone: 8.8.1
Priority: normalhighest

At least point (2) is a blocker for 8.8.1, and we ought to do (1) too.

comment:2 Changed 10 months ago by alpmestan

Cc: alpmestan added

comment:3 Changed 10 months ago by watashi

Differential Rev(s): Phab:D5270

comment:4 Changed 10 months ago by watashi

For (2), I put up Phab:D5270 to build profiling LibGhci in Hadrian as well.

For (1), is LibGhci only used by statically linked ghci? So only windows distribution is affected by this?

comment:5 Changed 10 months ago by simonmar

For (1), these would be used by ghc -fextenral-interpreter -prof, and also any statically-linked binary that uses the GHC API.

comment:6 Changed 8 months ago by watashi

https://gitlab.haskell.org/ghc/ghc/commit/9ea8dcea3e5ba96808ef91028e0efde9d31f7272 is now merged. We will build p_o in hadrain as well, but this only happens when dynamicGhcPrograms = return False. This behavior is different from make. Given that libghci can be used by external interpreter, shall we still build it even when dynamicGhcPrograms is true?

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

In 9ea8dcea/ghc:

Hadrian: merge sections in profiling _p.a to .p_o for ghci

This is the hadrain version of {D5169}

* We build squashed .o and .p_o for ghci when `dynamicGhcPrograms` is
`False`
* We no longer build them for rts as ghci never loads it

we need https://github.com/haskell/cabal/pull/5592 for cabal to copy
the built `.p_o` file.

Test Plan:
```
$ grep dynamicGhc hadrian/UserSettings.hs
  , dynamicGhcPrograms = return False
$ touch ...
$ hadrian/build.sh --flavour=user -j --digest-or
$ find _build/stage1/libraries/ -name 'HS*-*.*o' | wc
     62      62    3664
```

```
$ grep -C3 dynamicGhc hadrian/UserSettings.hs
userFlavour :: Flavour
userFlavour = performanceFlavour
  { name = "user"
  , dynamicGhcPrograms = return False
  }
$ hadrian/build.sh -j --flavour=user test --verbose
Unexpected results from:
TEST="T3807 T9208 T9293 annth_make ghci057 haddock.Cabal haddock.base
haddock.compiler"

SUMMARY for test run started at Wed Dec  5 17:45:39 2018 PST
 0:03:16 spent to go through
    6708 total tests, which gave rise to
   26015 test cases, of which
   19290 were skipped

      29 had missing libraries
    6600 expected passes
      88 expected failures

       3 caused framework failures
       0 caused framework warnings
       1 unexpected passes
       7 unexpected failures
       0 unexpected stat failures
$ find _build -name 'HSbase*.*o'
_build/stage1/lib/x86_64-linux-ghc-8.7.20181204/base-4.12.0.0/HSbase-4.1
2.0.0.o
_build/stage1/lib/x86_64-linux-ghc-8.7.20181204/base-4.12.0.0/HSbase-4.1
2.0.0.p_o
_build/stage1/libraries/base/build/HSbase-4.12.0.0.o
_build/stage1/libraries/base/build/HSbase-4.12.0.0.p_o
```

Reviewers: bgamari, simonmar, snowleopard

Reviewed By: snowleopard

Subscribers: alpmestan, rwbarton, carter

GHC Trac Issues: #15779

Differential Revision: https://phabricator.haskell.org/D5270
Note: See TracTickets for help on using tickets.