Index: build/config/ios/rules.gni |
diff --git a/build/config/ios/rules.gni b/build/config/ios/rules.gni |
index d6413633829f6fa4be14ab248815c75d75f5c1b7..778a56b178186a2efe84f6bf4b2bc21cfb9cb8e9 100644 |
--- a/build/config/ios/rules.gni |
+++ b/build/config/ios/rules.gni |
@@ -420,6 +420,17 @@ template("ios_app_bundle") { |
_output_name = invoker.output_name |
} |
+ # TODO(sdefresne): some target downstream manually pack an PkgInfo, so |
+ # allow controlling the generation of the PkgInfo file via an undocumented |
+ # parameter until they are fixed. |
+ _write_pkg_info = false |
+ if (defined(invoker.write_pkg_info)) { |
+ _write_pkg_info = invoker.write_pkg_info |
+ } |
+ |
+ assert(_write_pkg_info || !_write_pkg_info, |
+ "prevents 'Assignment had no effect.' errors") |
Robert Sesek
2016/12/09 15:55:07
🙄
sdefresne
2016/12/09 16:03:06
I know.
|
+ |
_arch_executable_source = _target_name + "_arch_executable_sources" |
_arch_executable_target = _target_name + "_arch_executable" |
_lipo_executable_target = _target_name + "_executable" |
@@ -634,6 +645,38 @@ template("ios_app_bundle") { |
] |
} |
+ if (_write_pkg_info) { |
+ _create_pkg_info = target_name + "_pkg_info" |
+ action(_create_pkg_info) { |
+ forward_variables_from(invoker, [ "testonly" ]) |
+ script = "//build/config/mac/write_pkg_info.py" |
+ sources = get_target_outputs(":$_generate_info_plist") |
+ outputs = [ |
+ # Cannot name the output PkgInfo as the name will not be unique if |
+ # multiple ios_app_bundle are defined in the same BUILD.gn file. The |
+ # file is renamed in the bundle_data outputs to the correct name. |
+ "$target_gen_dir/$target_name", |
+ ] |
+ args = [ "--plist" ] + rebase_path(sources, root_build_dir) + |
+ [ "--output" ] + rebase_path(outputs, root_build_dir) |
+ deps = [ |
+ ":$_generate_info_plist", |
+ ] |
+ } |
+ |
+ _bundle_data_pkg_info = target_name + "_bundle_data_pkg_info" |
+ bundle_data(_bundle_data_pkg_info) { |
+ forward_variables_from(invoker, [ "testonly" ]) |
+ sources = get_target_outputs(":$_create_pkg_info") |
+ outputs = [ |
+ "{{bundle_resources_dir}}/PkgInfo", |
+ ] |
+ public_deps = [ |
+ ":$_create_pkg_info", |
+ ] |
+ } |
+ } |
+ |
create_signed_bundle(_target_name) { |
forward_variables_from(invoker, |
[ |
@@ -661,6 +704,9 @@ template("ios_app_bundle") { |
bundle_deps = [] |
} |
bundle_deps += [ ":$_bundle_data_info_plist" ] |
+ if (_write_pkg_info) { |
+ bundle_deps += [ ":$_bundle_data_pkg_info" ] |
+ } |
if (use_ios_simulator) { |
if (!defined(data_deps)) { |