I'm a bit confused about how a dependency on a package affects including it in Stackage LTS; specifically, if
- package A requires package B, and
- package A works when package B is installed as an extra-dep on top of LTS-X.Y, but
- package B itself is not in LTS-X.Y,
does package A have to be excluded from LTS-X.Y, particularly if
- the only reason B is excluded is because of a test suite dependency, not a dependency in the library itself?
I'll copy/paste my answer on github
No, it doesn't have to be excluded. Here's why:
In this case, we can add B to the build plan and mark it under the
skipped-testssection in order to avoid pulling in its test suite dependencies. This is true of both LTS and nightly snapshots.(However, a preferable course of action would be to remedy B's dependency issue so that the test suite can be run.)
To further clarify, in response to @bergey's answer:
This is only true of packages explicitly included. Some packages are transitive dependencies, which are included implicitly, and are not necessarily held to such strict standards. (However, in the future we may eliminate the concept of implicit inclusion and instead include all packages explicitly.)
Exceptions can also be made so that a package may be included, even though its test suite or its benchmarks have incompatible dependency constraints with the snapsnot.
Of course the preferred way to go is to not need to make such exceptions, and we encourage all maintainers to keep all of their build targets up to date.
Finally, allow me to note that this question would probably be more well suited for the stackage mailing list, which is admittedly not well publicied or utilized.