Queue Sheet Hackage Build Failure
It takes some time for API documentation on Hackage to be built after
publishing a new package release. After the project releases
that I did today, I checked the Hackage pages and discovered that one of
them failed! queue-sheet-0.7.0.2
failed to build with a DependencyFailed
error.
Hackage provides a really nice build report for build failures. I immediately noticed that the build used GHC 8.10.2. My continuous integration tests test with the latest release of each supported major GHC version, so they test against GHC 8.10.7. I suspect that a difference in GHC boot library versions causes different library versions to be selected, and insufficient dependency constraints for some library causes the failure.
The build report conveniently provides a list of the versions of all dependencies that were used for the (failed) build. The versions of the transitive dependencies are not included in the list, but the versions for those libraries can be found in the build log.
aeson-2.0.3.0 | latest |
ansi-wl-pprint-0.6.9 | latest |
base-4.14.1.0 | boot |
bytestring-0.10.10.0 | boot |
directory-1.3.6.0 | boot |
filepath-1.4.2.1 | boot |
ginger-0.8.2.0 | |
optparse-applicative-0.17.0.0 | latest |
process-1.6.9.0 | boot |
scientific-0.3.7.0 | latest |
text-1.2.3.2 | boot |
transformers-0.5.6.2 | boot |
ttc-1.1.1.1 | latest |
vector-0.12.3.1 | latest |
yaml-0.11.8.0 | latest |
Boot libraries aside, the latest versions of all libraries are
selected, with the exception of ginger-0.8.2.0.
I am not sure why this particular version was selected. Versions
0.8.4.1
and later require older versions of
optparse-applicative
, but versions 0.8.3.0
and
0.8.4.0
are newer versions that have the exact same
constraints as the selected version, with no
optparse-applicative
dependency.
The aeson
dependency for ginger-0.8.2.0
does not have any version constraints, which allows it to be selected
along with aeson-2.0.3.0,
but that version of aeson
is not supported until ginger-0.10.4.0.
The issue is that old versions of ginger
have
insufficient dependency constraints. This issue can be fixed by creating
package revisions for
these versions. I created an issue and will
see what Tobias thinks.