Skip to content
This repository was archived by the owner on Aug 7, 2021. It is now read-only.

Commit b28236a

Browse files
author
Dimitar Tachev
authored
Merge pull request #1077 from NativeScript/tachev/macos-snapshot-docker
feat: snapshot in Docker on macOS with Android runtime 6.3.0 or higher
2 parents 66f97ab + 9e99683 commit b28236a

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

Diff for: snapshot/android/project-snapshot-generator.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,8 @@ ProjectSnapshotGenerator.prototype.generate = function (generationOptions) {
179179
androidNdkPath: generationOptions.androidNdkPath,
180180
mksnapshotParams: mksnapshotParams,
181181
snapshotInDocker: generationOptions.snapshotInDocker,
182-
recommendedAndroidNdkRevision
182+
recommendedAndroidNdkRevision,
183+
runtimeVersion
183184
};
184185

185186
return generator.generate(options).then(() => {

Diff for: snapshot/android/snapshot-generator.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const child_process = require("child_process");
44
const { convertToUnixPath, warn } = require("../../lib/utils");
55
const { isWindows } = require("./utils");
66
const PropertiesReader = require('properties-reader');
7+
const semver = require("semver");
78
const shelljs = require("shelljs");
89

910
const { createDirectory, downloadFile, getHostOS, getHostOSArch, CONSTANTS, has32BitArch, isMacOSCatalinaOrHigher, isSubPath } = require("./utils");
@@ -37,12 +38,16 @@ module.exports = SnapshotGenerator;
3738

3839
SnapshotGenerator.SNAPSHOT_PACKAGE_NANE = "nativescript-android-snapshot";
3940

40-
SnapshotGenerator.prototype.shouldSnapshotInDocker = function (hostOS, targetArchs) {
41+
SnapshotGenerator.prototype.shouldSnapshotInDocker = function (hostOS, targetArchs, currentRuntimeVersion) {
4142
let shouldSnapshotInDocker = false;
43+
const minRuntimeWithoutMacOSSnapshotTools = "6.3.0";
4244
const generateInDockerMessage = "The snapshots will be generated in a docker container.";
43-
if (hostOS == CONSTANTS.WIN_OS_NAME) {
45+
if (hostOS === CONSTANTS.WIN_OS_NAME) {
4446
console.log(`The V8 snapshot tools are not supported on Windows. ${generateInDockerMessage}`);
4547
shouldSnapshotInDocker = true;
48+
} else if (hostOS === CONSTANTS.MAC_OS_NAME && semver.gte(currentRuntimeVersion, minRuntimeWithoutMacOSSnapshotTools)) {
49+
console.log(`Starting from Android Runtime 6.3.0, the Snapshot tools are no longer supported on macOS. ${generateInDockerMessage}`);
50+
shouldSnapshotInDocker = true;
4651
} else if (isMacOSCatalinaOrHigher() && has32BitArch(targetArchs)) {
4752
console.log(`Starting from macOS Catalina, the 32-bit processes are no longer supported. ${generateInDockerMessage}`);
4853
shouldSnapshotInDocker = true;
@@ -296,7 +301,7 @@ SnapshotGenerator.prototype.generate = function (options) {
296301

297302
this.preprocessInputFiles(options.inputFiles, preprocessedInputFile);
298303
const hostOS = getHostOS();
299-
const snapshotInDocker = options.snapshotInDocker || this.shouldSnapshotInDocker(hostOS, options.targetArchs);
304+
const snapshotInDocker = options.snapshotInDocker || this.shouldSnapshotInDocker(hostOS, options.targetArchs, options.runtimeVersion);
300305

301306
// generates the actual .blob and .c files
302307
return this.generateSnapshots(

0 commit comments

Comments
 (0)