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

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

Issue 202044: Add exe servers to the list of binaries that may be packaged with the mini_in... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 11 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « chrome/installer/mini_installer/chrome.release ('k') | no next file » | 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 # Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2006-2008 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 used to scan for server DLLs at build time and build a header 6 """Script used to scan for server DLLs at build time and build a header
7 included by setup.exe. This header contains an array of the names of 7 included by setup.exe. This header contains an array of the names of
8 the DLLs that need registering at install time. 8 the DLLs that need registering at install time.
9 9
10 """ 10 """
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 """ 57 """
58 output_file = os.path.join(header_output_dir, GENERATED_DLL_INCLUDE_FILE_NAME) 58 output_file = os.path.join(header_output_dir, GENERATED_DLL_INCLUDE_FILE_NAME)
59 59
60 dll_array_string = "" 60 dll_array_string = ""
61 for dll in registered_dll_list: 61 for dll in registered_dll_list:
62 dll.replace("\\", "\\\\") 62 dll.replace("\\", "\\\\")
63 if dll_array_string: 63 if dll_array_string:
64 dll_array_string += ', ' 64 dll_array_string += ', '
65 dll_array_string += "L\"%s\"" % dll 65 dll_array_string += "L\"%s\"" % dll
66 66
67 f = open(output_file, 'w') 67 if len(registered_dll_list) == 0:
68 contents = GENERATED_DLL_INCLUDE_FILE_CONTENTS % ("L\"\"", 0)
69 else:
70 contents = GENERATED_DLL_INCLUDE_FILE_CONTENTS % (dll_array_string,
71 len(registered_dll_list))
72
73 # Don't rewrite the header file if we don't need to.
68 try: 74 try:
69 if len(registered_dll_list) == 0: 75 old_file = open(output_file, 'r')
70 f.write(GENERATED_DLL_INCLUDE_FILE_CONTENTS % ("L\"\"", 0)) 76 except EnvironmentError:
71 else: 77 old_contents = None
72 f.write(GENERATED_DLL_INCLUDE_FILE_CONTENTS % (dll_array_string, 78 else:
73 len(registered_dll_list))) 79 old_contents = old_file.read()
74 finally: 80
kuchhal 2009/09/10 17:08:23 old_file.close() here somewhere
robertshield 2009/09/10 17:30:46 Added, thanks!
75 f.close() 81 if contents != old_contents:
82 print 'Updating server dll header: ' + str(output_file)
83 open(output_file, 'w').write(contents)
76 84
77 85
78 def ScanServerDlls(config, distribution, output_dir): 86 def ScanServerDlls(config, distribution, output_dir):
79 """Scans for DLLs in the specified section of config that are in the 87 """Scans for DLLs in the specified section of config that are in the
80 subdirectory of output_dir named SERVERS_DIR. Returns a list of only the 88 subdirectory of output_dir named SERVERS_DIR. Returns a list of only the
81 filename components of the paths to all matching DLLs. 89 filename components of the paths to all matching DLLs.
82 """ 90 """
83 91
92 print "Scanning for server DLLs in " + output_dir
93
84 registered_dll_list = [] 94 registered_dll_list = []
85 ScanDllsInSection(config, 'GENERAL', output_dir, registered_dll_list) 95 ScanDllsInSection(config, 'GENERAL', output_dir, registered_dll_list)
86 if distribution: 96 if distribution:
87 if len(distribution) > 1 and distribution[0] == '_': 97 if len(distribution) > 1 and distribution[0] == '_':
88 distribution = distribution[1:] 98 distribution = distribution[1:]
89 ScanDllsInSection(config, distribution.upper(), output_dir, 99 ScanDllsInSection(config, distribution.upper(), output_dir,
90 registered_dll_list) 100 registered_dll_list)
91 101
92 return registered_dll_list 102 return registered_dll_list
93 103
94 104
95 def ScanDllsInSection(config, section, output_dir, registered_dll_list): 105 def ScanDllsInSection(config, section, output_dir, registered_dll_list):
96 """Scans for DLLs in the specified section of config that are in the 106 """Scans for DLLs in the specified section of config that are in the
97 subdirectory of output_dir named SERVERS_DIR. Appends the file name of all 107 subdirectory of output_dir named SERVERS_DIR. Appends the file name of all
98 matching dlls to registered_dll_list. 108 matching dlls to registered_dll_list.
99 """ 109 """
100 for option in config.options(section): 110 for option in config.options(section):
101 if option.endswith('dir'): 111 if option.endswith('dir'):
102 continue 112 continue
103 113
104 dst = config.get(section, option) 114 dst = config.get(section, option)
105 (x, src_folder) = os.path.split(dst) 115 (x, src_folder) = os.path.split(dst)
106 116
107 for file in glob.glob(os.path.join(output_dir, option)): 117 for file in glob.glob(os.path.join(output_dir, option)):
108 if option.startswith(SERVERS_DIR): 118 if option.startswith(SERVERS_DIR):
109 (x, file_name) = os.path.split(file) 119 (x, file_name) = os.path.split(file)
110 print "Found server DLL file: " + file_name 120 if file_name.lower().endswith('.dll'):
111 registered_dll_list.append(file_name) 121 print "Found server DLL file: " + file_name
122 registered_dll_list.append(file_name)
112 123
113 124
114 def RunSystemCommand(cmd): 125 def RunSystemCommand(cmd):
115 if (os.system(cmd) != 0): 126 if (os.system(cmd) != 0):
116 raise "Error while running cmd: %s" % cmd 127 raise "Error while running cmd: %s" % cmd
117 128
118 129
119 def main(options): 130 def main(options):
120 """Main method that reads input file, scans <build_output>\servers for 131 """Main method that reads input file, scans <build_output>\servers for
121 matches to files described in the input file. A header file for the 132 matches to files described in the input file. A header file for the
(...skipping 10 matching lines...) Expand all
132 option_parser = optparse.OptionParser() 143 option_parser = optparse.OptionParser()
133 option_parser.add_option('-o', '--output_dir', help='Build Output directory') 144 option_parser.add_option('-o', '--output_dir', help='Build Output directory')
134 option_parser.add_option('-x', '--header_output_dir', 145 option_parser.add_option('-x', '--header_output_dir',
135 help='Location where the generated header file will be placed.') 146 help='Location where the generated header file will be placed.')
136 option_parser.add_option('-i', '--input_file', help='Input file') 147 option_parser.add_option('-i', '--input_file', help='Input file')
137 option_parser.add_option('-d', '--distribution', 148 option_parser.add_option('-d', '--distribution',
138 help='Name of Chromium Distribution. Optional.') 149 help='Name of Chromium Distribution. Optional.')
139 150
140 options, args = option_parser.parse_args() 151 options, args = option_parser.parse_args()
141 sys.exit(main(options)) 152 sys.exit(main(options))
OLDNEW
« no previous file with comments | « chrome/installer/mini_installer/chrome.release ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698