From d49d7e7fe15fd0bda54ea749aaa2615da480cf94 Mon Sep 17 00:00:00 2001 From: deepak1556 Date: Thu, 5 Aug 2021 23:55:06 -0700 Subject: [PATCH] chore: harder checks around universal build creation --- build/darwin/create-universal-app.js | 7 +++++++ build/darwin/create-universal-app.ts | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/build/darwin/create-universal-app.js b/build/darwin/create-universal-app.js index f517b7d99df..0690fba9957 100644 --- a/build/darwin/create-universal-app.js +++ b/build/darwin/create-universal-app.js @@ -5,6 +5,7 @@ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); const vscode_universal_bundler_1 = require("vscode-universal-bundler"); +const cross_spawn_promise_1 = require("@malept/cross-spawn-promise"); const fs = require("fs-extra"); const path = require("path"); const plist = require("plist"); @@ -50,6 +51,12 @@ async function main() { LSRequiresNativeExecution: true }); await fs.writeFile(infoPlistPath, plist.build(infoPlistJson), 'utf8'); + // Verify if native module architecture is correct + const findOutput = await (0, cross_spawn_promise_1.spawn)('find', [outAppPath, '-name', 'keytar.node']); + const lipoOutput = await (0, cross_spawn_promise_1.spawn)('lipo', ['-archs', findOutput.replace(/\n$/, "")]); + if (lipoOutput.replace(/\n$/, "") !== 'x86_64 arm64') { + throw new Error(`Invalid arch, got : ${lipoOutput}`); + } } if (require.main === module) { main().catch(err => { diff --git a/build/darwin/create-universal-app.ts b/build/darwin/create-universal-app.ts index 3c7b7c637be..ed042c56d82 100644 --- a/build/darwin/create-universal-app.ts +++ b/build/darwin/create-universal-app.ts @@ -6,6 +6,7 @@ 'use strict'; import { makeUniversalApp } from 'vscode-universal-bundler'; +import { spawn } from '@malept/cross-spawn-promise'; import * as fs from 'fs-extra'; import * as path from 'path'; import * as plist from 'plist'; @@ -57,6 +58,13 @@ async function main() { LSRequiresNativeExecution: true }); await fs.writeFile(infoPlistPath, plist.build(infoPlistJson), 'utf8'); + + // Verify if native module architecture is correct + const findOutput = await spawn('find', [outAppPath, '-name', 'keytar.node']) + const lipoOutput = await spawn('lipo', ['-archs', findOutput.replace(/\n$/, "")]); + if (lipoOutput.replace(/\n$/, "") !== 'x86_64 arm64') { + throw new Error(`Invalid arch, got : ${lipoOutput}`) + } } if (require.main === module) {