cabal-version: 3.4 Don't generate `Paths_pkgname.hs` when it's not in `autogen-modules`
- Dominant language
- Haskell
- Stars
- 1.7k
- Forks
- 750
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 28
Description
This is following explicit rule of "don't do anything you are not told to do".
- `cabal-version: 3.4.` only generate `Paths_pkgname.hs` if there is `autogen-modules: Paths_pkgname` (note, `other-modules` would not be enough!)
- `cabal-version: 3.0` or older: generate `Paths_pkgname.hs` always.
Along the same vein we could not generate `cabal_macros.h` (if there's no `*-extensions: CPP`), but that would be a silent breakage as recent GHCs provide some of definitions. So for `cabal_macros.h`, the best we can do is to not generate additional `TOOL_*` macros. #6442 is related
- `cabal-version: 3.4` and *recent GHC*: generate `cabal_macros.h` only if there **is** `*-extensions: CPP`
- `cabal-versions: 3.4` and *old GHC*:
- generate full `cabal_macros.h` if there's `*-extensions: CPP`
- generate only `TOOL_` and `CURRENT_` definitions if there **is not** `*-extensions: CPP`
- `cabal-version: 3.0` or older, and *recent GHC*: generate only `TOOL_` and `CURRENT_` definitions
- `cabal-version: 3.0` or older, and *old GHC*: generate full `cabal_macros.h`
Note: currently `Paths_pkgname.hs` uses CPP itself, but it can be changed.
We can generate Paths file suitable for specific compiler/dependencies version.
Discussion time: until 2020-02-01
Contributor guide
Assessment
This issue has not been assessed yet.