Skip to content

Commit 78b163f

Browse files
committed
Consolidate Hermes version files and simplify JS release scripts
Remove dual .hermesversion/.hermesv1version tag files — only .hermesversion remains. Simplify hermes-utils.js to single-tag operations, release scripts to single-version workflows, and bump-hermes-version.js to single Hermes. Remove legacy branch handling from release-hermes-for-branch-cut.js.
1 parent 3b672ef commit 78b163f

6 files changed

Lines changed: 59 additions & 211 deletions

File tree

packages/react-native/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@
128128
"scripts/xcode/ccache.conf",
129129
"scripts/xcode/with-environment.sh",
130130
"sdks/.hermesversion",
131-
"sdks/.hermesv1version",
132131
"sdks/hermes-engine",
133132
"sdks/hermesc",
134133
"settings.gradle.kts",
@@ -176,7 +175,7 @@
176175
"base64-js": "^1.5.1",
177176
"commander": "^12.0.0",
178177
"flow-enums-runtime": "^0.0.6",
179-
"hermes-compiler": "0.0.0",
178+
"hermes-compiler": "250829098.0.13",
180179
"invariant": "^2.2.4",
181180
"memoize-one": "^5.0.0",
182181
"metro-runtime": "^0.84.3",

packages/react-native/scripts/hermes/__tests__/hermes-utils-test.js

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,12 @@
1010

1111
import * as path from 'path';
1212

13-
const {
14-
readHermesTag,
15-
readHermesV1Tag,
16-
setHermesTag,
17-
} = require('../hermes-utils');
13+
const {readHermesTag, setHermesTag} = require('../hermes-utils');
1814
// $FlowFixMe[untyped-import] (OSS) memfs
1915
const {memfs} = require('memfs');
2016

2117
const hermesTag =
2218
'hermes-2022-04-28-RNv0.69.0-15d07c2edd29a4ea0b8f15ab0588a0c1adb1200f';
23-
const hermesV1Tag = '250829098.0.0';
2419
const ROOT_DIR = path.normalize(path.join(__dirname, '../../..'));
2520
const SDKS_DIR = path.join(ROOT_DIR, 'sdks');
2621

@@ -61,45 +56,19 @@ describe('hermes-utils', () => {
6156
});
6257
});
6358

64-
describe('readHermesV1Tag', () => {
65-
it('should throw if .hermesv1version does not exist', () => {
66-
expect(() => {
67-
readHermesV1Tag();
68-
}).toThrow('[Hermes] .hermesv1version does not exist.');
69-
});
70-
it('should fail if hermes v1 tag is empty', () => {
71-
fs.writeFileSync(path.join(SDKS_DIR, '.hermesv1version'), '');
72-
expect(() => {
73-
readHermesV1Tag();
74-
}).toThrow('[Hermes] .hermesv1version file is empty.');
75-
});
76-
it('should return tag from .hermesv1version if file exists', () => {
77-
fs.writeFileSync(path.join(SDKS_DIR, '.hermesv1version'), hermesV1Tag);
78-
expect(readHermesV1Tag()).toEqual(hermesV1Tag);
79-
});
80-
});
81-
8259
describe('setHermesTag', () => {
8360
it('should write tag to .hermesversion file', async () => {
84-
await setHermesTag(hermesTag, hermesV1Tag);
61+
await setHermesTag(hermesTag);
8562
expect(
8663
fs.readFileSync(path.join(SDKS_DIR, '.hermesversion'), {
8764
encoding: 'utf8',
8865
flag: 'r',
8966
}),
9067
).toEqual(hermesTag);
91-
92-
expect(
93-
fs.readFileSync(path.join(SDKS_DIR, '.hermesv1version'), {
94-
encoding: 'utf8',
95-
flag: 'r',
96-
}),
97-
).toEqual(hermesV1Tag);
9868
});
9969
it('should set Hermes tag and read it back', async () => {
100-
await setHermesTag(hermesTag, hermesV1Tag);
70+
await setHermesTag(hermesTag);
10171
expect(readHermesTag()).toEqual(hermesTag);
102-
expect(readHermesV1Tag()).toEqual(hermesV1Tag);
10372
});
10473
});
10574
});

packages/react-native/scripts/hermes/bump-hermes-version.js

Lines changed: 6 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -32,53 +32,27 @@ let argv = yargs
3232
.option('t', {
3333
alias: 'tag',
3434
describe:
35-
'Hermes release tag to use for this React Native release, ex. hermes-2022-02-21-RNv0.68.0. This tag will be used when building Hermes from source.',
36-
required: true,
37-
})
38-
.option('s', {
39-
alias: 'v1-tag',
40-
describe:
41-
'Hermes V1 release tag to use for this React Native release, ex. 250829098.0.0. This tag will be used when building Hermes V1 from source.',
35+
'Hermes release tag to use for this React Native release, ex. 250829098.0.0. This tag will be used when building Hermes from source.',
4236
required: true,
4337
})
4438
.option('h', {
4539
alias: 'hermes-version',
4640
describe:
4741
'Hermes version to use for this React Native release, ex. 250829098.0.0. This version will be used when consuming Hermes from a prebuilt package.',
4842
required: false,
49-
})
50-
.option('v', {
51-
alias: 'hermes-v1-version',
52-
describe:
53-
'Hermes V1 version to use for this React Native release, ex. 250829098.0.0. This version will be used when consuming Hermes V1 from a prebuilt package.',
54-
required: false,
5543
}).argv;
5644

