From ee1cd13db6ba7d0eae315c296bac5ba2a58cdde3 Mon Sep 17 00:00:00 2001 From: JP Date: Tue, 4 Jul 2023 03:38:47 -0700 Subject: [PATCH] iOS: only exclude i386 while using hermes (#38132) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Summary: - if an existing iOS project specifies `EXCLUDED_ARCHS`, these settings are overwritten by the `react_native_post_install` step as part of the Cocoapods install - closes https://github.com/facebook/react-native/issues/35544 ### Existing Behaviour - one of the functions called as part of the `react_native_post_install` step is `exclude_i386_architecture_while_using_hermes` - see [/packages/react-native/scripts/cocoapods/utils.rb](https://github.com/facebook/react-native/blob/v0.72.1/packages/react-native/scripts/cocoapods/utils.rb#L56-L69) ``` def self.exclude_i386_architecture_while_using_hermes(installer) projects = self.extract_projects(installer) # Hermes does not support `i386` architecture excluded_archs_default = self.has_pod(installer, 'hermes-engine') ? "i386" : "" projects.each do |project| project.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = excluded_archs_default end project.save() end end ``` 🐛 **However** 🐛 - this function is currently called regardless of whether or not you are **actually** using Hermes - this means existing projects that have `EXCLUDED_ARCHS` set, the existing value will be changed either to `"i386"` or a blank string ### Changed Behaviour - moved the function call inside an `if ReactNativePodsUtils.has_pod(installer, "React-hermes")` block - `EXCLUDED_ARCHS` should only be modified if needed now ## Changelog: [IOS] [FIXED] Only modify EXCLUDED_ARCHS when needed for Hermes Pull Request resolved: https://github.com/facebook/react-native/pull/38132 Reviewed By: cortinico Differential Revision: D47149618 Pulled By: cipolleschi fbshipit-source-id: cffc2a0d4bc35fa4e933d3f4df6ee85e2f5c4486 --- packages/react-native/scripts/react_native_pods.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native/scripts/react_native_pods.rb b/packages/react-native/scripts/react_native_pods.rb index debdbe69c53..e48f7f604d4 100644 --- a/packages/react-native/scripts/react_native_pods.rb +++ b/packages/react-native/scripts/react_native_pods.rb @@ -238,9 +238,9 @@ def react_native_post_install( if ReactNativePodsUtils.has_pod(installer, "React-hermes") ReactNativePodsUtils.set_gcc_preprocessor_definition_for_React_hermes(installer) + ReactNativePodsUtils.exclude_i386_architecture_while_using_hermes(installer) end - ReactNativePodsUtils.exclude_i386_architecture_while_using_hermes(installer) ReactNativePodsUtils.fix_library_search_paths(installer) ReactNativePodsUtils.update_search_paths(installer) ReactNativePodsUtils.set_node_modules_user_settings(installer, react_native_path)