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

Side by Side Diff: remoting/tools/build/remoting_copy_locales.py

Issue 20985002: Localized Chromoting Host on Mac and Linux. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 7 years, 4 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 | « remoting/resources/resource_ids ('k') | remoting/tools/build/remoting_localize.py » ('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/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright 2013 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 """Helper script to repack paks for a list of locales. 6 """Helper script to repack paks for a list of locales.
7 7
8 Gyp doesn't have any built-in looping capability, so this just provides a way to 8 Gyp doesn't have any built-in looping capability, so this just provides a way to
9 loop over a list of locales when repacking pak files, thus avoiding a 9 loop over a list of locales when repacking pak files, thus avoiding a
10 proliferation of mostly duplicate, cut-n-paste gyp actions. 10 proliferation of mostly duplicate, cut-n-paste gyp actions.
11 """ 11 """
12 12
13 import optparse 13 import optparse
14 import os 14 import os
15 import sys 15 import sys
16 16
17 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..', 17 sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', '..',
18 'tools', 'grit')) 18 'tools', 'grit'))
19 from grit.format import data_pack 19 from grit.format import data_pack
20 20
21 # The gyp "branding" variable.
22 BRANDING = None
23
24 # Some build paths defined by gyp. 21 # Some build paths defined by gyp.
25 GRIT_DIR = None 22 GRIT_DIR = None
26 SHARE_INT_DIR = None
27 INT_DIR = None 23 INT_DIR = None
28 24
29 # The target platform. If it is not defined, sys.platform will be used. 25 # The target platform. If it is not defined, sys.platform will be used.
30 OS = None 26 OS = None
31 27
32 # Extra input files. 28 # Extra input files.
33 EXTRA_INPUT_FILES = [] 29 EXTRA_INPUT_FILES = []
34 30
35 class Usage(Exception): 31 class Usage(Exception):
36 def __init__(self, msg): 32 def __init__(self, msg):
37 self.msg = msg 33 self.msg = msg
38 34
39 35
40 def calc_output(locale): 36 def calc_output(locale):
41 """Determine the file that will be generated for the given locale.""" 37 """Determine the file that will be generated for the given locale."""
42 #e.g. '<(INTERMEDIATE_DIR)/repack/da.pak', 38 #e.g. '<(INTERMEDIATE_DIR)/remoting_locales/da.pak',
43 # For Fake Bidi, generate it at a fixed path so that tests can safely
44 # reference it.
45 if locale == 'fake-bidi':
46 return '%s/%s.pak' % (INT_DIR, locale)
47 if OS == 'mac' or OS == 'ios': 39 if OS == 'mac' or OS == 'ios':
48 # For Cocoa to find the locale at runtime, it needs to use '_' instead 40 # For Cocoa to find the locale at runtime, it needs to use '_' instead
49 # of '-' (http://crbug.com/20441). Also, 'en-US' should be represented 41 # of '-' (http://crbug.com/20441).
50 # simply as 'en' (http://crbug.com/19165, http://crbug.com/25578). 42 return os.path.join(INT_DIR, 'remoting', 'resources',
51 if locale == 'en-US': 43 '%s.lproj' % locale.replace('-', '_'), 'locale.pak')
52 locale = 'en'
53 return '%s/repack/%s.lproj/locale.pak' % (INT_DIR, locale.replace('-', '_'))
54 else: 44 else:
55 return os.path.join(INT_DIR, 'repack', locale + '.pak') 45 return os.path.join(INT_DIR, 'remoting_locales', locale + '.pak')
56 46
57 47
58 def calc_inputs(locale): 48 def calc_inputs(locale):
59 """Determine the files that need processing for the given locale.""" 49 """Determine the files that need processing for the given locale."""
60 inputs = [] 50 inputs = []
61 51
62 #e.g. '<(grit_out_dir)/generated_resources_da.pak' 52 #e.g. '<(grit_out_dir)/remoting/resources/da.pak'
63 inputs.append(os.path.join(GRIT_DIR, 'generated_resources_%s.pak' % locale)) 53 inputs.append(os.path.join(GRIT_DIR, 'remoting/resources/%s.pak' % locale))
64
65 #e.g. '<(grit_out_dir)/locale_settings_da.pak'
66 inputs.append(os.path.join(GRIT_DIR, 'locale_settings_%s.pak' % locale))
67
68 #e.g. '<(grit_out_dir)/platform_locale_settings_da.pak'
69 inputs.append(os.path.join(GRIT_DIR,
70 'platform_locale_settings_%s.pak' % locale))
71
72 #e.g. '<(SHARED_INTERMEDIATE_DIR)/components/strings/
73 # component_strings_da.pak',
74 inputs.append(os.path.join(SHARE_INT_DIR, 'components', 'strings',
75 'component_strings_%s.pak' % locale))
76
77 if OS != 'ios':
78 #e.g. '<(SHARED_INTERMEDIATE_DIR)/webkit/webkit_strings_da.pak'
79 inputs.append(os.path.join(SHARE_INT_DIR, 'webkit',
80 'webkit_strings_%s.pak' % locale))
81
82 #e.g. '<(SHARED_INTERMEDIATE_DIR)/ui/ui_strings_da.pak',
83 inputs.append(os.path.join(SHARE_INT_DIR, 'ui', 'ui_strings',
84 'ui_strings_%s.pak' % locale))
85
86 #e.g. '<(SHARED_INTERMEDIATE_DIR)/ash_strings/ash_strings_da.pak',
87 inputs.append(os.path.join(SHARE_INT_DIR, 'ash_strings',
88 'ash_strings_%s.pak' % locale))
89
90 #e.g. '<(SHARED_INTERMEDIATE_DIR)/device/bluetooth/strings/
91 # device_bluetooth_strings_da.pak',
92 inputs.append(os.path.join(SHARE_INT_DIR, 'device', 'bluetooth', 'strings',
93 'device_bluetooth_strings_%s.pak' % locale))
94
95 #e.g. '<(SHARED_INTERMEDIATE_DIR)/ui/app_locale_settings_da.pak',
96 inputs.append(os.path.join(SHARE_INT_DIR, 'ui', 'app_locale_settings',
97 'app_locale_settings_%s.pak' % locale))
98
99 #e.g. '<(grit_out_dir)/google_chrome_strings_da.pak'
100 # or
101 # '<(grit_out_dir)/chromium_strings_da.pak'
102 inputs.append(os.path.join(
103 GRIT_DIR, '%s_strings_%s.pak' % (BRANDING, locale)))
104 54
105 # Add any extra input files. 55 # Add any extra input files.
106 for extra_file in EXTRA_INPUT_FILES: 56 for extra_file in EXTRA_INPUT_FILES:
107 inputs.append('%s_%s.pak' % (extra_file, locale)) 57 inputs.append('%s_%s.pak' % (extra_file, locale))
108 58
109 return inputs 59 return inputs
110 60
111 61
112 def list_outputs(locales): 62 def list_outputs(locales):
113 """Returns the names of files that will be generated for the given locales. 63 """Returns the names of files that will be generated for the given locales.
(...skipping 19 matching lines...) Expand all
133 for locale in locales: 83 for locale in locales:
134 inputs += calc_inputs(locale) 84 inputs += calc_inputs(locale)
135 # Quote each element so filename spaces don't mess up gyp's attempt to parse 85 # Quote each element so filename spaces don't mess up gyp's attempt to parse
136 # it into a list. 86 # it into a list.
137 return " ".join(['"%s"' % x for x in inputs]) 87 return " ".join(['"%s"' % x for x in inputs])
138 88
139 89
140 def repack_locales(locales): 90 def repack_locales(locales):
141 """ Loop over and repack the given locales.""" 91 """ Loop over and repack the given locales."""
142 for locale in locales: 92 for locale in locales:
143 inputs = [] 93 inputs = calc_inputs(locale)
144 inputs += calc_inputs(locale)
145 output = calc_output(locale) 94 output = calc_output(locale)
146 data_pack.DataPack.RePack(output, inputs) 95 data_pack.DataPack.RePack(output, inputs)
147 96
148 97
149 def DoMain(argv): 98 def DoMain(argv):
150 global BRANDING
151 global GRIT_DIR 99 global GRIT_DIR
152 global SHARE_INT_DIR
153 global INT_DIR 100 global INT_DIR
154 global OS 101 global OS
155 global EXTRA_INPUT_FILES 102 global EXTRA_INPUT_FILES
156 103
157 parser = optparse.OptionParser("usage: %prog [options] locales") 104 parser = optparse.OptionParser("usage: %prog [options] locales")
158 parser.add_option("-i", action="store_true", dest="inputs", default=False, 105 parser.add_option("-i", action="store_true", dest="inputs", default=False,
159 help="Print the expected input file list, then exit.") 106 help="Print the expected input file list, then exit.")
160 parser.add_option("-o", action="store_true", dest="outputs", default=False, 107 parser.add_option("-o", action="store_true", dest="outputs", default=False,
161 help="Print the expected output file list, then exit.") 108 help="Print the expected output file list, then exit.")
162 parser.add_option("-g", action="store", dest="grit_dir", 109 parser.add_option("-g", action="store", dest="grit_dir",
163 help="GRIT build files output directory.") 110 help="GRIT build files output directory.")
164 parser.add_option("-x", action="store", dest="int_dir", 111 parser.add_option("-x", action="store", dest="int_dir",
165 help="Intermediate build files output directory.") 112 help="Intermediate build files output directory.")
166 parser.add_option("-s", action="store", dest="share_int_dir",
167 help="Shared intermediate build files output directory.")
168 parser.add_option("-b", action="store", dest="branding",
169 help="Branding type of this build.")
170 parser.add_option("-e", action="append", dest="extra_input", default=[], 113 parser.add_option("-e", action="append", dest="extra_input", default=[],
171 help="Full path to an extra input pak file without the\ 114 help="Full path to an extra input pak file without the\
172 locale suffix and \".pak\" extension.") 115 locale suffix and \".pak\" extension.")
173 parser.add_option("-p", action="store", dest="os", 116 parser.add_option("-p", action="store", dest="os",
174 help="The target OS. (e.g. mac, linux, win, etc.)") 117 help="The target OS. (e.g. mac, linux, win, etc.)")
175 options, locales = parser.parse_args(argv) 118 options, locales = parser.parse_args(argv)
176 119
177 if not locales: 120 if not locales:
178 parser.error('Please specificy at least one locale to process.\n') 121 parser.error('Please specificy at least one locale to process.\n')
179 122
180 print_inputs = options.inputs 123 print_inputs = options.inputs
181 print_outputs = options.outputs 124 print_outputs = options.outputs
182 GRIT_DIR = options.grit_dir 125 GRIT_DIR = options.grit_dir
183 INT_DIR = options.int_dir 126 INT_DIR = options.int_dir
184 SHARE_INT_DIR = options.share_int_dir
185 BRANDING = options.branding
186 EXTRA_INPUT_FILES = options.extra_input 127 EXTRA_INPUT_FILES = options.extra_input
187 OS = options.os 128 OS = options.os
188 129
189 if not OS: 130 if not OS:
190 if sys.platform == 'darwin': 131 if sys.platform == 'darwin':
191 OS = 'mac' 132 OS = 'mac'
192 elif sys.platform.startswith('linux'): 133 elif sys.platform.startswith('linux'):
193 OS = 'linux' 134 OS = 'linux'
194 elif sys.platform in ('cygwin', 'win32'): 135 elif sys.platform in ('cygwin', 'win32'):
195 OS = 'win' 136 OS = 'win'
196 else: 137 else:
197 OS = sys.platform 138 OS = sys.platform
198 139
199 if not (GRIT_DIR and INT_DIR and SHARE_INT_DIR):
200 parser.error('Please specify all of "-g" and "-x" and "-s".\n')
201 if print_inputs and print_outputs: 140 if print_inputs and print_outputs:
202 parser.error('Please specify only one of "-i" or "-o".\n') 141 parser.error('Please specify only one of "-i" or "-o".\n')
203 # Need to know the branding, unless we're just listing the outputs. 142 if print_inputs and not GRIT_DIR:
204 if not print_outputs and not BRANDING: 143 parser.error('Please specify "-g".\n')
205 parser.error('Please specify "-b" to determine the input files.\n') 144 if print_outputs and not INT_DIR:
145 parser.error('Please specify "-x".\n')
146 if not (print_inputs or print_outputs or (GRIT_DIR and INT_DIR)):
147 parser.error('Please specify both "-g" and "-x".\n')
206 148
207 if print_inputs: 149 if print_inputs:
208 return list_inputs(locales) 150 return list_inputs(locales)
209 151
210 if print_outputs: 152 if print_outputs:
211 return list_outputs(locales) 153 return list_outputs(locales)
212 154
213 return repack_locales(locales) 155 return repack_locales(locales)
214 156
215 if __name__ == '__main__': 157 if __name__ == '__main__':
216 results = DoMain(sys.argv[1:]) 158 results = DoMain(sys.argv[1:])
217 if results: 159 if results:
218 print results 160 print results
OLDNEW
« no previous file with comments | « remoting/resources/resource_ids ('k') | remoting/tools/build/remoting_localize.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698