Improve GHC's ghc package environment lookup logic
Documentation for package enviroments which describes the current lookup logic: https://downloads.haskell.org/\~ghc/latest/docs/html/users_guide/packages.html\#package-environments
There's two things I'd like to improve:
- Define a special magic "null" environment, which instructs GHC to ignore any package environment files.
To this end, I propose to use the name
- (i.e. a single dash), as that is more portable than using the empty string for environment variables. In other words:
-package-envflag which has higher priority overrides it)
would prevent GHC from interpreting any package environment files.
- Provide a way to disambiguate environment names (i.e. those that are looked up in
$HOME/.ghc/arch-os-version/environments/name) and environment files arguments.
Currently, if you say
GHC_ENVIRONMENT=test then a local file
test would shadow the environment named
test which would result in rather confusing errors. Instead I suggest to have package-env identifiers be interpreted as "names" by default, and only if they look like relative or absolute paths (i.e.
/home/foo/...) be interpreted as file locations (relative to $CWD).