5745
async function main() {
5846
// $FlowFixMe[prop-missing]
5947
const hermesTag = argv.tag;
6048
// $FlowFixMe[prop-missing]
61-
const hermesV1Tag = argv['v1-tag'];
62-
// $FlowFixMe[prop-missing]
6349
let hermesVersion = argv['hermes-version'];
64-
// $FlowFixMe[prop-missing]
65-
let hermesV1Version = argv['hermes-v1-version'];
6650

6751
if (!hermesVersion) {
6852
console.log(
6953
'No Hermes version provided. Fetching the latest version from NPM...',
7054
);
7155
hermesVersion = await getPackageVersionStrByTag(
72-
'hermes-compiler',
73-
'latest-v0',
74-
);
75-
}
76-
77-
if (!hermesV1Version) {
78-
console.log(
79-
'No Hermes V1 version provided. Fetching the latest version from NPM...',
80-
);
81-
hermesV1Version = await getPackageVersionStrByTag(
8256
'hermes-compiler',
8357
'latest-v1',
8458
);
@@ -87,7 +61,7 @@ async function main() {
8761
const {confirmHermesVersions} = await inquirer.prompt({
8862
type: 'confirm',
8963
name: 'confirmHermesVersions',
90-
message: `Do you want to use the Hermes version "${hermesVersion}" and Hermes V1 version "${hermesV1Version}" (for prebuilt)?`,
64+
message: `Do you want to use the Hermes version "${hermesVersion}" (for prebuilt)?`,
9165
});
9266

9367
if (!confirmHermesVersions) {
@@ -98,18 +72,18 @@ async function main() {
9872
const {confirmHermesTags} = await inquirer.prompt({
9973
type: 'confirm',
10074
name: 'confirmHermesTags',
101-
message: `Do you want to use the Hermes release tagged "${hermesTag}" and Hermes V1 release tagged "${hermesV1Tag}" (for building from source)?`,
75+
message: `Do you want to use the Hermes release tagged "${hermesTag}" (for building from source)?`,
10276
});
10377

10478
if (!confirmHermesTags) {
10579
console.log('Aborting.');
10680
return;
10781
}
10882

109-
await setHermesTag(hermesTag, hermesV1Tag);
83+
await setHermesTag(hermesTag);
11084

111-
await updateHermesCompilerVersionInDependencies(hermesV1Version);
112-
await updateHermesRuntimeDependenciesVersions(hermesVersion, hermesV1Version);
85+
await updateHermesCompilerVersionInDependencies(hermesVersion);
86+
await updateHermesRuntimeDependenciesVersions(hermesVersion);
11387
}
11488

11589
void main().then(() => {

packages/react-native/scripts/hermes/hermes-utils.js

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ type BuildType = 'dry-run' | 'release' | 'nightly';
2121

2222
const SDKS_DIR = path.normalize(path.join(__dirname, '..', '..', 'sdks'));
2323
const HERMES_TAG_FILE_PATH = path.join(SDKS_DIR, '.hermesversion');
24-
const HERMES_V1_TAG_FILE_PATH = path.join(SDKS_DIR, '.hermesv1version');
2524

2625
function readHermesTag() /*: string */ {
2726
if (fs.existsSync(HERMES_TAG_FILE_PATH)) {
@@ -42,25 +41,6 @@ function readHermesTag() /*: string */ {
4241
throw new Error('[Hermes] .hermesversion does not exist.');
4342
}
4443

45-
function readHermesV1Tag() /*: string */ {
46-
if (fs.existsSync(HERMES_V1_TAG_FILE_PATH)) {
47-
const data = fs
48-
.readFileSync(HERMES_V1_TAG_FILE_PATH, {
49-
encoding: 'utf8',
50-
flag: 'r',
51-
})
52-
.trim();
53-
54-
if (data.length > 0) {
55-
return data;
56-
} else {
57-
throw new Error('[Hermes] .hermesv1version file is empty.');
58-
}
59-
}
60-
61-
throw new Error('[Hermes] .hermesv1version does not exist.');
62-
}
63-
6444
async function updateHermesTag(
6545
tagFile /*: string */,
6646
hermesTag /*: string */,
@@ -94,18 +74,15 @@ async function updateHermesTag(
9474

9575
async function setHermesTag(
9676
hermesTag /*: string */,
97-
hermesV1Tag /*: string */,
9877
) {
9978
if (!fs.existsSync(SDKS_DIR)) {
10079
fs.mkdirSync(SDKS_DIR, {recursive: true});
10180
}
10281

10382
await updateHermesTag(HERMES_TAG_FILE_PATH, hermesTag, 'Hermes');
104-
await updateHermesTag(HERMES_V1_TAG_FILE_PATH, hermesV1Tag, 'Hermes V1');
10583
}
10684

10785
module.exports = {
10886
readHermesTag,
109-
readHermesV1Tag,
11087
setHermesTag,
11188
};

0 commit comments

Comments
 (0)