Observable change of execution order was introduced in #946 if two matches write same file #1000
Description
It is a bit difficult to summarize the problem in the description, but I have provided a reproducer below. The problem is that hakyll
does not produce the correct build results upon the first invocation, but if we force the rebuild of the problematic files (by using site watch
and changing something in the file), then hakyll produces the correct result.
The bug seems to have been introduced between 4.15.1.1
which does not exhibit the bug, and 4.16.1.0
which exhibits the bug. I will try to do a git bisect
to identify the commit which is responsible.
Related Issue: haskellfoundation/error-message-index#459
How to reproduce
- Checkout the error-message-index at commit
fa5adac344b3c6659ed2af89488ef5bdf404a9d9
which useshakyll ^>= 4.16.1.0
in its cabal file. - Build the site by going into the
message-index
subdirectory and executingcabal run -- site watch
- Open the site in the browser and look at the error message for GHCup-00110: The generated HTML page is missing the header, title and footer sections.
- Change the preamble of the file
messages/GHCup-00110/index.md
, for example by changing the title or removing one of the other fields. - Hakyll should now rebuild the page: The generated error page for the error GHCup-00110 now has the correct header, title and footer.
When comparing two versions it is important to clean the _cache
directory between runs. It is otherwise possible that the faulty version reuses the cache from a run of the correct version, and you can no longer observe the error.