-
Notifications
You must be signed in to change notification settings - Fork 118
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
Rework skip/rebuild flags #436
Comments
One point is unclear. Say, we have a dependency chain Now I modify Will Not rebuilding |
We would not rebuild |
Thanks! A follow-up question. If we modify the above scenario so that |
Correct on the follow up - assuming |
I see, makes sense. This could probably lead to strange results and possibly failures, because the build action for |
Yep, and in fact the whole point of |
Merging #307: Imagine you want to temporarily skip building generated files, so you can manually tweak them. The way to do it should be to use the make mode skip flags, which Shake mirrors from make. Unfortunately, the flags are a bit weird, maybe
That would not rebuild any
With that, you get the behaviour we want. Adding the ignore flag to shake proper is probably a good idea. |
In response to the text of #307, it seems like I the suggested |
Plan is these will be implemented in Rules.hs of #453. |
Note that in #427 I changed what |
I figured out where the equivalent piece would be in the new world, so I fixed up AssumeSkip. That now makes the difference between AssumeSkip and AssumeClean much clearer - roughly AssumeSkip == skip and AssumeClean == skip-always. |
I've started talking with @snowleopard about changing Hadrian to add something like So we were wondering what is the current status of this issue? Also, are there any workarounds that we could use in the meantime? Thanks! |
I'm actively hacking as we speak! How long do I have before you need workarounds? |
Well, we are synchronised at ZuriHac right now, which will last for two more days. It would be great to implement this new feature while @michalt and I enjoy across-the-table communication latency :-) |
It's not going to be on that timetable I'm afraid. I would still be tempted to leave it - once the new stuff is in Shake wiring it in should take seconds. Without the new stuff, you have to implement it all yourself, which will be a pain. |
Sure, we better wait for you. We have plenty of things to hack on in the meanwhile. |
There is now a |
The current set of flags for specifying what should be rebuilt are confusing because they are inherited from make, and are all described in terms of filestamps. I propose the following flags and semantics:
--rebuild=pat
- in this build, if you encounter a file matchingpat
, rebuild it even if it didn't otherwise need rebuilding.--skip=pat
- in this build, if you encounter a file matchingpat
, do not rebuild it even if it's dependencies have changed. If you run again without--skip
the file will rebuild again. If the file is not present it will still be rebuilt.--skip-always=pat
-- in this build, if you encounter a file matchingpat
, mark it as fresh (update the stored timestamps and dependencies of versions), so it won't rebuild again in future runs (unless it changes again).The text was updated successfully, but these errors were encountered: