
#16055: libffi build logic is quite spread out -------------------------------------+------------------------------------- Reporter: mpickering | Owner: (none) Type: task | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.6.3 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- The rules for building libffi are in `Rules.Libffi` and at a first glance they just use the normal `Make` builder in order to build the project. However, if one looks carefully, you actually need to run `make install` so the normal `Make` builder has an argument appended in `Settings.Builders.Make`. The problem here is that the two modules are completely unrelated to each other. In order to discover this I had to wonder why the build was failing to copy a file and then by chance guess that it wasn't running `make install`. I think grepped for `"install"` and managed to find this additional rule. Is there a way to move this logic into one place? I considered two possibilities but it didn't seem to be "how things are done". 1. Modify the `Make` builder to take an additional argument which indicates whether to add the `install` flag. 2. Move the override of `Make` for libffi into `Rules.Libffi` and then import it into `Settings.Builders.Make`. This seems better but you still not entirely obvious what is going on. Do the hadrian experts have any opinion on this? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/16055 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler