-
Notifications
You must be signed in to change notification settings - Fork 409
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix bad interaction between promotion and incremental builds on OSX #460
Conversation
0aaf85c
to
9500f73
Compare
CI still fails:
With a different messages now though. Here's the other one:
|
And obviously, I can't reproduce it on my macbook... |
OSX is very frustrating:
|
ae88da6
to
484df4a
Compare
Ok, I made sure that we delete the destination file before copying to force a new inode to be allocated. I also removed some old stuff about updated files, which dates from when we were using timestamps for incremental compilation. |
484df4a
to
3e7938b
Compare
This issue is driving me mad |
3e7938b
to
bdba30b
Compare
Ok, so basically we just can't rely on |
bdba30b
to
3cbb52a
Compare
This is to avoid problems with incremental compilation on OSX. Fix #456
This dates from the time we were using timestamps for incremental compilation.
04dec24
to
143145b
Compare
@rgrinberg, i've made the minimal necessary changes to improve the behaviour and get the tests to pass. It's ready for review. I'll look later into the idea of systematically rehashing external files and using a faster hash implementation. |
match Hashtbl.find cache fn with | ||
| None -> () | ||
| Some file -> file.timestamp_checked <- false | ||
let remove fn = Hashtbl.remove cache fn |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would you mind explaining this change? Why was setting it to false a problem before?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- it was useless given that we were doing that for the targets of a rule that we always delete before running the rule anyway
- it didn't effectively removed entries from the on-disk cache
Previously we were only using mtime but it's not precise enough on OSX.