Skip to content

Commit 7bdac04

Browse files
author
Riccardo Cipolleschi
committed
Update scripts to make the replace work
1 parent a0c7218 commit 7bdac04

File tree

5 files changed

+89
-129
lines changed

5 files changed

+89
-129
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ DerivedData
2121
*.xcuserstate
2222
project.xcworkspace
2323
**/.xcode.env.local
24+
/poackages/react-native/sdks/downloads/
2425

2526
# Gradle
2627
/build/

packages/react-native/sdks/hermes-engine/hermes-engine.podspec

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ react_native_path = File.join(__dir__, "..", "..")
1111
# package.json
1212
package = JSON.parse(File.read(File.join(react_native_path, "package.json")))
1313
version = package['version']
14-
version = "0.72.0-rc.5"
1514

1615
# sdks/.hermesversion
1716
hermestag_file = File.join(react_native_path, "sdks", ".hermesversion")
@@ -57,19 +56,19 @@ Pod::Spec.new do |spec|
5756
end
5857

5958

60-
# Right now, even reinstalling pods with the PRODUCTION flag turned on, does not change the version of hermes that is downloaded
61-
# To remove the PRODUCTION flag, we want to download the right version of hermes on the flight
62-
# we do so in a pre-build script we invoke from the Xcode build pipeline
63-
# We use this only for Apps created using the template. RNTester and Nightlies should not be used to build for Release.
64-
# We ignore this if we provide a specific tarball: the assumption here is that if you are providing a tarball, is because you want to
65-
# test something specific for that tarball.
59+
# To remove the PRODUCTION flag, we want to use the right version of hermes based on the configuration choosen in Xcode
60+
# We do so in a pre-build script we invoke from the Xcode build script pipeline: we check the Configuration and we
61+
# replace the hermes-engine before building and linking the app.
62+
# We use this approach only for Apps created using the template: RNTester and Nightlies should not be used to build for Release.
63+
# If a specific Hermes tarball is provided, that has priority on this logic. If a tarball is provided, is probably because there is
64+
# something specific in that tarball that needs to be tested.
6665
if source[:http].include?('https://repo1.maven.org/')
6766
spec.script_phase = {
68-
:name => "[Hermes] Download Hermes for the right configuration, if needed",
67+
:name => "[Hermes] Replace Hermes for the right configuration, if needed",
6968
:execution_position => :before_compile,
7069
:script => <<-EOS
7170
. "$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh"
72-
"$NODE_BINARY" "$REACT_NATIVE_PATH/sdks/hermes-engine/utils/replace_hermes_version.js" -c "$CONFIGURATION" -r "#{version}"
71+
"$NODE_BINARY" "$REACT_NATIVE_PATH/sdks/hermes-engine/utils/replace_hermes_version.js" -c "$CONFIGURATION" -r "#{version}" -p "$REACT_NATIVE_PATH"
7372
EOS
7473
}
7574
end

packages/react-native/sdks/hermes-engine/hermes-utils.rb

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,25 +33,25 @@ def abort_if_invalid_tarball_provided!()
3333
def compute_hermes_source(build_from_source, hermestag_file, git, version, react_native_path)
3434
source = {}
3535

