Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in / Register
GHC
GHC
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 4,260
    • Issues 4,260
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
    • Iterations
  • Merge Requests 397
    • Merge Requests 397
  • Requirements
    • Requirements
    • List
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Security & Compliance
    • Security & Compliance
    • Dependency List
    • License Compliance
  • Operations
    • Operations
    • Incidents
    • Environments
  • Analytics
    • Analytics
    • CI / CD
    • Code Review
    • Insights
    • Issue
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Glasgow Haskell Compiler
  • GHCGHC
  • Issues
  • #16055

Closed
Open
Opened Dec 15, 2018 by Matthew Pickering@mpickeringDeveloper

libffi build logic is quite spread out

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?

Trac metadata
Trac field Value
Version 8.6.3
Type Task
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: ghc/ghc#16055