Skip to main content

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.

Author

Travis Cardwell

Published

Tags
Related Blog Entries