| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
This just tests that the flag works.
|
|
|
|
|
| |
This just ensures that we also don't get the "Entering directory..." message
when the new '--quiet' flag is added.
|
|
|
|
| |
Signed-off-by: Henner Zeller <h.zeller@acm.org>
|
|
|
|
|
|
| |
Refined pull request after discussion in #1816
Signed-off-by: Henner Zeller <h.zeller@acm.org>
|
| |
|
|
|
|
|
| |
In an earlier version of 791c887e22046e5e7a2d05ecb5ff27701d56895d those
functions returned LoadStatus, too, but it was changed back to bool.
|
|\
| |
| | |
CI: macOS: Unfix Xcode version to use the latest stable one
|
|/
|
| |
Removes the selection of a fixed Xcode version added in 242b7dd which assured Xcode version 12.2 was used when the default was still 12.1. The GitHub default is now 12.4 and newer versions will be made the default a few weeks after the stable release. This commit ensures an up to date Xcode version is used in the CI.
|
|\
| |
| | |
dyndep: reconcile dyndep-specified outputs with depfile-specified inputs
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When a path loaded from a depfile does not have a node, we create a new
node with a phony edge producing it. If we later load a dyndep file
that specifies the same node as an output of a known edge, we previously
failed with a "multiple rules generate ..." error. Instead, since the
conflicting edge was internally generated, replace the node's input edge
with the now-known real edge that produces it.
|
|/
|
|
| |
Previously this was covered only as part of more complex tests.
|
|\
| |
| | |
Revert #1753 and add additional tests to expose previously untested behavior
|
| |
| |
| |
| |
| |
| |
| | |
These expose some behavior related to implicit deps unknown to ninja and
timestamps with generating them as part of a rule.
See discussions in #1932 and #1933.
|
|/
|
|
|
|
|
|
|
|
| |
This reverts commit 67fbbeeec91ec171da7d4e297b8f9b319f3424c8.
There were a few missing test cases exposed by CMake's test suite that
need slight adjustments. Better to revert the original attempt, add the
test cases, and then re-land the change with the fixes.
Fixes #1932
|
|
|
|
| |
This is step 4 on #931.
|
|\
| |
| | |
Change build log to always log the most recent input mtime
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If an edge's output files' mtimes are compared to the most recent
input's mtime, edges might be calculated as clean even if they are
actually dirty. While an edge's command is running its rule to produce
its outputs and an input to the edge is updated before the outputs are
written to disk, then subsequent runs will think that the outputs are
newer than the inputs, even though the inputs have actually been updated
and may be different than what were used to produce those outputs.
Ninja will now restat all inputs just prior to running an edge's command
and remember the most recent input mtime. When the command completes,
it will stat any discovered dependencies from dep files (if necessary),
recalculate the most recent input mtime, and log it to the build log
file. On subsequent runs, ninja will use this value to compare to the
edge's most recent input's mtime to determine whether the outputs are
dirty.
This extends the methodology used by restat rules to work in all cases.
Restat rules are still unique in that they will clean the edge's output
nodes recursively if the edge's command did not change the output, but
in all cases, the mtime recorded in the log file is now the most recent
input mtime. See the new tests for more clarification.
|
|\
| |
| | |
Clarify purpose for implicit dependencies
|
| | |
|
|\ \
| | |
| | | |
wincodepage: minimize to indicate UTF-8 or not
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| | |
The ANSI code page identifier is more information than generator
programs actually need. The encoding of `build.ninja` is always
either UTF-8 or the system-wide ANSI code page. Reduce the output
to provide no more information than the generator programs need.
The Console code page can be obtained in other ways, so drop it.
|
|\ \
| | |
| | | |
Add tool to print code page information on Windows
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Since commit 00459e2b (Use UTF-8 on Windows 10 Version 1903, fix #1195,
2021-02-17), `ninja` does not always expect `build.ninja` to be encoded
in the system's ANSI code page. The expected encoding now depends on
how `ninja` is built and the version of Windows on which it is running.
Add a `-t wincodepage` tool that generators can use to ask `ninja`
what encoding it expects.
Issue: #1195
|
|/ /
| |
| |
| | |
Group all the paragraphs together in the definition list entry.
|
|\ \
| | |
| | | |
cmake: add browse check status
|
|/ / |
|
|\ \
| | |
| | | |
missingdeps tool, take 2
|
| | |
| | |
| | |
| | |
| | |
| | | |
In my tests, nested maps outperform a large map of pairs by 10-20% on a
sample Chromium missingdeps run, and are arguably simpler due to fewer
ifdefs needed.
|
| | |
| | |
| | |
| | | |
A "missing dep path" to build.ninja is a false positive, skip reporting it.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The tool looks for targets that depend on a generated file, but do not
properly specify a dependency on the generator. It needs to be run after
a successful build, and will list all potential flakes that may have
broken the build, but didn't due to accidental build step ordering.
The search relies on the correctness of depfile and generator output
information, but these are usually easier to get right than dependencies.
The errors found can usually be verified as actual build flakes by trying
to build the listed problematic files alone in a clean build directory.
Such builds usually fail with a compile job lacking a generated file.
There is some overlap between this tool and 'gn check', but not everyone
uses gn, not everyone using gn uses gn check, and most importantly, gn
check is more about modularity, and less about actual build-time deps
without flakes.
The tool needs to be run after a build completes and depfile data is
collected. It may take several seconds to process, up to a dozen or
two on a large, chromium-sized build.
|
| | |
| | |
| | |
| | |
| | | |
Extract an usable helper to load depfile dependencies without adding them
to the graph.
|
|\ \ \
| | | |
| | | | |
Use UTF-8 on Windows 10 Version 1903, fix #1195
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Allows Ninja to use descriptions, filenames and environment variables
with characters outside of the ANSI codepage on Windows. Build manifests
are now UTF-8 by default (this change needs to be emphasized in the
release notes).
WriteConsoleOutput doesn't support UTF-8, but it's deprecated on newer
Windows 10 versions anyway (or as Microsoft likes to put it: "no longer
a part of our ecosystem roadmap"). We'll use the VT100 sequence just as
we do on Linux and macOS.
https://docs.microsoft.com/en-us/windows/uwp/design/globalizing/use-utf8-code-page
https://docs.microsoft.com/en-us/windows/console/writeconsoleoutput
https://docs.microsoft.com/de-de/windows/console/console-virtual-terminal-sequences
|
|\ \ \ \
| | | | |
| | | | | |
cmake: add_compile_options / PROJECT_SOURCE_DIR
|
| | |_|/
| |/| | |
|
|\ \ \ \
| |_|/ /
|/| | | |
Status changes to support frontends
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Send all output after manifest parsing is finished to the Status
interface, so that when status frontends are added they can handle
build messages.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Make BuildStatus an abstract interface, and move the current
implementation to StatusPrinter, to make way for a serialized
Status output.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Store the number of running edges instead of trying to compute it
from the started and finshed edge counts, which may be different
for starting and ending status messages. Allows removing the status
parameter to PrintStatus and the EdgeStatus enum.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The times that end up in the build log currently originate in the
status printer, and are propagated back out to the Builder. Move
the edge times into the Builder instead, and move the overall start
time into NinjaMain so it doesn't get reset during manifest
rebuilds.
|
|\ \ \ \
| |_|_|/
|/| | | |
Restore toleration of missing to-be-deleted files on Windows
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Revise the logic from commit 2d7f7e55 (Delete read-only files on
Windows, too, 2020-12-07) to check if `GetFileAttributes` or
`DeleteFile` failed due either variant of the file/path-not-found error.
Issue: #1886
|
| | | | |
|
|/ / / |
|
| | | |
|
|\ \ \
| |_|/
|/| | |
Delete read-only files on Windows, too
|
| | |
| | |
| | |
| | | |
Fixes main complaint of #1886.
|
|\ \ \
| | | |
| | | | |
Add Haiku support.
|
|/ / / |
|