Skip to content

Latest commit

 

History

History
70 lines (55 loc) · 1.55 KB

HACKING.md

File metadata and controls

70 lines (55 loc) · 1.55 KB

Updo Hacking

Package Groups

During the cabal solving step, cabal would fail to solve for dependencies for packages in a particular order. The grouping of packages preserves this.

To mirror package groups from project-dhall/pkgs/*.dhall to project-cabal/pkgs/*.config use make, either for pkgs.config that imports all pkgs/*.config or for a single package group.

$ make project-cabal/pkgs.config
$ cat project-cabal/pkgs.config
import: project-cabal/pkgs/shims.config
...
import: project-cabal/pkgs/tools.config

When project-dhall/pkgs-upgrade-todo.dhall is:

[ "./jobs/runner/" ]

Then the single jobs.config package group as generated is:

$ make project-cabal/pkgs/jobs.config
$ cat project-cabal/pkgs/jobs.config
if impl(ghc <= 8.10.7)
  packages:
      ./jobs/core/
    , ./jobs/runner/
else
  packages:
      ./jobs/core/

-- TODO for impl(ghc >= 9.2.5)
-- ./jobs/runner/

To split a group of packages into a dhall record of {pkgs, done, todo}:

$ ./updo/project-dhall/pkgs-upgrade-partition.hs ./project-dhall/pkgs/jobs.dhall
{ pkgs = [ "./jobs/core/", "./jobs/runner/" ]
, done = [ "./jobs/core/" ]
, todo = [ "./jobs/runner/" ]
}

GHC Upgrade Hacking

During a GHC version uprade, start by putting all packages into pkgs-upgrade-todo.dhall and progressively take one or a few packages out at at time and rerun the make targets to build the project you want to use.

To sort all the packages.

$ cd project-dhall
$ ./pkgs-sorted.hs
[ "./admin-client/"
, "./aeson-shim/"
...
, "./docs/"
, "./testing/"
]