Skip to content

Increase parrelism in hadrian / make multi-repl work without building anything

Matthew Pickering requested to merge wip/inplace-final into master
  • There are now two different package databases per stage. An inplace package database contains .conf files which point directly into the build directories. The final package database contains .conf files which point into the installed locations. The inplace .conf files are created before any building happens and have fake ABI hash values. The final .conf files are created after a package finished building and contains the proper ABI has.

The motivation for this is to make the dependency structure more fine-grained when building modules. Now a module depends just depends directly on M.o from package p rather than the .conf file depend on the .conf file for package p. So when all of a modules direct dependencies have finished building we can start building it rather than waiting for the whole package to finish.

  • Multi-repl only builds generated dependencies now before starting the multi-repl. (Rather than building the whole project)
  • Normal repl only configures to find out the modules in a project, and then only builds the necessary libraries once a target is selected.
  • Fixes a linearisation issue caused by computing arguments to pass to cabal configure
  • Add some more packages to the multi-cradle (including some executables).
  • Introduce a stamp file for recording if we have built a package in a certain way. This used to be recorded indirectly via the .conf files, which was inaccurate as it didn't keep track of changes such as building .prof way or not.
Edited by Matthew Pickering

Merge request reports

Loading