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,274
    • Issues 4,274
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
    • Iterations
  • Merge Requests 412
    • Merge Requests 412
  • 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
  • Merge Requests
  • !935

Open
Opened May 13, 2019 by John Ericson@Ericson2314Developer0 of 5 tasks completed0/5 tasks
  • Report abuse
Report abuse

Check out, review, and merge locally

Step 1. Fetch and check out the branch for this merge request

git fetch "https://gitlab.haskell.org/Ericson2314/ghc.git" "multi-package"
git checkout -b "Ericson2314/ghc-multi-package" FETCH_HEAD

Step 2. Review the changes locally

Step 3. Merge the branch and fix any conflicts that come up

git fetch origin
git checkout "master"
git merge --no-ff "Ericson2314/ghc-multi-package"

Step 4. Push the result of the merge to GitLab

git push origin "master"

Note that pushing to GitLab requires write access to this repository.

Tip: You can also checkout merge requests locally by following these guidelines.

WIP: Start multi-package support: make dflags and HPT per-package in HscEnv (step towards #10827)

  • Overview 31
  • Commits 2
  • Pipelines 62
  • Changes 38

The idea is to make the initial refactors so we can have multi-package ghci (and perhaps ghc --make too). That feature is just super useful. It also falls under the principle that units of code for humans (top level definitions, modules, components, packages...) should be completely independent of units of work for the tools---humans should be able to organize things without worrying about how the machines will cope.

Credit to Ken Micklas for doing this work and getting the ball rolling.

The first PR is pretty much mechanistic except for two parts:

  • Package imports now are resolved in other home package tables, though they don't yet filter those by name as they should

  • ghc --backpack uses this when setting up a new DynFlags, though it still uses the ExternalPackageTable when perhaps it shouldn't.

After this PR, I really want to do something like https://github.com/ghc-proposals/ghc-proposals/pull/266 but for HscEnv, so I have a better idea of which parts of the code base access which information. This will make it easier to refine the data structures, as there's some friction today (both with and without this change).

  • are either individually buildable or squashed
  • have commit messages which describe what they do (referring to Notes and tickets using #NNNN syntax when appropriate)
  • have added source comments describing your change. For larger changes you likely should add a Note and cross-reference it from the relevant places.
  • add a testcase to the testsuite.
  • replace this message with a description motivating your change

If you have any questions don't hesitate to open your merge request and inquire in a comment. If your patch isn't quite done yet please do add prefix your MR title with WIP:.

Edited Jun 06, 2020 by John Ericson
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
Reference: ghc/ghc!935
Source branch: multi-package