diff --git a/.circleci/config.yml b/.circleci/config.yml index a2b88b69..045a381f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -215,7 +215,7 @@ workflows: name: package-<< matrix.arch >> matrix: parameters: - arch: [linux-x64-glibc, darwin-x64-unknown, win32-x64-unknown] + arch: [linux-x64-glibc, darwin-x64-unknown, darwin-arm64-unknown, win32-x64-unknown] - package: filters: *filter-only-master requires: @@ -234,6 +234,7 @@ workflows: - build - package-linux-x64-glibc - package-darwin-x64-unknown + - package-darwin-arm64-unknown - package-win32-x64-unknown - package-linux-x64-glibc-no-chromium filters: *filter-only-master @@ -260,7 +261,7 @@ workflows: name: package-<< matrix.arch >> matrix: parameters: - arch: [linux-x64-glibc, darwin-x64-unknown, win32-x64-unknown] + arch: [linux-x64-glibc, darwin-x64-unknown, darwin-arm64-unknown, win32-x64-unknown] skip_signing_errors: [true] - package: diff --git a/scripts/download_chromium.js b/scripts/download_chromium.js index 53e1ddd3..a81ce8c0 100644 --- a/scripts/download_chromium.js +++ b/scripts/download_chromium.js @@ -2,6 +2,7 @@ const path = require('path'); const child_process = require('child_process'); const Puppeteer = require('puppeteer'); const { PUPPETEER_REVISIONS } = require('puppeteer/lib/cjs/puppeteer/revisions') +const fs = require('fs') const archArg = process.argv[2]; let [ @@ -37,7 +38,21 @@ browserFetcher let execPath = parts.join(path.sep); - child_process.execSync(`cp -RP ${execPath} ${outputPath}`); + if (platform === 'mac' && arch === 'arm64') { + // follow symlinks, dereference symlinks and copy them as files + child_process.execSync(`cp -LR ${execPath} ${outputPath}`); + + const dsStore = '.DS_Store' + const dsStorePaths = [`${outputPath}/${dsStore}`, `${outputPath}/${parts[parts.length - 1]}/.DS_Store`] + for (const path of dsStorePaths) { + if (!fs.existsSync(path)) { + child_process.execSync(`touch ${path}`) + } + } + } else { + // follow symlinks, copy them as symlinks + child_process.execSync(`cp -RP ${execPath} ${outputPath}`); + } console.log(`Chromium moved from ${execPath} to ${outputPath}/`); process.exit(0);