Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(397)

Side by Side Diff: source/test/depstest/dependencies.py

Issue 845603002: Update ICU to 54.1 step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@master
Patch Set: remove unusued directories Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/test/cintltst/utransts.c ('k') | source/test/depstest/dependencies.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #! /usr/bin/python 1 #! /usr/bin/python
2 # -*- coding: utf-8 -*- 2 # -*- coding: utf-8 -*-
3 # 3 #
4 # Copyright (C) 2011, International Business Machines 4 # Copyright (C) 2011-2014, International Business Machines
5 # Corporation and others. All Rights Reserved. 5 # Corporation and others. All Rights Reserved.
6 # 6 #
7 # file name: dependencies.py 7 # file name: dependencies.py
8 # 8 #
9 # created on: 2011may26 9 # created on: 2011may26
10 10
11 """Reader module for dependency data for the ICU dependency tester. 11 """Reader module for dependency data for the ICU dependency tester.
12 12
13 Reads dependencies.txt and makes the data available. 13 Reads dependencies.txt and makes the data available.
14 14
15 Attributes: 15 Attributes:
16 files: Set of "library/filename.o" files mentioned in the dependencies file. 16 files: Set of "library/filename.o" files mentioned in the dependencies file.
17 items: Map from library or group names to item maps. 17 items: Map from library or group names to item maps.
18 Each item has a "type" ("library" or "group" or "system_symbols"). 18 Each item has a "type" ("library" or "group" or "system_symbols").
19 A library or group item can have an optional set of "files" (as in the files attribute). 19 A library or group item can have an optional set of "files" (as in the files attribute).
20 Each item can have an optional set of "deps" (libraries & groups). 20 Each item can have an optional set of "deps" (libraries & groups).
21 A group item also has a "library" name unless it is a group of system symbol s. 21 A group item also has a "library" name unless it is a group of system symbol s.
22 The one "system_symbols" item and its groups have sets of "system_symbols" 22 The one "system_symbols" item and its groups have sets of "system_symbols"
23 with standard-library system symbol names. 23 with standard-library system symbol names.
24 libraries: Set of library names mentioned in the dependencies file. 24 libraries: Set of library names mentioned in the dependencies file.
25 file_to_item: Map from a symbol (ushoe.o) to library or group (shoesize)
25 """ 26 """
26 __author__ = "Markus W. Scherer" 27 __author__ = "Markus W. Scherer"
27 28
28 # TODO: Support binary items. 29 # TODO: Support binary items.
29 # .txt syntax: binary: tools/genrb 30 # .txt syntax: binary: tools/genrb
30 # item contents: {"type": "binary"} with optional files & deps 31 # item contents: {"type": "binary"} with optional files & deps
31 # A binary must not be used as a dependency for anything else. 32 # A binary must not be used as a dependency for anything else.
32 33
33 import sys 34 import sys
34 35
35 files = set() 36 files = set()
36 items = {} 37 items = {}
37 libraries = set() 38 libraries = set()
39 file_to_item = {}
38 40
39 _line_number = 0 41 _line_number = 0
40 _groups_to_be_defined = set() 42 _groups_to_be_defined = set()
41 43
42 def _CheckLibraryName(name): 44 def _CheckLibraryName(name):
43 global _line_number 45 global _line_number
44 if not name: 46 if not name:
45 sys.exit("Error:%d: \"library: \" without name" % _line_number) 47 sys.exit("Error:%d: \"library: \" without name" % _line_number)
46 if name.endswith(".o"): 48 if name.endswith(".o"):
47 sys.exit("Error:%d: invalid library name %s" % (_line_number, name)) 49 sys.exit("Error:%d: invalid library name %s" % (_line_number, name))
(...skipping 30 matching lines...) Expand all
78 if not line: continue 80 if not line: continue
79 if not line.startswith(" "): return line 81 if not line.startswith(" "): return line
80 if item_files == None: item_files = item["files"] = set() 82 if item_files == None: item_files = item["files"] = set()
81 for file_name in line.split(): 83 for file_name in line.split():
82 _CheckFileName(file_name) 84 _CheckFileName(file_name)
83 file_name = library_name + "/" + file_name 85 file_name = library_name + "/" + file_name
84 if file_name in files: 86 if file_name in files:
85 sys.exit("Error:%d: file %s listed in multiple groups" % (_line_number, file_name)) 87 sys.exit("Error:%d: file %s listed in multiple groups" % (_line_number, file_name))
86 files.add(file_name) 88 files.add(file_name)
87 item_files.add(file_name) 89 item_files.add(file_name)
90 file_to_item[file_name] = item["name"]
88 91
89 def _IsLibrary(item): return item and item["type"] == "library" 92 def _IsLibrary(item): return item and item["type"] == "library"
90 93
91 def _IsLibraryGroup(item): return item and "library" in item 94 def _IsLibraryGroup(item): return item and "library" in item
92 95
93 def _ReadDeps(deps_file, item, library_name): 96 def _ReadDeps(deps_file, item, library_name):
94 global items, _line_number, _groups_to_be_defined 97 global items, _line_number, _groups_to_be_defined
95 item_deps = item.get("deps") 98 item_deps = item.get("deps")
96 while True: 99 while True:
97 line = _ReadLine(deps_file) 100 line = _ReadLine(deps_file)
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 while True: 147 while True:
145 while not line: line = _RemoveComment(deps_file.next()) 148 while not line: line = _RemoveComment(deps_file.next())
146 149
147 if line.startswith("library: "): 150 if line.startswith("library: "):
148 current_type = "library" 151 current_type = "library"
149 name = line[9:].lstrip() 152 name = line[9:].lstrip()
150 _CheckLibraryName(name) 153 _CheckLibraryName(name)
151 if name in items: 154 if name in items:
152 sys.exit("Error:%d: library definition using duplicate name %s" % (_li ne_number, name)) 155 sys.exit("Error:%d: library definition using duplicate name %s" % (_li ne_number, name))
153 libraries.add(name) 156 libraries.add(name)
154 item = items[name] = {"type": "library"} 157 item = items[name] = {"type": "library", "name": name}
155 line = _ReadFiles(deps_file, item, name) 158 line = _ReadFiles(deps_file, item, name)
156 elif line.startswith("group: "): 159 elif line.startswith("group: "):
157 current_type = "group" 160 current_type = "group"
158 name = line[7:].lstrip() 161 name = line[7:].lstrip()
159 _CheckGroupName(name) 162 _CheckGroupName(name)
160 if name not in items: 163 if name not in items:
161 sys.exit("Error:%d: group %s defined before mentioned as a dependency" % 164 sys.exit("Error:%d: group %s defined before mentioned as a dependency" %
162 (_line_number, name)) 165 (_line_number, name))
163 if name not in _groups_to_be_defined: 166 if name not in _groups_to_be_defined:
164 sys.exit("Error:%d: group definition using duplicate name %s" % (_line _number, name)) 167 sys.exit("Error:%d: group definition using duplicate name %s" % (_line _number, name))
165 _groups_to_be_defined.remove(name) 168 _groups_to_be_defined.remove(name)
166 item = items[name] 169 item = items[name]
170 item["name"] = name
167 library_name = item.get("library") 171 library_name = item.get("library")
168 if library_name: 172 if library_name:
169 line = _ReadFiles(deps_file, item, library_name) 173 line = _ReadFiles(deps_file, item, library_name)
170 else: 174 else:
171 line = _ReadSystemSymbols(deps_file, item) 175 line = _ReadSystemSymbols(deps_file, item)
172 elif line == " deps": 176 elif line == " deps":
173 if current_type == "library": 177 if current_type == "library":
174 line = _ReadDeps(deps_file, items[name], name) 178 line = _ReadDeps(deps_file, items[name], name)
175 elif current_type == "group": 179 elif current_type == "group":
176 item = items[name] 180 item = items[name]
177 line = _ReadDeps(deps_file, item, item.get("library")) 181 line = _ReadDeps(deps_file, item, item.get("library"))
178 elif current_type == "system_symbols": 182 elif current_type == "system_symbols":
179 item = items[current_type] 183 item = items[current_type]
180 line = _ReadDeps(deps_file, item, None) 184 line = _ReadDeps(deps_file, item, None)
181 else: 185 else:
182 sys.exit("Error:%d: deps before any library or group" % _line_number) 186 sys.exit("Error:%d: deps before any library or group" % _line_number)
183 elif line == "system_symbols:": 187 elif line == "system_symbols:":
184 current_type = "system_symbols" 188 current_type = "system_symbols"
185 if current_type in items: 189 if current_type in items:
186 sys.exit("Error:%d: duplicate entry for system_symbols" % _line_number ) 190 sys.exit("Error:%d: duplicate entry for system_symbols" % _line_number )
187 item = items[current_type] = {"type": current_type} 191 item = items[current_type] = {"type": current_type, "name": current_type }
188 line = _ReadSystemSymbols(deps_file, item) 192 line = _ReadSystemSymbols(deps_file, item)
189 else: 193 else:
190 sys.exit("Syntax error:%d: %s" % (_line_number, line)) 194 sys.exit("Syntax error:%d: %s" % (_line_number, line))
191 except StopIteration: 195 except StopIteration:
192 pass 196 pass
193 if _groups_to_be_defined: 197 if _groups_to_be_defined:
194 sys.exit("Error: some groups mentioned in dependencies are undefined: %s" % _groups_to_be_defined) 198 sys.exit("Error: some groups mentioned in dependencies are undefined: %s" % _groups_to_be_defined)
OLDNEW
« no previous file with comments | « source/test/cintltst/utransts.c ('k') | source/test/depstest/dependencies.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698