Files
react-native-devtools-frontend/scripts/build/assert_grd.py
T
Tim van der Lippe 0d8ffe34d5 Use GN metadata to compute GRD files
GN metadata allows to specify and later query metadata from any
action in our build graph. Using GN metadata, we can specify
GRD files on an action and collect these files on the top level.
Then, we can compare the list of collected files to the expected
GRD files in `devtools_grd_files.gni` to ensure they match.

As a follow-up change, we can remove the intermediate lists we have
been specifying in `all_devtools_modules.gni` and
`devtools_module_entrypoints.gni`, which now become obsolete. That's
because both `devtools_module` and `devtools_entrypoint` now specify
the files in their respective metadata and essentially perform the
check that all relevant files are collected.

R=aerotwist@chromium.org

Also-By: alexrudenko@chromium.org
Bug: 1174013
Change-Id: I9dd2e6f7e010b5c25f83556511af12d5d1c2ec7c
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2843322
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Alex Rudenko <alexrudenko@chromium.org>
Reviewed-by: Paul Lewis <aerotwist@chromium.org>
2021-04-22 11:50:37 +00:00

58 lines
1.7 KiB
Python

#!/usr/bin/env vpython
# -*- coding: UTF-8 -*-
#
# Copyright 2021 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""
Asserts that expected and generated list of GRD files is equal.
"""
import sys
import json
def main(argv):
expected_grd_sources = open(argv[1], 'r').read()
generated_grd_sources = open(argv[2], 'r').read()
stamp_file = argv[3]
expected_json = json.loads(expected_grd_sources)
generated_json = json.loads(generated_grd_sources)
expected_json.sort()
generated_json.sort()
return_code = 0
for expected_file in expected_json:
if expected_file not in generated_json:
print(
"File " + expected_file +
" is not generated by any action in front_end." +
" Either remove it from config/gni/devtools_grd_files.gni" +
" or add the missing file to an action" +
" (for example a devtools_module or devtools_entrypoint definition).\n"
)
return_code = 1
for generated_file in generated_json:
if generated_file not in expected_json:
print(
"File " + generated_file +
" is not listed in config/gni/devtools_grd_files.gni." +
" Either add the file to the grd_files_release_sources/grd_files_debug_sources,"
+ " or remove the generated file from an action.\n")
return_code = 1
with open(stamp_file, 'w', encoding="utf8") as fp:
fp.write("")
return return_code
if __name__ == '__main__':
sys.exit(main(sys.argv))