diff --git a/packages/react-native/scripts/cocoapods/__tests__/jsengine-test.rb b/packages/react-native/scripts/cocoapods/__tests__/jsengine-test.rb index d604176dfe26b0..84ef4a6c346279 100644 --- a/packages/react-native/scripts/cocoapods/__tests__/jsengine-test.rb +++ b/packages/react-native/scripts/cocoapods/__tests__/jsengine-test.rb @@ -105,7 +105,9 @@ def test_setupHermes_whenHermesScriptSucceeds_installsPods assert_equal($podInvocation["React-jsi"][:path], "../../ReactCommon/jsi") assert_equal($podInvocation["React-hermes"][:path], "../../ReactCommon/hermes") assert_equal($podInvocation["libevent"][:version], "~> 2.1.12") - assert_equal($podInvocation["hermes-engine"][:podspec], "../../sdks/hermes/hermes-engine.podspec") + hermes_engine_pod_invocation = $podInvocation["hermes-engine"] + assert_equal(hermes_engine_pod_invocation[:podspec], "../../sdks/hermes-engine/hermes-engine.podspec") + assert_equal(hermes_engine_pod_invocation[:tag], "") end def test_setupHermes_installsPods_installsFabricSubspecWhenFabricEnabled @@ -118,7 +120,9 @@ def test_setupHermes_installsPods_installsFabricSubspecWhenFabricEnabled # Assert assert_equal($podInvocationCount, 4) assert_equal($podInvocation["React-jsi"][:path], "../../ReactCommon/jsi") - assert_equal($podInvocation["hermes-engine"][:podspec], "../../sdks/hermes/hermes-engine.podspec") + hermes_engine_pod_invocation = $podInvocation["hermes-engine"] + assert_equal(hermes_engine_pod_invocation[:podspec], "../../sdks/hermes-engine/hermes-engine.podspec") + assert_equal(hermes_engine_pod_invocation[:tag], "") assert_equal($podInvocation["React-hermes"][:path], "../../ReactCommon/hermes") assert_equal($podInvocation["libevent"][:version], "~> 2.1.12") end diff --git a/packages/react-native/scripts/cocoapods/__tests__/test_utils/podSpy.rb b/packages/react-native/scripts/cocoapods/__tests__/test_utils/podSpy.rb index 76da694cf85f73..0c777f83fdcb19 100644 --- a/packages/react-native/scripts/cocoapods/__tests__/test_utils/podSpy.rb +++ b/packages/react-native/scripts/cocoapods/__tests__/test_utils/podSpy.rb @@ -26,7 +26,7 @@ def podSpy_cleanUp $podInvocationCount = 0 end -def pod(name, version = nil, path: nil, configurations: nil, modular_headers: nil, podspec: nil) +def pod(name, version = nil, path: nil, configurations: nil, modular_headers: nil, podspec: nil, tag: nil) $podInvocationCount += 1 params = {} if version != nil then params[:version] = version end @@ -34,5 +34,6 @@ def pod(name, version = nil, path: nil, configurations: nil, modular_headers: ni if configurations != nil then params[:configurations] = configurations end if modular_headers != nil then params[:modular_headers] = modular_headers end if podspec != nil then params[:podspec] = podspec end + if tag != nil then params[:tag] = tag end $podInvocation[name] = params end diff --git a/packages/react-native/scripts/cocoapods/jsengine.rb b/packages/react-native/scripts/cocoapods/jsengine.rb index 25ed410bb4c9d3..e8d9349548840c 100644 --- a/packages/react-native/scripts/cocoapods/jsengine.rb +++ b/packages/react-native/scripts/cocoapods/jsengine.rb @@ -30,7 +30,11 @@ def setup_hermes!(react_native_path: "../node_modules/react-native", fabric_enab abort unless prep_status == 0 pod 'React-jsi', :path => "#{react_native_path}/ReactCommon/jsi" - pod 'hermes-engine', :podspec => "#{react_native_path}/sdks/hermes/hermes-engine.podspec" + # This `:tag => hermestag` below is only to tell CocoaPods to update hermes-engine when React Native version changes. + # We have custom logic to compute the source for hermes-engine. See sdks/hermes-engine/* + hermestag_file = File.join(react_native_path, "sdks", ".hermesversion") + hermestag = File.exist?(hermestag_file) ? File.read().strip : '' + pod 'hermes-engine', :podspec => "#{react_native_path}/sdks/hermes-engine/hermes-engine.podspec", :tag => hermestag pod 'React-hermes', :path => "#{react_native_path}/ReactCommon/hermes" pod 'libevent', '~> 2.1.12' end