mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 00:29:48 +00:00
Tweak how the pkg files timestamps are created.
The acute problem this solves is that hacking on DDC generates a large number of files into its gen/ directory. It's enough files that once you have done that, the SDK no longer builds successfully because it chokes on them all. To fix that, instead of using list_files.py, I made a little list_dart_files.py that is explicitly for Dart files and knows to exclude gen/ and tests. This also avoids needing the sort of hairy regexes to match different sets of files. As far as I can tell, this works, but GYP is pretty mysterious to me, so let me know if I got something wrong or there is a better way to do it. R=whesse@google.com Review URL: https://codereview.chromium.org/2391863002 .
This commit is contained in:
parent
8b37da82ef
commit
8b6ceefca8
|
@ -9,8 +9,8 @@
|
|||
# This target lists all the files in pkg and third_party/pkg,
|
||||
# and creates the timestamp pkg_files.stamp, which depends on some
|
||||
# intermediate helper timestamps.
|
||||
# We split third_party/pkg up into three groups, based on the last
|
||||
# character before .dart at the end of the filename.
|
||||
# We split third_party/pkg up into three groups, based on the first letter
|
||||
# of the package name.
|
||||
{
|
||||
'target_name': 'pkg_files_stamp',
|
||||
'type': 'none',
|
||||
|
@ -19,12 +19,10 @@
|
|||
'action_name': 'make_pkg_files_stamp',
|
||||
'inputs': [
|
||||
'../tools/create_timestamp_file.py',
|
||||
'<!@(["python", "../tools/list_files.py",'
|
||||
'"^(?!.*/test/).*(?<!_test)[.]dart$",'
|
||||
'"."])',
|
||||
'<(SHARED_INTERMEDIATE_DIR)/third_party_pkg_files_1.stamp',
|
||||
'<(SHARED_INTERMEDIATE_DIR)/third_party_pkg_files_2.stamp',
|
||||
'<(SHARED_INTERMEDIATE_DIR)/third_party_pkg_files_3.stamp',
|
||||
'<!@(["python", "../tools/list_dart_files.py", "."])',
|
||||
'<(SHARED_INTERMEDIATE_DIR)/third_party_pkg_files_a_k.stamp',
|
||||
'<(SHARED_INTERMEDIATE_DIR)/third_party_pkg_files_l_r.stamp',
|
||||
'<(SHARED_INTERMEDIATE_DIR)/third_party_pkg_files_s_z.stamp',
|
||||
],
|
||||
'outputs': [
|
||||
'<(SHARED_INTERMEDIATE_DIR)/pkg_files.stamp',
|
||||
|
@ -35,15 +33,13 @@
|
|||
],
|
||||
},
|
||||
{
|
||||
'action_name': 'make_third_party_pkg_files_1_stamp',
|
||||
'action_name': 'make_third_party_pkg_files_a_k_stamp',
|
||||
'inputs': [
|
||||
'../tools/create_timestamp_file.py',
|
||||
'<!@(["python", "../tools/list_files.py",'
|
||||
'"^(?!.*_test\.dart).*[a-k]\.dart$",'
|
||||
'"../third_party/pkg"])',
|
||||
'<!@(["python", "../tools/list_dart_files.py", "../third_party/pkg", "[a-k].*"])',
|
||||
],
|
||||
'outputs': [
|
||||
'<(SHARED_INTERMEDIATE_DIR)/third_party_pkg_files_1.stamp',
|
||||
'<(SHARED_INTERMEDIATE_DIR)/third_party_pkg_files_a_k.stamp',
|
||||
],
|
||||
'action': [
|
||||
'python', '../tools/create_timestamp_file.py',
|
||||
|
@ -51,15 +47,13 @@
|
|||
],
|
||||
},
|
||||
{
|
||||
'action_name': 'make_third_party_pkg_files_2_stamp',
|
||||
'action_name': 'make_third_party_pkg_files_l_r_stamp',
|
||||
'inputs': [
|
||||
'../tools/create_timestamp_file.py',
|
||||
'<!@(["python", "../tools/list_files.py",'
|
||||
'"^(?!.*_test\.dart).*[l-r]\.dart$",'
|
||||
'"../third_party/pkg"])',
|
||||
'<!@(["python", "../tools/list_dart_files.py", "../third_party/pkg", "[l-r].*"])',
|
||||
],
|
||||
'outputs': [
|
||||
'<(SHARED_INTERMEDIATE_DIR)/third_party_pkg_files_2.stamp',
|
||||
'<(SHARED_INTERMEDIATE_DIR)/third_party_pkg_files_l_r.stamp',
|
||||
],
|
||||
'action': [
|
||||
'python', '../tools/create_timestamp_file.py',
|
||||
|
@ -67,15 +61,13 @@
|
|||
],
|
||||
},
|
||||
{
|
||||
'action_name': 'make_third_party_pkg_files_3_stamp',
|
||||
'action_name': 'make_third_party_pkg_files_s_z_stamp',
|
||||
'inputs': [
|
||||
'../tools/create_timestamp_file.py',
|
||||
'<!@(["python", "../tools/list_files.py",'
|
||||
'"^(?!.*_test\.dart).*[^a-r]\.dart$",'
|
||||
'"../third_party/pkg"])',
|
||||
'<!@(["python", "../tools/list_dart_files.py", "../third_party/pkg", "[s-z].*"])',
|
||||
],
|
||||
'outputs': [
|
||||
'<(SHARED_INTERMEDIATE_DIR)/third_party_pkg_files_3.stamp',
|
||||
'<(SHARED_INTERMEDIATE_DIR)/third_party_pkg_files_s_z.stamp',
|
||||
],
|
||||
'action': [
|
||||
'python', '../tools/create_timestamp_file.py',
|
||||
|
|
43
tools/list_dart_files.py
Normal file
43
tools/list_dart_files.py
Normal file
|
@ -0,0 +1,43 @@
|
|||
#!/usr/bin/env python
|
||||
# Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
||||
# for details. All rights reserved. Use of this source code is governed by a
|
||||
# BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
"""Tool for listing Dart source files.
|
||||
|
||||
Usage:
|
||||
python tools/list_dart_files.py <directory> <root directory pattern>
|
||||
"""
|
||||
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
|
||||
|
||||
def main(argv):
|
||||
directory = argv[1]
|
||||
|
||||
pattern = None
|
||||
if len(argv) > 2:
|
||||
pattern = re.compile(argv[2])
|
||||
|
||||
for root, directories, files in os.walk(directory):
|
||||
# We only care about actual source files, not generated code or tests.
|
||||
for skip_dir in ['.git', 'gen', 'test']:
|
||||
if skip_dir in directories:
|
||||
directories.remove(skip_dir)
|
||||
|
||||
# If we are looking at the root directory, filter the immediate
|
||||
# subdirectories by the given pattern.
|
||||
if pattern and root == directory:
|
||||
directories[:] = filter(pattern.match, directories)
|
||||
|
||||
for filename in files:
|
||||
if filename.endswith('.dart') and not filename.endswith('_test.dart'):
|
||||
fullname = os.path.relpath(os.path.join(root, filename))
|
||||
fullname = fullname.replace(os.sep, '/')
|
||||
print fullname
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
Loading…
Reference in a new issue