Skip to content

Commit 9a0d1e1

Browse files
authored
fix(visionos): fix build failing when Hermes is enabled (#2308)
1 parent 8f51846 commit 9a0d1e1

File tree

3 files changed

+37
-6
lines changed

3 files changed

+37
-6
lines changed

.rubocop.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ require:
44
AllCops:
55
NewCops: enable
66
Exclude:
7+
- "**/Pods/**/*"
78
- "**/node_modules/**/*"
89
- "vendor/bundle/**/*"
910
TargetRubyVersion: 2.6

ios/pod_helpers.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ def use_hermes?(options)
102102
use_hermes = ENV.fetch('USE_HERMES', nil)
103103
return use_hermes == '1' unless use_hermes.nil?
104104

105+
# Hermes prebuilds for visionOS was introduced in 0.76
106+
is_visionos = options[:path].end_with?('react-native-visionos')
107+
ENV['RCT_BUILD_HERMES_FROM_SOURCE'] = 'true' if is_visionos && options[:version] < v(0, 76, 0)
108+
105109
options[:hermes_enabled] == true
106110
end
107111

test/test_pod_helpers.rb

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,21 +83,47 @@ def test_new_architecture_enabled?
8383
end
8484

8585
def test_use_hermes?
86+
options = { path: '../node_modules/react-native' }
87+
88+
ENV.delete('RCT_BUILD_HERMES_FROM_SOURCE')
8689
ENV.delete('USE_HERMES')
8790

88-
refute(use_hermes?({}))
89-
assert(use_hermes?({ hermes_enabled: true }))
91+
refute(use_hermes?(options))
92+
assert(use_hermes?({ **options, hermes_enabled: true }))
93+
refute(ENV.fetch('RCT_BUILD_HERMES_FROM_SOURCE', nil))
9094

9195
ENV['USE_HERMES'] = '0'
9296

93-
refute(use_hermes?({}))
94-
refute(use_hermes?({ hermes_enabled: true }))
97+
refute(use_hermes?(options))
98+
refute(use_hermes?({ **options, hermes_enabled: true }))
99+
refute(ENV.fetch('RCT_BUILD_HERMES_FROM_SOURCE', nil))
95100

96101
ENV['USE_HERMES'] = '1'
97102

98-
assert(use_hermes?({}))
99-
assert(use_hermes?({ hermes_enabled: true }))
103+
assert(use_hermes?(options))
104+
assert(use_hermes?({ **options, hermes_enabled: true }))
105+
refute(ENV.fetch('RCT_BUILD_HERMES_FROM_SOURCE', nil))
106+
107+
ENV.delete('RCT_BUILD_HERMES_FROM_SOURCE')
108+
ENV.delete('USE_HERMES')
109+
end
110+
111+
def test_use_hermes_visionos?
112+
options = {
113+
path: '../node_modules/@callstack/react-native-visionos',
114+
hermes_enabled: true,
115+
}
116+
117+
ENV.delete('RCT_BUILD_HERMES_FROM_SOURCE')
118+
ENV.delete('USE_HERMES')
119+
120+
assert(use_hermes?({ **options, version: v(0, 76, 0) }))
121+
refute(ENV.fetch('RCT_BUILD_HERMES_FROM_SOURCE', nil))
122+
123+
assert(use_hermes?({ **options, version: v(0, 75, 0) }))
124+
assert_equal('true', ENV.fetch('RCT_BUILD_HERMES_FROM_SOURCE'))
100125

126+
ENV.delete('RCT_BUILD_HERMES_FROM_SOURCE')
101127
ENV.delete('USE_HERMES')
102128
end
103129

0 commit comments

Comments
 (0)