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

Side by Side Diff: ios/chrome/tools/build/ios_repack_locales.py

Issue 1164983004: [iOS] Add a repack steps to iOS upstream for unit tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments and inline .gypi that were used only once Created 5 years, 6 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 | « ios/chrome/ios_chrome_tests.gyp ('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
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2015 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 """Helper script to repack paks for a list of locales for iOS.
7
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
10 proliferation of mostly duplicate, cut-n-paste gyp actions.
11 """
12
13 import optparse
14 import os
15 import sys
16
17 script_dir = os.path.dirname(__file__)
18 src_dir = os.path.join(script_dir, os.pardir, os.pardir, os.pardir, os.pardir)
19 sys.path.append(os.path.join(src_dir, 'tools', 'grit'))
20
21 from grit.format import data_pack
22
23
24 def calc_output(options, locale):
25 """Determine the file that will be generated for the given locale."""
26 #e.g. '<(INTERMEDIATE_DIR)/repack/da.pak',
27 # For Fake Bidi, generate it at a fixed path so that tests can safely
28 # reference it.
29 if locale == 'fake-bidi':
30 return os.path.join(options.share_int_dir, locale + '.pak')
31 # For Cocoa to find the locale at runtime, it needs to use '_' instead
32 # of '-' (http://crbug.com/20441). Also, 'en-US' should be represented
33 # simply as 'en' (http://crbug.com/19165, http://crbug.com/25578).
34 if locale == 'en-US':
35 locale = 'en'
36 else:
37 locale = locale.replace('-', '_')
38 return os.path.join(options.out_dir, locale + '.lproj', 'locale.pak')
39
40
41 def calc_inputs(options, locale):
42 """Determine the files that need processing for the given locale."""
43 inputs = []
44
45 #e.g. '<(SHARED_INTERMEDIATE_DIR)/components/strings/
46 # components_strings_da.pak',
47 inputs.append(os.path.join(options.share_int_dir, 'components', 'strings',
48 'components_strings_%s.pak' % locale))
49
50 #e.g. '<(SHARED_INTERMEDIATE_DIR)/ui/strings/ui_strings_da.pak',
51 inputs.append(os.path.join(options.share_int_dir, 'ui', 'strings',
52 'ui_strings_%s.pak' % locale))
53
54 #e.g. '<(SHARED_INTERMEDIATE_DIR)/ios/chrome/ios_strings_resources_da.pak'
55 inputs.append(os.path.join(options.share_int_dir, 'ios', 'chrome',
56 'ios_strings_resources_%s.pak' % locale))
57
58 if options.branding:
59 #e.g. '<(SHARED_INTERMEDIATE_DIR)/ios/chrome/google_chrome_strings_da.pak'
60 # or
61 # '<(SHARED_INTERMEDIATE_DIR)/ios/chrome/chromium_strings_da.pak'
62 inputs.append(os.path.join(options.share_int_dir, 'ios', 'chrome',
63 '%s_strings_%s.pak' % (options.branding, locale)))
64
65 # Add any extra input files.
66 for extra_file in options.extra_input:
67 inputs.append('%s_%s.pak' % (extra_file, locale))
68
69 return inputs
70
71
72 def list_outputs(options, locales):
73 """Returns the names of files that will be generated for the given locales.
74
75 This is to provide gyp the list of output files, so build targets can
76 properly track what needs to be built.
77 """
78 outputs = []
79 for locale in locales:
80 outputs.append(calc_output(options, locale))
81 return outputs
82
83
84 def list_inputs(options, locales):
85 """Returns the names of files that will be processed for the given locales.
86
87 This is to provide gyp the list of input files, so build targets can properly
88 track their prerequisites.
89 """
90 inputs = []
91 for locale in locales:
92 inputs.extend(calc_inputs(options, locale))
93 return inputs
94
95
96 def quote_filenames(filenames):
97 """Quote each elements so filename spaces don't mess up gyp's attempt to parse
98 it into a list."""
99 return " ".join(['"%s"' % x for x in filenames])
100
101
102 def repack_locales(options, locales):
103 """ Loop over and repack the given locales."""
104 for locale in locales:
105 inputs = calc_inputs(options, locale)
106 output = calc_output(options, locale)
107 data_pack.DataPack.RePack(output, inputs, whitelist_file=options.whitelist)
108
109
110 def DoMain(argv):
111 parser = optparse.OptionParser("usage: %prog [options] locales")
112 parser.add_option(
113 "-i", action="store_true", dest="print_inputs", default=False,
114 help="Print the expected input file list, then exit.")
115 parser.add_option(
116 "-o", action="store_true", dest="print_outputs", default=False,
117 help="Print the expected output file list, then exit.")
118 parser.add_option(
119 "-x", action="store", dest="out_dir",
120 help="Intermediate build files output directory.")
121 parser.add_option(
122 "-s", action="store", dest="share_int_dir",
123 help="Shared intermediate build files output directory.")
124 parser.add_option(
125 "-b", action="store", dest="branding",
126 help="Branding type of this build.")
127 parser.add_option(
128 "-e", action="append", dest="extra_input", default=[],
129 help="Full path to an extra input pak file without the "
130 "locale suffix and \".pak\" extension.")
131 parser.add_option(
132 "--whitelist", action="store", help="Full path to the "
133 "whitelist used to filter output pak file resource IDs")
134 options, locales = parser.parse_args(argv)
135
136 if not locales:
137 parser.error('Please specificy at least one locale to process.\n')
138
139 if not (options.out_dir and options.share_int_dir):
140 parser.error('Please specify all of "-x" and "-s".\n')
141 if options.print_inputs and options.print_outputs:
142 parser.error('Please specify only one of "-i" or "-o".\n')
143
144 if options.print_inputs:
145 return quote_filenames(list_inputs(options, locales))
146
147 if options.print_outputs:
148 return quote_filenames(list_outputs(options, locales))
149
150 return repack_locales(options, locales)
151
152 if __name__ == '__main__':
153 results = DoMain(sys.argv[1:])
154 if results:
155 print results
OLDNEW
« no previous file with comments | « ios/chrome/ios_chrome_tests.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698