Skip to content

Commit ff20b9d

Browse files
authored
devops: support frequent minor releases of MacOS BigSur. (#5016)
Pre-BigSur, MacOS updates were labeled as "minor" releases, so we had to bake separate builds for different 10.X releases. In BigSur era, it doesn't seem to be the case, so for now we can re-use our BigSur builds across all BigSur versions (11.0, 11.1 and 11.2). If we ever need to have a custom build for some bigsur minor version, e.g. `11.6`, we'll have a new browser platform along with generic `mac11` platform. Fixes #4775.
1 parent 1648d23 commit ff20b9d

File tree

2 files changed

+23
-34
lines changed

2 files changed

+23
-34
lines changed

src/install/browserFetcher.ts

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,7 @@ function getDownloadUrl(browserName: BrowserName, revision: number, platform: Br
6767
['mac10.13', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
6868
['mac10.14', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
6969
['mac10.15', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
70-
['mac11.0', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
71-
['mac11.1', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
70+
['mac11', '%s/chromium-browser-snapshots/Mac/%d/chrome-mac.zip'],
7271
['win32', '%s/chromium-browser-snapshots/Win/%d/chrome-win.zip'],
7372
['win64', '%s/chromium-browser-snapshots/Win_x64/%d/chrome-win.zip'],
7473
]).get(platform) :
@@ -78,10 +77,8 @@ function getDownloadUrl(browserName: BrowserName, revision: number, platform: Br
7877
['mac10.13', '%s/builds/chromium/%s/chromium-mac.zip'],
7978
['mac10.14', '%s/builds/chromium/%s/chromium-mac.zip'],
8079
['mac10.15', '%s/builds/chromium/%s/chromium-mac.zip'],
81-
['mac11.0', '%s/builds/chromium/%s/chromium-mac.zip'],
82-
['mac11.0-arm64', '%s/builds/chromium/%s/chromium-mac-arm64.zip'],
83-
['mac11.1', '%s/builds/chromium/%s/chromium-mac.zip'],
84-
['mac11.1-arm64', '%s/builds/chromium/%s/chromium-mac-arm64.zip'],
80+
['mac11', '%s/builds/chromium/%s/chromium-mac.zip'],
81+
['mac11-arm64', '%s/builds/chromium/%s/chromium-mac-arm64.zip'],
8582
['win32', '%s/builds/chromium/%s/chromium-win32.zip'],
8683
['win64', '%s/builds/chromium/%s/chromium-win64.zip'],
8784
]).get(platform);
@@ -96,8 +93,7 @@ function getDownloadUrl(browserName: BrowserName, revision: number, platform: Br
9693
['mac10.13', '%s/builds/firefox/%s/firefox-mac.zip'],
9794
['mac10.14', '%s/builds/firefox/%s/firefox-mac.zip'],
9895
['mac10.15', '%s/builds/firefox/%s/firefox-mac.zip'],
99-
['mac11.0', '%s/builds/firefox/%s/firefox-mac.zip'],
100-
['mac11.1', '%s/builds/firefox/%s/firefox-mac.zip'],
96+
['mac11', '%s/builds/firefox/%s/firefox-mac.zip'],
10197
['win32', '%s/builds/firefox/%s/firefox-win32.zip'],
10298
['win64', '%s/builds/firefox/%s/firefox-win64.zip'],
10399
]).get(platform) :
@@ -107,10 +103,8 @@ function getDownloadUrl(browserName: BrowserName, revision: number, platform: Br
107103
['mac10.13', '%s/builds/firefox/%s/firefox-mac-10.14.zip'],
108104
['mac10.14', '%s/builds/firefox/%s/firefox-mac-10.14.zip'],
109105
['mac10.15', '%s/builds/firefox/%s/firefox-mac-10.14.zip'],
110-
['mac11.0', '%s/builds/firefox/%s/firefox-mac-10.14.zip'],
111-
['mac11.0-arm64', '%s/builds/firefox/%s/firefox-mac-10.14.zip'],
112-
['mac11.1', '%s/builds/firefox/%s/firefox-mac-10.14.zip'],
113-
['mac11.1-arm64', '%s/builds/firefox/%s/firefox-mac-10.14.zip'],
106+
['mac11', '%s/builds/firefox/%s/firefox-mac-10.14.zip'],
107+
['mac11-arm64', '%s/builds/firefox/%s/firefox-mac-10.14.zip'],
114108
['win32', '%s/builds/firefox/%s/firefox-win32.zip'],
115109
['win64', '%s/builds/firefox/%s/firefox-win64.zip'],
116110
]).get(platform);
@@ -125,8 +119,7 @@ function getDownloadUrl(browserName: BrowserName, revision: number, platform: Br
125119
['mac10.13', undefined],
126120
['mac10.14', '%s/builds/webkit/%s/minibrowser-mac-10.14.zip'],
127121
['mac10.15', '%s/builds/webkit/%s/minibrowser-mac-10.15.zip'],
128-
['mac11.0', '%s/builds/webkit/%s/minibrowser-mac-10.15.zip'],
129-
['mac11.1', '%s/builds/webkit/%s/minibrowser-mac-10.15.zip'],
122+
['mac11', '%s/builds/webkit/%s/minibrowser-mac-10.15.zip'],
130123
['win32', '%s/builds/webkit/%s/minibrowser-win64.zip'],
131124
['win64', '%s/builds/webkit/%s/minibrowser-win64.zip'],
132125
]).get(platform) :
@@ -136,10 +129,8 @@ function getDownloadUrl(browserName: BrowserName, revision: number, platform: Br
136129
['mac10.13', undefined],
137130
['mac10.14', '%s/builds/webkit/%s/webkit-mac-10.14.zip'],
138131
['mac10.15', '%s/builds/webkit/%s/webkit-mac-10.15.zip'],
139-
['mac11.0', '%s/builds/webkit/%s/webkit-mac-10.15.zip'],
140-
['mac11.0-arm64', '%s/builds/webkit/%s/webkit-mac-11.0-arm64.zip'],
141-
['mac11.1', '%s/builds/webkit/%s/webkit-mac-10.15.zip'],
142-
['mac11.1-arm64', '%s/builds/webkit/%s/webkit-mac-11.0-arm64.zip'],
132+
['mac11', '%s/builds/webkit/%s/webkit-mac-10.15.zip'],
133+
['mac11-arm64', '%s/builds/webkit/%s/webkit-mac-11.0-arm64.zip'],
143134
['win32', '%s/builds/webkit/%s/webkit-win64.zip'],
144135
['win64', '%s/builds/webkit/%s/webkit-win64.zip'],
145136
]).get(platform);

