-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
manifest_parser: remove multi-output depslog restriction #1534
manifest_parser: remove multi-output depslog restriction #1534
Conversation
21c7df8
to
4ca37bd
Compare
A test that it works as intended would be good (not only that it parses without error). |
4ca37bd
to
71ad3cb
Compare
Here's a test file (courtesy of @RedBeard0531) rule TOUCH
command = touch $out
rule COPY
command = echo 'using $in' && for file in $out; do cp $in $$file; done
deps = msvc
msvc_deps_prefix = using
rule CHECK
command = for file in $in; do if ! test -e $$file; then return 99; fi; done
build source: TOUCH
build dest1 dest2: COPY source
build test1: CHECK dest1
build test2: CHECK dest2
build test3: CHECK dest1 dest2
build test: phony test1 test2 test3
default test
|
Tests should also cover gcc parsing for the following two cases: a b: in and a: in
b: in |
It should also work with either of: a: in b: in Especially when one of the outputs is an implicit output. This is important for cases like That said, if it is harder to do this for make-style deps, getting it just for msvc-style would be an improvement for a few of my use cases, so I'd be happy to see msvc-style support land independently if that would get it in an earlier release. |
Also found out the place to implement the tests for this ( |
@RedBeard0531 Noted, I'll add a test for that as well. Though we should get GCC to mention the |
Tests added. @RedBeard0531 he |
71ad3cb
to
4ea0ca7
Compare
Odd. Those failures aren't happening locally. Debugging. |
4ea0ca7
to
d6830a6
Compare
Ugh. I wish GTest gave more information :/ . Can anyone else reproduce the test failures? |
Passing on my local macOS build too. Will try with Windows later. |
This comment was marked as abuse.
This comment was marked as abuse.
I think it would be better to remove that switch and always use googletest.
Or opened an issue where you suggest the change.
PRs should no longer be ignored, I'm trying to change that. If you think there's an open one which should be looked at, just ping me :) |
PR for GoogleTest: #1562 You can cherry-pick the commit to get more information about the failed test. |
Thanks, will look at this in the next week or so. |
d6830a6
to
347b449
Compare
Ah ha. Installing re2c gets me to agree with the CI now. Tracking it down. |
b5bc6a6
to
20f6065
Compare
@jhasse Now that the cc.in file has right code too, CI is passing. |
This is a rather severe limitation that prevents listing correct dependencies for a c++20 module scanner that outputs both a dyndeps file and a compiler flags file, when the compile task depends on both but order only for dyndeps and implicit for flags file. Additionally, the overall restriction has been lifted with the dyndeps patch because dyndeps can add implicit outputs to a What is remaining to getting this merged? |
There's the conflict to resolve, but more importantly, there is the test case I commented on above. What was labeled a "buggy" depfile is no accepted. Should it continue to be rejected? If so, further work is necessary. |
ad0fc90
to
28e0d9b
Compare
Rebased and now rejects the case again. |
We've the limitations around multiple outputs with deps when building Rust targets with Ninja. I've tested this change locally and it seems to be working as expected. Can we get this merged? |
28e0d9b
to
7931a8b
Compare
I've rebased on top of |
Any chance of this for 1.10 too? :) @jhasse |
Let's see. It probably needs someone more experienced than me to review. |
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.
The change makes sense over all. I've reviewed the logic a few times and it looks okay. The tests look thorough.
7931a8b
to
cbd644d
Compare
This ensures the current behavior of rejecting this case due to `x` being reused as an input.
cbd644d
to
ebbb9e2
Compare
Updated to use |
It seems to work as intended.
Cc: @RedBeard0531