[GHC] #16055: libffi build logic is quite spread out
GHC
ghc-devs at haskell.org
Sat Dec 15 23:47:48 UTC 2018
#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
More information about the ghc-tickets
mailing list