From b544cacc3bcab1dad53e0bab969b2594a64c85e2 Mon Sep 17 00:00:00 2001 From: Sylvain Defresne Date: Fri, 8 Oct 2021 12:16:01 +0000 Subject: [PATCH] [ios][mac] Prefer invoker extra_substitutions to template ones The plist substitutions are evaluated in order they are passed on the command line. The substitutions passed by the invoker should have priority over those defined in the template (otherwise there would be no way to override the substitutions from a template). This mean that if the same `key=value` is defined multiple time on the command-line, the last pair will be used by the script. To give the preference to the substitutions defined by the invoker, do not use the `forward_variable_from(invoker, ...)`. Instead set the value in the template, and if defined in the invoker, append them. Bug: 1257954 Change-Id: I19bed9a1424f6e7c0394fd437381fc2067c97ace Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3211733 Reviewed-by: Olivier Robin Commit-Queue: Olivier Robin Commit-Queue: Sylvain Defresne Auto-Submit: Sylvain Defresne Cr-Commit-Position: refs/heads/main@{#929648} --- build/config/ios/rules.gni | 25 ++++++++----------- build/config/mac/rules.gni | 9 +++---- .../test/earl_grey2/chrome_ios_eg2_test.gni | 5 +--- 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/build/config/ios/rules.gni b/build/config/ios/rules.gni index b0ab6f59d92953..2ab3cda0b9da41 100644 --- a/build/config/ios/rules.gni +++ b/build/config/ios/rules.gni @@ -533,11 +533,7 @@ template("ios_info_plist") { apple_info_plist(target_name) { format = "binary1" - extra_substitutions = [] - if (defined(invoker.extra_substitutions)) { - extra_substitutions = invoker.extra_substitutions - } - extra_substitutions += [ + extra_substitutions = [ "IOS_BUNDLE_ID_PREFIX=$ios_app_bundle_id_prefix", "IOS_PLATFORM_BUILD=$ios_platform_build", "IOS_PLATFORM_NAME=$ios_sdk_name", @@ -550,6 +546,9 @@ template("ios_info_plist") { "XCODE_BUILD=$xcode_build", "XCODE_VERSION=$xcode_version", ] + if (defined(invoker.extra_substitutions)) { + extra_substitutions += invoker.extra_substitutions + } plist_templates = [ "//build/config/ios/BuildInfo.plist", _info_plist, @@ -830,18 +829,16 @@ template("ios_app_bundle") { ios_info_plist(_generate_info_plist) { forward_variables_from(invoker, [ - "extra_substitutions", "info_plist", "info_plist_target", ]) executable_name = _output_name - if (!defined(extra_substitutions)) { - extra_substitutions = [] + extra_substitutions = [ "BUNDLE_IDENTIFIER=$_bundle_identifier" ] + if (defined(invoker.extra_substitutions)) { + extra_substitutions += invoker.extra_substitutions } - - extra_substitutions += [ "BUNDLE_IDENTIFIER=$_bundle_identifier" ] } if (!is_fat_secondary_toolchain) { @@ -1557,16 +1554,14 @@ template("ios_framework_bundle") { executable_name = _output_name forward_variables_from(invoker, [ - "extra_substitutions", "info_plist", "info_plist_target", ]) - if (!defined(extra_substitutions)) { - extra_substitutions = [] + extra_substitutions = [ "BUNDLE_IDENTIFIER=$_bundle_identifier" ] + if (defined(invoker.extra_substitutions)) { + extra_substitutions += invoker.extra_substitutions } - - extra_substitutions += [ "BUNDLE_IDENTIFIER=$_bundle_identifier" ] } bundle_data(_info_plist_bundle) { diff --git a/build/config/mac/rules.gni b/build/config/mac/rules.gni index 7753a97fe753a3..03073f830401c4 100644 --- a/build/config/mac/rules.gni +++ b/build/config/mac/rules.gni @@ -40,11 +40,7 @@ template("mac_info_plist") { apple_info_plist(target_name) { format = "xml1" - extra_substitutions = [] - if (defined(invoker.extra_substitutions)) { - extra_substitutions = invoker.extra_substitutions - } - extra_substitutions += [ + extra_substitutions = [ "MAC_SDK_BUILD=$mac_sdk_version", "MAC_SDK_NAME=$mac_sdk_name$mac_sdk_version", "MACOSX_DEPLOYMENT_TARGET=$mac_deployment_target", @@ -52,6 +48,9 @@ template("mac_info_plist") { "XCODE_BUILD=$xcode_build", "XCODE_VERSION=$xcode_version", ] + if (defined(invoker.extra_substitutions)) { + extra_substitutions += invoker.extra_substitutions + } plist_templates = [ "//build/config/mac/BuildInfo.plist", _info_plist, diff --git a/ios/chrome/test/earl_grey2/chrome_ios_eg2_test.gni b/ios/chrome/test/earl_grey2/chrome_ios_eg2_test.gni index 840de3fd1639da..f3f9eaf0c0cf40 100644 --- a/ios/chrome/test/earl_grey2/chrome_ios_eg2_test.gni +++ b/ios/chrome/test/earl_grey2/chrome_ios_eg2_test.gni @@ -131,10 +131,7 @@ template("chrome_ios_eg2_test_app_host") { ios_application_icons_target, ] - if (!defined(extra_substitutions)) { - extra_substitutions = [] - } - extra_substitutions += [ + extra_substitutions = [ "CHROMIUM_BUNDLE_ID=$bundle_identifier", "CHROMIUM_HANDOFF_ID=$chromium_handoff_id", "CHROMIUM_SHORT_NAME=$target_name",