From 2def112bc1ac42046b921206825871b82ebf0955 Mon Sep 17 00:00:00 2001 From: Mike Maietta Date: Sun, 6 Feb 2022 08:18:56 -0800 Subject: [PATCH] fix(dmg-builder): Support python 3 since python 2 was removed from MacOS 12.3 (#6617) * Adding python 3 support to dmg-builder in order to support mac os 12.3+ which has entirely removed python2 (fixes: #6606) --- .changeset/thick-bikes-sleep.md | 5 +++++ packages/dmg-builder/src/dmg.ts | 16 +++++++++++----- packages/dmg-builder/vendor/dmgbuild/core.py | 5 +++++ test/snapshots/BuildTest.js.snap | 4 ++-- 4 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 .changeset/thick-bikes-sleep.md diff --git a/.changeset/thick-bikes-sleep.md b/.changeset/thick-bikes-sleep.md new file mode 100644 index 0000000000..843d82a751 --- /dev/null +++ b/.changeset/thick-bikes-sleep.md @@ -0,0 +1,5 @@ +--- +"dmg-builder": patch +--- + +fix(dmg-builder): Adding python 3 support to dmg-builder in order to support mac os 12 which has entirely removed python2. Fixes: #6606 diff --git a/packages/dmg-builder/src/dmg.ts b/packages/dmg-builder/src/dmg.ts index 5fab814390..01a6e66b1a 100644 --- a/packages/dmg-builder/src/dmg.ts +++ b/packages/dmg-builder/src/dmg.ts @@ -297,11 +297,17 @@ async function customizeDmg(volumePath: string, specification: DmgOptions, packa const asyncTaskManager = new AsyncTaskManager(packager.info.cancellationToken) env.iconLocations = await computeDmgEntries(specification, volumePath, packager, asyncTaskManager) await asyncTaskManager.awaitTasks() - - await exec(process.env.PYTHON_PATH || "/usr/bin/python", [path.join(getDmgVendorPath(), "dmgbuild/core.py")], { - cwd: getDmgVendorPath(), - env, - }) + const executePython = async (execName: string) => { + await exec(process.env.PYTHON_PATH || `/usr/bin/${execName}`, [path.join(getDmgVendorPath(), "dmgbuild/core.py")], { + cwd: getDmgVendorPath(), + env, + }) + } + try { + await executePython("python3") + } catch (error) { + await executePython("python") + } return packager.packagerOptions.effectiveOptionComputed == null || !(await packager.packagerOptions.effectiveOptionComputed({ volumePath, specification, packager })) } diff --git a/packages/dmg-builder/vendor/dmgbuild/core.py b/packages/dmg-builder/vendor/dmgbuild/core.py index 7a4207e20c..8154acbffb 100644 --- a/packages/dmg-builder/vendor/dmgbuild/core.py +++ b/packages/dmg-builder/vendor/dmgbuild/core.py @@ -4,6 +4,11 @@ import os import re import sys +if sys.version_info.major == 3: + try: + from importlib import reload + except ImportError: + from imp import reload reload(sys) # Reload is a hack sys.setdefaultencoding('UTF8') diff --git a/test/snapshots/BuildTest.js.snap b/test/snapshots/BuildTest.js.snap index d3afd9d491..7ac87e3c48 100644 --- a/test/snapshots/BuildTest.js.snap +++ b/test/snapshots/BuildTest.js.snap @@ -1505,7 +1505,7 @@ Object { "size": 748, }, "index.js": Object { - "size": 5664, + "size": 5708, }, "package.json": Object { "size": 567, @@ -1534,7 +1534,7 @@ Object { "size": 1081, }, "index.js": Object { - "size": 3539, + "size": 3973, }, "package.json": Object { "size": 789,