OLD | NEW |
---|---|
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 | 6 |
7 import re | 7 import re |
8 import sys | 8 import sys |
9 | 9 |
10 usage = """find_used_resources.py | 10 usage = """find_used_resources.py |
11 | 11 |
12 Prints out (to sdout) the sorted list of resource ids that are part of unknown | 12 Prints out (to sdout) the sorted list of resource ids that are part of unknown |
13 pragma warning in the given build log (via stdin). | 13 pragma warning in the given build log (via stdin). |
14 | 14 |
15 This script is used to find the resources that are actually compiled in Chrome | 15 This script is used to find the resources that are actually compiled in Chrome |
16 in order to only include the needed strings/images in Chrome PAK files. The | 16 in order to only include the needed strings/images in Chrome PAK files. The |
17 script parses out the list of used resource ids. These resource ids show up in | 17 script parses out the list of used resource ids. These resource ids show up in |
18 the build output after building Chrome with gyp variable | 18 the build output after building Chrome with gyp variable |
19 enable_resource_whitelist_generation set to 1. This gyp flag causes the compiler | 19 enable_resource_whitelist_generation set to 1. This gyp flag causes the compiler |
20 to print out a UnknownPragma message every time a resource id is used. E.g.: | 20 to print out a UnknownPragma message every time a resource id is used. E.g.: |
21 foo.cc:22:0: warning: ignoring #pragma whitelisted_resource_12345 | 21 foo.cc:22:0: warning: ignoring #pragma whitelisted_resource_12345 |
22 [-Wunknown-pragmas] | 22 [-Wunknown-pragmas] |
23 | 23 |
24 On Windows, the message is simply a message via __pragma(message(...)). | |
Nico
2014/04/14 23:42:00
Hm, I wonder if we could do the same on non-win:
scottmg
2014/04/14 23:45:20
From the chromium-dev thread titled "generated_res
aurimas (slooooooooow)
2014/04/14 23:53:05
pragma message is not supported on gcc used to bui
| |
25 | |
24 """ | 26 """ |
25 | 27 |
26 | 28 |
27 def GetResourceIdsInPragmaWarnings(input): | 29 def GetResourceIdsInPragmaWarnings(input): |
28 """Returns sorted set of resource ids that are inside unknown pragma warnings | 30 """Returns sorted set of resource ids that are inside unknown pragma warnings |
29 for the given input. | 31 for the given input. |
30 """ | 32 """ |
31 used_resources = set() | 33 used_resources = set() |
32 unknown_pragma_warning_pattern = re.compile('warning: ignoring #pragma ' | 34 unknown_pragma_warning_pattern = re.compile( |
33 'whitelisted_resource_(?P<resource_id>[0-9]*) \[-Wunknown-pragmas\]') | 35 'whitelisted_resource_(?P<resource_id>[0-9]*)') |
34 for ln in input: | 36 for ln in input: |
35 match = unknown_pragma_warning_pattern.search(ln) | 37 match = unknown_pragma_warning_pattern.search(ln) |
36 if match: | 38 if match: |
37 resource_id = match.group('resource_id') | 39 resource_id = match.group('resource_id') |
38 used_resources.add(resource_id) | 40 used_resources.add(resource_id) |
39 return sorted(used_resources) | 41 return sorted(used_resources) |
40 | 42 |
41 def Main(): | 43 def Main(): |
42 if len(sys.argv) != 1: | 44 if len(sys.argv) != 1: |
43 sys.stderr.write(usage) | 45 sys.stderr.write(usage) |
44 sys.exit(1) | 46 sys.exit(1) |
45 else: | 47 else: |
46 used_resources = GetResourceIdsInPragmaWarnings(sys.stdin) | 48 used_resources = GetResourceIdsInPragmaWarnings(sys.stdin) |
47 for rid in used_resources: | 49 for rid in used_resources: |
48 sys.stdout.write(rid + '\n') | 50 sys.stdout.write(rid + '\n') |
49 | 51 |
50 if __name__ == '__main__': | 52 if __name__ == '__main__': |
51 Main() | 53 Main() |
OLD | NEW |