A proof of concept direct io implementation. #711
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a proof of concept patch to make it possible to tag certain rules as direct io. This causes Ninja to print the output immediately rather than buffering it. For deep rationale see issue 545. Not buffering io is useful when running a slow running command that is not run in parallel with any other build rule. The two canonical examples are running a unit test suite and regenerating build files.
This patch is just a proof of concept, it should not be merged as is. It only patches the posix side, stores the output inside itself even though it is not used, and so on. It works by adding a new variable for rules called directio. If set to 1, Ninja will print the output on screen immediately. It is the responsibility of the Ninja file generator to ensure that only one directio rule is invoked at a time (or suffer the consequences of interleaved output).