-
Notifications
You must be signed in to change notification settings - Fork 120
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
Indirect recursion with AutoDeps #818
Comments
I think a reasonable rule would be that outputs are just ignored by AutoDeps, since they never make sense. As to the outputs, there is a I'm not sure if |
Neil Mitchell ***@***.***> writes:
I think a reasonable rule would be that outputs are just ignored by AutoDeps, since they never make sense. As to the outputs, there is a `produces` annotation, which modifies `localProduces` which can be grabbed from inside the `Action` monad.
I'm not sure if `%>` etc set the `localProduces` or not (I think maybe
they must do since otherwise the history functions wouldn't work?),
but even if they don't, you could add `produces ["test.lib"]` in your
rule to avoid the recursion. Does that seem plausible?
Sure, I'll take a look. I wasn't aware of `localProduces` and added a
`DeclareOutputs` just to test, it seems to work fine.
I'll try to write a `localProduces` solution and send a PR.
|
I'm adapting my build to use multiple outputs in rules and
--share
. The problem I'm facing is that the .lib files associated with .dlls seem to be marked properly detected as writes on the first invocation but are detected as reads on subsequent invocations (assuming no exported symbol was changed).When this happens, I think the code in
shake/src/Development/Shake/Command.hs
Line 317 in 99c5a7a
If something both reads and writes to a file or the file is an output of the rule, the file in question isn't eligible to be an autodeps
.How could the
is an output of the rule
be determined?The text was updated successfully, but these errors were encountered: