-
Notifications
You must be signed in to change notification settings - Fork 6
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
Closes Issue333 bisect extraneous runs #337
Conversation
…ating its dependencies (particularly ground-truth.csv)
…to StringIO ostream, and hopefully others, but should be reviewed.
…est to account for phony indirection which causes executables to be touched. This test should be rewritten, but hopefully this works for now.
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.
I'm satisfied with the fix for the bug being addressed here.
I believe the incremental build test could be changed to use one of the fake compilers, fake_gcc4.py
or fake_clang34.py
, instead of using make --touch
which assumes that every recipe will update its target (and therefore touches it). These fake compilers also touch the output file, but only when the compiler is actually called (which the introduced no-op operation does not do).
I'm fine if that change is part of a different issue. If so, I want the issue number here commented in this pull request.
Issue #338 opened to fix |
Fixes #
Description:
Fix for bug that caused ground truth executable to be re-tested on every make call.
Bug originated from labeling executables as PHONY in Makefile.in; as a result all targets depending on the executable run every time make is called
Per @mikebentley15, a simple hack adding a layer of separation fixed the issue. The executable is no longer marked PHONY, but is a target with a single-use PHONY prerequisite and a no-op recipe. This still forces recursive calls to build every executable, but doesn't force dependents to run. The no-op recipe also forces Make to verify the timestamp on the executable.
Documentation:
No functionality changed, so no need for documentation changes.
Tests: