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/" ]
}
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/"
]