36-
# if ENV.has_key?('HERMES_ENGINE_TARBALL_PATH')
37-
# use_tarball(source)
38-
# elsif ENV.has_key?('HERMES_COMMIT')
39-
# build_hermes_from_commit(source, git, ENV['HERMES_COMMIT'])
40-
# elsif build_from_source
41-
# if File.exist?(hermestag_file)
42-
# build_from_tagfile(source, git, hermestag_file)
43-
# else
44-
# build_hermes_from_source(source, git)
45-
# end
46-
# elsif hermes_artifact_exists(release_tarball_url(version, :debug))
36+
if ENV.has_key?('HERMES_ENGINE_TARBALL_PATH')
37+
use_tarball(source)
38+
elsif ENV.has_key?('HERMES_COMMIT')
39+
build_hermes_from_commit(source, git, ENV['HERMES_COMMIT'])
40+
elsif build_from_source
41+
if File.exist?(hermestag_file)
42+
build_from_tagfile(source, git, hermestag_file)
43+
else
44+
build_hermes_from_source(source, git)
45+
end
46+
elsif hermes_artifact_exists(release_tarball_url(version, :debug))
4747
use_release_tarball(source, version, :debug)
4848
download_stable_hermes(react_native_path, version, :debug)
4949
download_stable_hermes(react_native_path, version, :release)
50-
# elsif hermes_artifact_exists(nightly_tarball_url(version).gsub("\\", ""))
51-
# use_nightly_tarball(source, react_native_path, version)
52-
# else
53-
# build_hermes_from_source(source, git)
54-
# end
50+
elsif hermes_artifact_exists(nightly_tarball_url(version).gsub("\\", ""))
51+
use_nightly_tarball(source, react_native_path, version)
52+
else
53+
build_hermes_from_source(source, git)
54+
end
5555

5656
return source
5757
end

packages/react-native/sdks/hermes-engine/utils/replace_hermes_version.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
const yargs = require('yargs');
1313
const fs = require('fs');
14-
const path = require('path');
1514
const {execSync} = require('child_process');
1615