src/utils/browserPaths.ts

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { getUbuntuVersionSync } from './ubuntuVersion';
2222
import { getFromENV } from './utils';
2323

2424
export type BrowserName = 'chromium'|'webkit'|'firefox';
25-
export type BrowserPlatform = 'win32'|'win64'|'mac10.13'|'mac10.14'|'mac10.15'|'mac11.0'|'mac11.0-arm64'|'mac11.1'|'mac11.1-arm64'|'ubuntu18.04'|'ubuntu20.04';
25+
export type BrowserPlatform = 'win32'|'win64'|'mac10.13'|'mac10.14'|'mac10.15'|'mac11'|'mac11-arm64'|'ubuntu18.04'|'ubuntu20.04';
2626
export type BrowserDescriptor = {
2727
name: BrowserName,
2828
revision: string,
@@ -32,15 +32,19 @@ export type BrowserDescriptor = {
3232
export const hostPlatform = ((): BrowserPlatform => {
3333
const platform = os.platform();
3434
if (platform === 'darwin') {
35-
const macVersion = execSync('sw_vers -productVersion', {
35+
const [major, minor] = execSync('sw_vers -productVersion', {
3636
stdio: ['ignore', 'pipe', 'ignore']
37-
}).toString('utf8').trim().split('.').slice(0, 2).join('.');
37+
}).toString('utf8').trim().split('.').map(x => parseInt(x, 10));
3838
let arm64 = false;
39-
if (!macVersion.startsWith('10.')) {
39+
// BigSur is the first version that might run on Apple Silicon.
40+
if (major >= 11) {
4041
arm64 = execSync('sysctl -in hw.optional.arm64', {
4142
stdio: ['ignore', 'pipe', 'ignore']
4243
}).toString().trim() === '1';
4344
}
45+
// We do not want to differentiate between minor big sur releases
46+
// since they don't change core APIs so far.
47+
const macVersion = major === 10 ? `${major}.${minor}` : `${major}`;
4448
const archSuffix = arm64 ? '-arm64' : '';
4549
return `mac${macVersion}${archSuffix}` as BrowserPlatform;
4650
}
@@ -92,10 +96,8 @@ export function executablePath(browserPath: string, browser: BrowserDescriptor):
9296
['mac10.13', ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium']],
9397
['mac10.14', ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium']],
9498
['mac10.15', ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium']],
95-
['mac11.0', ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium']],
96-
['mac11.0-arm64', ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium']],
97-
['mac11.1', ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium']],
98-
['mac11.1-arm64', ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium']],
99+
['mac11', ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium']],
100+
['mac11-arm64', ['chrome-mac', 'Chromium.app', 'Contents', 'MacOS', 'Chromium']],
99101
['win32', ['chrome-win', 'chrome.exe']],
100102
['win64', ['chrome-win', 'chrome.exe']],
101103
]).get(hostPlatform);
@@ -108,10 +110,8 @@ export function executablePath(browserPath: string, browser: BrowserDescriptor):
108110
['mac10.13', ['firefox', 'Nightly.app', 'Contents', 'MacOS', 'firefox']],
109111
['mac10.14', ['firefox', 'Nightly.app', 'Contents', 'MacOS', 'firefox']],
110112
['mac10.15', ['firefox', 'Nightly.app', 'Contents', 'MacOS', 'firefox']],
111-
['mac11.0', ['firefox', 'Nightly.app', 'Contents', 'MacOS', 'firefox']],
112-
['mac11.0-arm64', ['firefox', 'Nightly.app', 'Contents', 'MacOS', 'firefox']],
113-
['mac11.1', ['firefox', 'Nightly.app', 'Contents', 'MacOS', 'firefox']],
114-
['mac11.1-arm64', ['firefox', 'Nightly.app', 'Contents', 'MacOS', 'firefox']],
113+
['mac11', ['firefox', 'Nightly.app', 'Contents', 'MacOS', 'firefox']],
114+
['mac11-arm64', ['firefox', 'Nightly.app', 'Contents', 'MacOS', 'firefox']],
115115
['win32', ['firefox', 'firefox.exe']],
116116
['win64', ['firefox', 'firefox.exe']],
117117
]).get(hostPlatform);
@@ -124,10 +124,8 @@ export function executablePath(browserPath: string, browser: BrowserDescriptor):
124124
['mac10.13', undefined],
125125
['mac10.14', ['pw_run.sh']],
126126
['mac10.15', ['pw_run.sh']],
127-
['mac11.0', ['pw_run.sh']],
128-
['mac11.0-arm64', ['pw_run.sh']],
129-
['mac11.1', ['pw_run.sh']],
130-
['mac11.1-arm64', ['pw_run.sh']],
127+
['mac11', ['pw_run.sh']],
128+
['mac11-arm64', ['pw_run.sh']],
131129
['win32', ['Playwright.exe']],
132130
['win64', ['Playwright.exe']],
133131
]).get(hostPlatform);

0 commit comments

Comments
 (0)