mirror of
https://github.com/dart-lang/sdk
synced 2024-07-19 20:17:27 +00:00
[build] Check that a second Ninja invocation does nothing.
Not checking Windows, where the set of linker outputs is not constant. Change-Id: I1241aa4108f7feebc2638ca762743464fcb48a52 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/201165 Reviewed-by: Daco Harkes <dacoharkes@google.com> Reviewed-by: Tess Strickland <sstrickl@google.com> Commit-Queue: Ryan Macnak <rmacnak@google.com>
This commit is contained in:
parent
f9b6901baf
commit
26f50368d2
|
@ -2830,6 +2830,7 @@
|
|||
"arguments": [
|
||||
"--arch=ia32,x64,arm,arm64",
|
||||
"--mode=release",
|
||||
"--check-clean",
|
||||
"create_sdk"
|
||||
]
|
||||
},
|
||||
|
@ -2867,6 +2868,7 @@
|
|||
"arguments": [
|
||||
"--arch=x64",
|
||||
"--mode=release",
|
||||
"--check-clean",
|
||||
"create_sdk"
|
||||
],
|
||||
"environment": {
|
||||
|
|
|
@ -53,6 +53,11 @@ def BuildOptions():
|
|||
help="Don't try to start goma",
|
||||
default=False,
|
||||
action='store_true')
|
||||
other_group.add_argument(
|
||||
"--check-clean",
|
||||
help="Check that a second invocation of Ninja has nothing to do",
|
||||
default=False,
|
||||
action='store_true')
|
||||
|
||||
parser.add_argument('build_targets', nargs='*')
|
||||
|
||||
|
@ -192,6 +197,25 @@ def RunOneBuildCommand(build_config, args, env):
|
|||
return 0
|
||||
|
||||
|
||||
def CheckCleanBuild(build_config, args, env):
|
||||
args = args + ['-n', '-d', 'explain']
|
||||
print(' '.join(args))
|
||||
process = subprocess.Popen(args,
|
||||
env=env,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
stdin=None)
|
||||
out, err = process.communicate()
|
||||
process.wait()
|
||||
if process.returncode != 0:
|
||||
return 1
|
||||
if 'ninja: no work to do' not in out.decode('utf-8'):
|
||||
print(err.decode('utf-8'))
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
def SanitizerEnvironmentVariables():
|
||||
with io.open('tools/bots/test_matrix.json', encoding='utf-8') as fd:
|
||||
config = json.loads(fd.read())
|
||||
|
@ -270,6 +294,11 @@ def Main():
|
|||
to_kill.terminate()
|
||||
return 1
|
||||
|
||||
if options.check_clean:
|
||||
for (build_config, args, goma) in configs:
|
||||
if CheckCleanBuild(build_config, args, env=env) != 0:
|
||||
return 1
|
||||
|
||||
endtime = time.time()
|
||||
print("The build took %.3f seconds" % (endtime - starttime))
|
||||
return 0
|
||||
|
|
Loading…
Reference in a new issue