I'm currently rewriting large parts of GHCup, which will enable to add new compilers and tools to it without changing the code. Instead we support an "install specification" in the GHCup metadata (such as executing a Makefile with specific arguments or copying files): haskell/ghcup-hs#1315
The invariant that must be satisfied is as follows: anything that GHCup installs into ~/.ghcup/ must be immutable. The tool must not during runtime add any new files there. This is true for GHC, because the package database it ships with is separate from the "user package database" that gets used when you e.g. cabal install things.
I guess MicroHS needs to support reading from two package databases to make this work as well.
I'm currently rewriting large parts of GHCup, which will enable to add new compilers and tools to it without changing the code. Instead we support an "install specification" in the GHCup metadata (such as executing a Makefile with specific arguments or copying files): haskell/ghcup-hs#1315
The invariant that must be satisfied is as follows: anything that GHCup installs into
~/.ghcup/must be immutable. The tool must not during runtime add any new files there. This is true for GHC, because the package database it ships with is separate from the "user package database" that gets used when you e.g. cabal install things.I guess MicroHS needs to support reading from two package databases to make this work as well.