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

Side by Side Diff: chrome/tools/build/win/dependencies.py

Issue 8680018: Fix python scripts in src/chrome/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: copyright Created 9 years 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 | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/env python
2 # Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2011 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 """Script to verify a Portable Executable's dependencies. 6 """Script to verify a Portable Executable's dependencies.
7 7
8 Analyzes the input portable executable (a DLL or an EXE for example), extracts 8 Analyzes the input portable executable (a DLL or an EXE for example), extracts
9 its imports and confirms that its dependencies haven't changed. This is for 9 its imports and confirms that its dependencies haven't changed. This is for
10 regression testing. 10 regression testing.
11 11
12 Returns 0 if the list matches. 12 Returns 0 if the list matches.
(...skipping 20 matching lines...) Expand all
33 def __str__(self): 33 def __str__(self):
34 return self.message 34 return self.message
35 35
36 36
37 def RunSystemCommand(cmd): 37 def RunSystemCommand(cmd):
38 try: 38 try:
39 return subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0] 39 return subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
40 except: 40 except:
41 raise Error("Failed to execute: " + cmd) 41 raise Error("Failed to execute: " + cmd)
42 42
43
43 def RunDumpbin(binary_file): 44 def RunDumpbin(binary_file):
44 """Runs dumpbin and parses its output. 45 """Runs dumpbin and parses its output.
45 46
46 Args: binary_file: the binary to analyze 47 Args: binary_file: the binary to analyze
47 Returns: a tuple of the dependencies and the delay-load dependencies 48 Returns: a tuple of the dependencies and the delay-load dependencies
48 49
49 The output of dumpbin that we will be parsing looks like this: 50 The output of dumpbin that we will be parsing looks like this:
50 -- 51 --
51 <blah blah> 52 <blah blah>
52 53
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 expected_dependents, 190 expected_dependents,
190 list_file) 191 list_file)
191 delayed_result = Diff(pe_name, 192 delayed_result = Diff(pe_name,
192 "delay loaded dll", 193 "delay loaded dll",
193 delay_loaded, 194 delay_loaded,
194 expected_delay_loaded, 195 expected_delay_loaded,
195 list_file) 196 list_file)
196 return max(deps_result, delayed_result) 197 return max(deps_result, delayed_result)
197 198
198 199
199 def main(options, args): 200 def main():
200 # PE means portable executable. It's any .DLL, .EXE, .SYS, .AX, etc. 201 # PE means portable executable. It's any .DLL, .EXE, .SYS, .AX, etc.
202 usage = "usage: %prog [options] input output"
203 option_parser = optparse.OptionParser(usage=usage)
204 option_parser.add_option("-d",
205 "--debug",
206 dest="debug",
207 action="store_true",
208 default=False,
209 help="Display debugging information")
210 options, args = option_parser.parse_args()
211 if len(args) != 2:
212 option_parser.error("Incorrect number of arguments")
201 pe_name = args[0] 213 pe_name = args[0]
202 deps_file = args[1] 214 deps_file = args[1]
203 dependents, delay_loaded = RunDumpbin(pe_name) 215 dependents, delay_loaded = RunDumpbin(pe_name)
204 if options.debug: 216 if options.debug:
205 print "Dependents:" 217 print "Dependents:"
206 print "\n".join(dependents) 218 print "\n".join(dependents)
207 print "Delayloaded:" 219 print "Delayloaded:"
208 print "\n".join(delay_loaded) 220 print "\n".join(delay_loaded)
209 return VerifyDependents(pe_name, dependents, delay_loaded, deps_file, 221 return VerifyDependents(pe_name, dependents, delay_loaded, deps_file,
210 options.debug) 222 options.debug)
211 223
212 224
213 if '__main__' == __name__: 225 if '__main__' == __name__:
214 usage = "usage: %prog [options] input output" 226 sys.exit(main())
215 option_parser = optparse.OptionParser(usage = usage)
216 option_parser.add_option("-d",
217 "--debug",
218 dest="debug",
219 action="store_true",
220 default=False,
221 help="Display debugging information")
222 options, args = option_parser.parse_args()
223 if len(args) != 2:
224 option_parser.error("Incorrect number of arguments")
225 sys.exit(main(options, args))
OLDNEW
« no previous file with comments | « chrome/tools/build/win/create_installer_archive.py ('k') | chrome/tools/build/win/make_policy_zip.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698