1716
const LAST_BUILD_FILENAME = '.last_build_configuration';
@@ -33,7 +32,7 @@ function shouldReplaceHermesConfiguration(configuration) {
3332

3433
if (fileExists) {
3534
console.log(`Found ${LAST_BUILD_FILENAME} file`);
36-
const oldConfiguration = fs.readFileSync(LAST_BUILD_FILENAME);
35+
const oldConfiguration = fs.readFileSync(LAST_BUILD_FILENAME).toString();
3736
if (oldConfiguration === configuration) {
3837
console.log('No need to download a new build of Hermes!');
3938
return false;
@@ -54,7 +53,7 @@ function shouldReplaceHermesConfiguration(configuration) {
5453
function replaceHermesConfiguration(configuration, version, reactNativePath) {
5554
const tarballURLPath = `${reactNativePath}/sdks/downloads/hermes-ios-${version}-${configuration}.tar.gz`;
5655

57-
const finalLocation = 'Pods/hermes-engine';
56+
const finalLocation = 'hermes-engine';
5857
console.log('Preparing the final location');
5958
fs.rmSync(finalLocation, {force: true, recursive: true});
6059
fs.mkdirSync(finalLocation, {recursive: true});
@@ -77,6 +76,7 @@ function main(configuration, version, reactNativePath) {
7776

7877
replaceHermesConfiguration(configuration, version, reactNativePath);
7978
updateLastBuildConfiguration(configuration);
79+
console.log('Done replacing hermes-engine');
8080
}
8181

8282
// This script is executed in the Pods folder, which is usually not synched to Github, so it should be ok
@@ -101,5 +101,4 @@ const configuration = argv.configuration;
101101
const version = argv.reactNativeVersion;
102102
const reactNativePath = argv.reactNativePath;
103103

104-
throw new Error(`React native path is: ${reactNativePath}`);
105104
main(configuration, version, reactNativePath);

packages/rn-tester/Podfile.lock

Lines changed: 61 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@ PODS:
33
- CocoaAsyncSocket (7.6.5)
44
- DoubleConversion (1.1.6)
55
- FBLazyVector (1000.0.0)
6+
- FBReactNativeSpec (1000.0.0):
7+
- RCT-Folly (= 2021.07.22.00)
8+
- RCTRequired (= 1000.0.0)
9+
- RCTTypeSafety (= 1000.0.0)
10+
- React-Core (= 1000.0.0)
11+
- React-jsi (= 1000.0.0)
12+
- ReactCommon/turbomodule/core (= 1000.0.0)
613
- Flipper (0.182.0):
714
- Flipper-Folly (~> 2.6)
815
- Flipper-Boost-iOSX (1.76.0.1.11)
@@ -63,42 +70,14 @@ PODS:
6370
- FlipperKit/FlipperKitNetworkPlugin
6471
- fmt (6.2.1)
6572
- glog (0.3.5)
66-
- hermes-engine (0.72.0-rc.5):
67-
- hermes-engine/Pre-built (= 0.72.0-rc.5)
68-
- hermes-engine/Pre-built (0.72.0-rc.5)
73+
- hermes-engine (1000.0.0):
74+
- hermes-engine/Hermes (= 1000.0.0)
75+
- hermes-engine/JSI (= 1000.0.0)
76+
- hermes-engine/Public (= 1000.0.0)
77+
- hermes-engine/Hermes (1000.0.0)
78+
- hermes-engine/JSI (1000.0.0)
79+
- hermes-engine/Public (1000.0.0)
6980
- libevent (2.1.12)
70-
- MyNativeView (0.0.1):
71-
- glog
72-
- hermes-engine
73-
- RCT-Folly (= 2021.07.22.00)
74-
- RCTRequired
75-
- RCTTypeSafety
76-
- React-Codegen
77-
- React-Core
78-
- React-debug
79-
- React-Fabric
80-
- React-graphics
81-
- React-NativeModulesApple
82-
- React-RCTFabric
83-
- ReactCommon/turbomodule/bridging
84-
- ReactCommon/turbomodule/core
85-
- Yoga
86-
- NativeCxxModuleExample (0.0.1):
87-
- glog
88-
- hermes-engine
89-
- RCT-Folly (= 2021.07.22.00)
90-
- RCTRequired
91-
- RCTTypeSafety
92-
- React-Codegen
93-
- React-Core
94-
- React-debug
95-
- React-Fabric
96-
- React-graphics
97-
- React-NativeModulesApple
98-
- React-RCTFabric
99-
- ReactCommon/turbomodule/bridging
100-
- ReactCommon/turbomodule/core
101-
- Yoga
10281
- OCMock (3.9.1)
10382
- OpenSSL-Universal (1.1.1100)
10483
- RCT-Folly (2021.07.22.00):
@@ -144,6 +123,7 @@ PODS:
144123
- React-callinvoker (1000.0.0)
145124
- React-Codegen (1000.0.0):
146125
- DoubleConversion
126+
- FBReactNativeSpec
147127
- glog
148128
- hermes-engine
149129
- RCT-Folly
@@ -156,6 +136,7 @@ PODS:
156136
- React-jsi
157137
- React-jsiexecutor
158138
- React-NativeModulesApple
139+
- React-rncore
159140
- ReactCommon/turbomodule/bridging
160141
- ReactCommon/turbomodule/core
161142
- React-Core (1000.0.0):
@@ -955,12 +936,8 @@ PODS:
955936
- RCTTypeSafety
956937
- React-Core
957938
- React-CoreModules
958-
- React-debug
959-
- React-Fabric
960-
- React-graphics
961939
- React-hermes
962940
- React-NativeModulesApple
963-
- React-RCTFabric
964941
- React-RCTImage
965942
- React-RCTNetwork
966943
- ReactCommon/turbomodule/core
@@ -1067,20 +1044,8 @@ PODS:
10671044
- React-perflogger (= 1000.0.0)
10681045
- ScreenshotManager (0.0.1):
10691046
- glog
1070-
- hermes-engine
10711047
- RCT-Folly (= 2021.07.22.00)
1072-
- RCTRequired
1073-
- RCTTypeSafety
1074-
- React-Codegen
10751048
- React-Core
1076-
- React-debug
1077-
- React-Fabric
1078-
- React-graphics
1079-
- React-NativeModulesApple
1080-
- React-RCTFabric
1081-
- ReactCommon/turbomodule/bridging
1082-
- ReactCommon/turbomodule/core
1083-
- Yoga
10841049
- SocketRocket (0.6.0)
10851050
- Yoga (1.14.0)
10861051
- YogaKit (1.18.1):
@@ -1090,6 +1055,7 @@ DEPENDENCIES:
10901055
- boost (from `../react-native/third-party-podspecs/boost.podspec`)
10911056
- DoubleConversion (from `../react-native/third-party-podspecs/DoubleConversion.podspec`)
10921057
- FBLazyVector (from `../react-native/Libraries/FBLazyVector`)
1058+
- FBReactNativeSpec (from `../react-native/React/FBReactNativeSpec`)
10931059
- Flipper (= 0.182.0)
10941060
- Flipper-Boost-iOSX (= 1.76.0.1.11)
10951061
- Flipper-DoubleConversion (= 3.2.0.1)
@@ -1113,8 +1079,6 @@ DEPENDENCIES:
11131079
- glog (from `../react-native/third-party-podspecs/glog.podspec`)
11141080
- hermes-engine (from `../react-native/sdks/hermes-engine/hermes-engine.podspec`)
11151081
- libevent (~> 2.1.12)
1116-
- MyNativeView (from `NativeComponentExample`)
1117-
- NativeCxxModuleExample (from `NativeCxxModuleExample`)
11181082
- OCMock (~> 3.9.1)
11191083
- OpenSSL-Universal (= 1.1.1100)
11201084
- RCT-Folly (from `../react-native/third-party-podspecs/RCT-Folly.podspec`)
@@ -1186,15 +1150,13 @@ EXTERNAL SOURCES:
11861150
:podspec: "../react-native/third-party-podspecs/DoubleConversion.podspec"
11871151
FBLazyVector:
11881152
:path: "../react-native/Libraries/FBLazyVector"
1153+
FBReactNativeSpec:
1154+
:path: "../react-native/React/FBReactNativeSpec"
11891155
glog:
11901156
:podspec: "../react-native/third-party-podspecs/glog.podspec"
11911157
hermes-engine:
11921158
:podspec: "../react-native/sdks/hermes-engine/hermes-engine.podspec"
11931159
:tag: ''
1194-
MyNativeView:
1195-
:path: NativeComponentExample
1196-
NativeCxxModuleExample:
1197-
:path: NativeCxxModuleExample
11981160
RCT-Folly:
11991161
:podspec: "../react-native/third-party-podspecs/RCT-Folly.podspec"
12001162
RCTRequired:
@@ -1280,7 +1242,8 @@ SPEC CHECKSUMS:
12801242
boost: 57d2868c099736d80fcd648bf211b4431e51a558
12811243
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
12821244
DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953
1283-
FBLazyVector: ce0a0f683c295a05eeddadf169bfb187a30c8a15
1245+
FBLazyVector: ca580232ba491b6601ee57bcdc874fda97a459a5
1246+
FBReactNativeSpec: 4db5acd51db3de49e59e3740f03c94ce1282a31e
12841247
Flipper: 6edb735e6c3e332975d1b17956bcc584eccf5818
12851248
Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
12861249
Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30
@@ -1291,53 +1254,51 @@ SPEC CHECKSUMS:
12911254
FlipperKit: 2efad7007d6745a3f95e4034d547be637f89d3f6
12921255
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
12931256
glog: 99bd064df01718db56b8f75e6b5ea3051c7dad0a
1294-
hermes-engine: 5d3bddc6ca9bcba8b1e1e877ebd227dbd1fe9e49
1257+
hermes-engine: 4ea4b12e82d2ccfd03b29e3d9191b716b4c8f476
12951258
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
1296-
MyNativeView: e2956110c00531b1b41fdbf74eded28791aba0f1
1297-
NativeCxxModuleExample: 91285ec84c1e3b83d5baf8c3fa9945f4b54f8408
12981259
OCMock: 9491e4bec59e0b267d52a9184ff5605995e74be8
12991260
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
13001261
RCT-Folly: b0d1393cb3763d71efca99db314c65f0072eb0fe
1301-
RCTRequired: 1e51a9c5c103aaaab4c8f1dc404712dda9f22143
1302-
RCTTypeSafety: 667668ed7cd98f03221c264f46c7a70e8ec44efa
1303-
React: af6227fe439626f656a55d07ea9f4ded581699fe
1304-
React-callinvoker: 01fd517a8533255bd17c729abbc42c1ca80012f6
1305-
React-Codegen: 6e493bad3dbff388764b998d7bb1f4b1fcf317ea
1306-
React-Core: 626d6c3a2c8df3944e8d617acca74876be8d732f
1307-
React-CoreModules: 8e1aa391ce8da61c55dd23cd0401322a5c700b48
1308-
React-cxxreact: 0912033f406d3797cb2d1de941225a89faef362e
1309-
React-debug: 737e1306e60b020e293a053f7f130e16cbe8b875
1310-
React-Fabric: 54918b8705fa2f97bca3c8236c54dfa95626916d
1311-
React-FabricImage: e6bf1edddc77df4909da05849037d5a2c0fc29fc
1312-
React-graphics: 330b264c23f1b0195a6d61cc0eabe8202e60eec6
1313-
React-hermes: 4dcedbb1f1ef1443b513c0a3652b38e8b59d707c
1314-
React-ImageManager: 5eaf68104bfed36c9e18bce63ba9289b205afb0b
1315-
React-jsi: 48b2a6ac88b5937f39bc0b0cbc356b43f29f3678
1316-
React-jsiexecutor: 77a31f9ea6cc88e340475d5fc78f79e27b792e0a
1317-
React-jsinspector: dd4640f8172269a835f645f1ab5ef7a61d623c02
1318-
React-logger: 508e72b776fedc9aa54a116bc1d8c838db876a4b
1319-
React-NativeModulesApple: 970c56ced16bf211aa2e36f98462f446bc7cf1bb
1320-
React-perflogger: 9438f852537122d4ce08c66e592cc4c746482734
1321-
React-RCTActionSheet: 824960d9ef686109558bfc29dbdd556b24a06143
1322-
React-RCTAnimation: 29cc6192b30fbd869e021fb638a710dfad95afd8
1323-
React-RCTAppDelegate: ef3f4ee30d887f2c89ba7c02b7c138a1c3f86d8c
1324-
React-RCTBlob: 6cc5676dad98a9a2835546590144add15b3ee1a8
1325-
React-RCTFabric: 6b2ded01b5ffe39d79a45b93f67f7e6edc24e4d0
1326-
React-RCTImage: b504f994eace0c306f540a6afcecd2194759d27b
1327-
React-RCTLinking: 8c0f9d665976bd41b3ab694d38bcc64bdf6a848a
1328-
React-RCTNetwork: 66132e93ecc88557339636f673b85582a9dbb21f
1329-
React-RCTPushNotification: 9428069e65663e4450790a4f6e895f8643bea1ea
1330-
React-RCTSettings: 9b63f31b63996bb046d126e69022d1d726dabba8
1331-
React-RCTTest: 2d34800e40a1ed5861598cbd0985e3fe0cb7209e
1332-
React-RCTText: 0e777d9735c861071ea2b835a419711ed0983de6
1333-
React-RCTVibration: e0eed0f3eb2be4c01e86df0fddeaf17695b47dd1
1334-
React-rncore: a0f8088a7b36a5844a2e2ee3fdace09044bd188f
1335-
React-runtimeexecutor: 48b3ed380f29b413bafdb478779bed7a37fd6409
1336-
ReactCommon: a37b19dad97aeac0659494972b43e93f29bf95c5
1337-
ReactCommon-Samples: 2b3af3a301d591ac8030369df680aeddc29f0643
1338-
ScreenshotManager: 100bbe5a077f5b89fece87c6529d17b96a9b9349
1262+
RCTRequired: 5394bb1f71591633e1158bdf0534206cb5ccbeb5
1263+
RCTTypeSafety: ba46a7f654566047a9358f2e74b2eafd97ccba9b
1264+
React: 8a004085056a81c7820f65a8bc0a92e1f7ef6878
1265+
React-callinvoker: c2b59f2cbf0d8bcdc18b33f53e097907c12a149c
1266+
React-Codegen: 9ecf53f804f4d1d2a5d29bb2154e22a30c381f81
1267+
React-Core: d730664c1ee918190a0c26bbf5c993f57e46ff5d
1268+
React-CoreModules: 390071843c203f516ec8dbc1c9ce1a815d35e908
1269+
React-cxxreact: 39409697255baeb1ac42e436daee59913036109d
1270+
React-debug: d69fb5b4e3a47e8d5f8fdb01c1ec8983b7c1afec
1271+
React-Fabric: b19750f6cd0fae4e87173b1c2b6f9c94621b6679
1272+
React-FabricImage: dc031099e2ae4734b70f1f66b7edf4f1cc40335a
1273+
React-graphics: e2c5d8a680cd5db24ab87756f688ecd24fd4628e
1274+
React-hermes: 4e22050b18127c27759488b703c0a9d5e6a341ba
1275+
React-ImageManager: f6792f5987f85271cbbc31e99dc16e63fd82fccb
1276+
React-jsi: 57f6f99db8d596dd599450f921b77229616e983b
1277+
React-jsiexecutor: 05d7b49ae31548ed320bb17d97bf5d648406278b
1278+
React-jsinspector: 03d477e4dd236c5411ef9a2f8c52cc2951ab6149
1279+
React-logger: adce225eaf6d94e0e2568ba586c3f6e857fc8862
1280+
React-NativeModulesApple: 67bb14d796e45adad89238b96a26b0f0daa5fa72
1281+
React-perflogger: 8889aa68bda6d4cb649f890677d36c7b1eadfcd9
1282+
React-RCTActionSheet: f5f5aa4079e8316562171fdf6346883d79fc51b1
1283+
React-RCTAnimation: 0a3247bc23fd71f8eff8ccdb1bdeebbcb1de8af3
1284+
React-RCTAppDelegate: 4d24c5365e3581fe22a05f0fadf5595b18d8c456
1285+
React-RCTBlob: 484c22d88cbfc3d3441c1e54686f7793eaf30fa3
1286+
React-RCTFabric: cd58dfa8a168d41363f84e78abe2d71d081581fb
1287+
React-RCTImage: 65ef7ecc938dea1decadd876448c47bc71e9d60b
1288+
React-RCTLinking: 100b9d0a895d95ea1e59e62375fe9b95d83fe031
1289+
React-RCTNetwork: 710d044df7ddbe7be1ecae2608fc2ae2c5096c9a
1290+
React-RCTPushNotification: 502720de4bfd05358169c10e1ab791a794f550b0
1291+
React-RCTSettings: f0f73ba95d32777386c294572c0e7f757bd33e08
1292+
React-RCTTest: 6978788114214cf1f3004c04c5c2b882d9c0c0ea
1293+
React-RCTText: a64c63e34beec7c9893042a200d48accde4a406e
1294+
React-RCTVibration: e16f969546e42256468f7681d6d6ec3d2cab4524
1295+
React-rncore: 4b86b32071e99b892eefaeee55dcec300e3e9194
1296+
React-runtimeexecutor: 5499cb980788a75a5a474ab07b480e73f87e76b0
1297+
ReactCommon: ed5e5ad966bbc436641a15fedb1b20dd68a2d147
1298+
ReactCommon-Samples: cc63a8216d5e2090cc82c9427cd8d6675bef4d0f
1299+
ScreenshotManager: d39b964a374e5012e2b8c143e29ead86b1da6a3c
13391300
SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608
1340-
Yoga: 002f17ff9c844e623e187baf5d126b582f998ab8
1301+
Yoga: 456e136b8de9c5360b609bd3238656cea243958f
13411302
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
13421303

13431304
PODFILE CHECKSUM: bdab6add69d555774de227d7119a8f5ae02a670e

0 commit comments

Comments
 (0)