Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Apple Silicon Universal Support #5481

Merged
merged 1 commit into from
Dec 22, 2020
Merged

feat: Apple Silicon Universal Support #5481

merged 1 commit into from
Dec 22, 2020

Conversation

lutzroeder
Copy link
Contributor

@lutzroeder lutzroeder commented Dec 16, 2020

@lutzroeder lutzroeder changed the title Apple Silicon Universal Support feat: Apple Silicon Universal Support Dec 16, 2020
Copy link
Collaborator

@mmaietta mmaietta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With the introduction of --universal as an arch, I think this will break as node-gyp won't understand universal.

await this.installAppDependencies(platform, arch)

https://github.com/electron-userland/electron-builder/blob/master/packages/app-builder-lib/src/packager.ts#L430

It can process --arch=all, however, that doesn't work for me on Mac and it just produces the system's process.arch.

$ electron-builder node-gyp-rebuild --arch universal

Rebuild own native code

Options:
  --version   Show version number                                      [boolean]
  --help      Show help                                                [boolean]
  --platform  The target platform
                       [choices: "linux", "darwin", "win32"] [default: "darwin"]
  --arch      The target arch
             [choices: "ia32", "x64", "armv7l", "arm64", "all"] [default: "x64"]

Invalid values:
  Argument: arch, Given: "universal", Choices: "ia32", "x64", "armv7l", "arm64", "all"
error Command failed with exit code 1.

[UPDATE]
I'm starting to think we should just add a property specific to the builder config, like below. Partly because the packager logic is too tied to a specific architecture, and "universal" is technically not an architecture, but rather just combining/stitching assets into a fat binary.

    mac: {
        identity: <non-null>,
        universal: true,
        target: {
            target: 'dir',
            arch: [
                'arm64',
                'x64', 
            ]
        },

In taking this approach, the target field corresponds directly to an arch AND signs it. universal just validates that both arm64 and x64 are built, but doesn't force each individually to get signed, only the final fat app.

packages/app-builder-lib/src/macPackager.ts Show resolved Hide resolved
@lutzroeder lutzroeder marked this pull request as ready for review December 17, 2020 05:28
@quanglam2807
Copy link
Contributor

I have a better idea for this. Why don’t we introduce an option in build config. Something like combine: true. And if that is set, we will combine the arch-specific files together with lipo.

I also agree with @mmaietta that universal binaries are only useful for initial downloads. For updates, electron-updater should just download arch-specific files.

If you go with this design, it will be much simpler as only need to add a hook to run after arch-specific builds are ready.

@mmaietta
Copy link
Collaborator

If you go with this design, it will be much simpler as only need to add a hook to run after arch-specific builds are ready.

Perhaps a hook over here? https://github.com/electron-userland/electron-builder/blob/master/packages/app-builder-lib/src/packager.ts#L442
The only difficulty I'm running into is how to map packager.pack(...) => Promise<string> so that we return a target-arch-outputpath map/object of assets to lipo after (it doesn't return anything right now). Then it'd be easy to just pass that into the hook for postProcessPackages(...)

@lutzroeder
Copy link
Contributor Author

lutzroeder commented Dec 17, 2020

@quanglam2807 @mmaietta to get on the same page on this, there aren't apps out there shipping universal bits and then upgrading to a platform specific version. Download and update any universal app, run an update and the result will be universal. With the approach you describe the platform specific targets would need to be signed, notarized and published (on GitHub Releases) which would make CI pipelines more fragile and add complexity (now there are three targets for users to choose from instead of two, users at different stages might rund a different variants of the app). I'm not trying to argue which sets of pros and cons are preferable, more "only ever ship universal" is how it seems to be done by pretty much all app vendors so the goal is to optimize for this model.

@lutzroeder
Copy link
Contributor Author

lutzroeder commented Dec 17, 2020

Perhaps a hook over here? https://github.com/electron-userland/electron-builder/blob/master/packages/app-builder-lib/src/packager.ts#L442

What would this hook do? Create another MacPackager that doesn't run doPack, can take inputs and a universal architecture to create universal targets. Then special case MacPackager so it doesn't sign or produce targets for x64 and arm64 if universal is set? Might be easier to have another PR to have a look?

@mmaietta
Copy link
Collaborator

mmaietta commented Dec 17, 2020

Thanks so much for tackling this @lutzroeder! The work is fantastic and covers almost all the use cases. The main issue lies with native modules as installAppDependencies must be called prior to any packing and per-architecture. universal unfortunately isn't accepted by node-gyp itself (all is though). I think we shouldn't move installAppDependencies into doPack as it convolutes the build stage's description of just "packing" (I suppose a simple rename could change that explicit description though, perhaps buildPackage?)
I think moving installAppDependencies here might solve the issue such that doPack always installs/rebuilds the correct arch's native addons:

protected async doPack(outDir: string, appOutDir: string, platformName: ElectronPlatformName, arch: Arch, platformSpecificBuildOptions: DC, targets: Array<Target>, sign: boolean = true) {
if (this.packagerOptions.prepackaged != null) {

Would you mind giving that a try? Installing sqlite3 or leveldown on electron-quick-start should create a simple env to test in.

I think long-term, it could be useful for each already-instantiated packager to have a postProcessPackages hook for use cases like this as I feel like we may be missing something here. Also, universal as an architecture confuses me, but the scope of going another route might be too large. I just want to make sure whatever changes we make here to the electron-builder build config is something that is flexible to change/refactor in the future.

@lutzroeder
Copy link
Contributor Author

@mmaietta updated to call installAppDependencies from doPack:

~/electron-quick-start: npx electron-builder --mac --universal
  • electron-builder  version=22.10.0 os=20.2.0
  • writing effective config  file=dist/builder-effective-config.yaml
  • rebuilding native dependencies  [email protected] platform=darwin arch=x64
  • packaging       platform=darwin arch=x64 electron=11.1.0 appOutDir=dist/mac-universal-x64
  • default Electron icon is used  reason=application icon is not set
  • rebuilding native dependencies  [email protected] platform=darwin arch=arm64
  • packaging       platform=darwin arch=arm64 electron=11.1.0 appOutDir=dist/mac-universal-arm64
  • packaging       platform=darwin arch=universal electron=11.1.0 appOutDir=dist/mac-universal

@mmaietta
Copy link
Collaborator

Nice! Those logs look perfect.

For the interim, I think this is a good way to approach it without very large changes for a single hook. A larger refactor without an explicit need for a post-all-packed hook is just asking for bugs to be created. I'm still wary of the "universal" as its own arch as anyone building all 3 archs (x64, arm64, universal) with native addons rebuilding may take a very long time. Oh well 😅

I gave it a whirl locally and it works perfect on the first run. lipo results:

$ find dist/artifacts build -name '*.node' | xargs -I {} lipo -info "{}"
Architectures in the fat file: dist/artifacts/local/mac-universal/Electron.app/Contents/MacOS/app.node are: x86_64 arm64 

It does throw an error on subsequent builds that is an easy fix:

  • packaging       platform=darwin arch=arm64 electron=11.0.3 appOutDir=dist/artifacts/local/mac-universal-arm64
  • packaging       platform=darwin arch=universal electron=11.0.3 appOutDir=dist/artifacts/local/mac-universal
  ⨯ The out path "/shell-builder/dist/artifacts/local/mac-universal/Electron.app" already exists and force is not set to true 

Just need to add force: true to the makeUniversalApp config to enable overwriting

The only remaining step AFAICT is to get this working with the electron-builder config so that this works:

    mac: {
        target: {
            target: 'dir',
            arch: 'universal'
        },

@lutzroeder
Copy link
Contributor Author

lutzroeder commented Dec 18, 2020

The only remaining step AFAICT is to get this working with the electron-builder config so that this works

This config gives Invalid configuration object. electron-builder 22.10.0 has been initialized using a configuration object that does not match the API schema.?

@mmaietta
Copy link
Collaborator

Yep! You'll need to update the scheme.json. Just gotta add "universal", here:
https://github.com/electron-userland/electron-builder/blob/master/packages/app-builder-lib/scheme.json#L4955-L4980

Now, how can we fix that test?

@lutzroeder
Copy link
Contributor Author

Now, how can we fix that test?

That should probably be a separate PR as it happens for blank PRs like #5488 as well. We should fix the test first and merge vs. including it in this PR which has higher risk to be reverted. Can you have a look?

@mmaietta
Copy link
Collaborator

mmaietta commented Dec 18, 2020

Your tests pass here!
But locally they fail for me, I get:

Snapshot name: `two-package 1`

    - Snapshot  - 3
    + Received  + 3

    @@ -68,21 +68,21 @@
                  "url": "TestApp-1.1.0-mac-universal.zip",
                },
                Object {
                  "sha512": "@sha512",
                  "size": "@size",
    -             "url": "TestApp-1.1.0-mac.dmg",
    +             "url": "TestApp-1.1.0-mac-universal.dmg",
                },
                Object {
                  "sha512": "@sha512",
                  "size": "@size",
    -             "url": "TestApp-1.1.0-mac-arm64.dmg",
    +             "url": "TestApp-1.1.0-mac.dmg",
                },
                Object {
                  "sha512": "@sha512",
                  "size": "@size",
    -             "url": "TestApp-1.1.0-mac-universal.dmg",
    +             "url": "TestApp-1.1.0-mac-arm64.dmg",
                },
              ],
              "path": "TestApp-1.1.0-mac.zip",
              "releaseDate": "@releaseDate",
              "sha512": "@sha512",

      235 |   }
      236 | 
    > 237 |   expect(objectToCompare).toMatchSnapshot()

I feel like something is wrong with the build node as these results are way too inconsistent.
Yours fllows this order from packages/electron-builder/src/builder.ts [Arch.x64, Arch.arm64, Arch.universal], whereas mine is in some weird format.

[UPDATE]
I figured out the discrepancy issue. Node 12 fails certain tests for me. I installed Node 14 (same as build machine) and they pass.

@lutzroeder
Copy link
Contributor Author

lutzroeder commented Dec 18, 2020

@mmaietta not sure how this explains #5488 failing? Is there sorting needed after result.fileContent = removeUnstableProperties(safeLoad(await fs.readFile(file, "utf-8")))?

@quanglam2807
Copy link
Contributor

Thank you so much, @lutzroeder. I'm so excited for this. I just realize Mac App Store only accepts a single pkg file, so universal binary is a must. Hope this PR can be merged soon so we can then test in production.

@lutzroeder
Copy link
Contributor Author

lutzroeder commented Dec 18, 2020

@mmaietta @develar can we merge this PR and #5488 for another round of prerelease testing?

Copy link
Collaborator

@mmaietta mmaietta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fantastic work @lutzroeder! 🎉

packages/app-builder-lib/src/packager.ts Show resolved Hide resolved
@mmaietta
Copy link
Collaborator

I think we should also merge these for the prerelease cut:
#5488 #5489 #5484
CC @quanglam2807

@lutzroeder I, unfortunately, don't have merge permissions for this project. It'd be awesome if I did though!

@mmaietta
Copy link
Collaborator

Quick follow up, can you please update this PR's yarn.lock 🙂

Also, @lutzroeder I've pushed a "PreRelease" branch to my fork containing multiple fixes from open PRs we've worked on (dmg, universal, signing, unit tests). Feel free to generate patch files from it to use for the interim.
https://github.com/mmaietta/electron-builder/tree/PreRelease

Just compile, link, and use rsync to migrate all the files so you can run patch-package on your project.
Handy cmd: rsync -avh --exclude=package.json --exclude=yalc.sig .yalc/ node_modules/
You'll need to manually yarn add -D istextorbinary @electron/universal in your project for now because yarn install can't utilize a patched package.json to update the yarn.lock.

@develar
Copy link
Member

develar commented Dec 21, 2020

Thanks for your work, you are awesome :)

I cannot merge #5488 since not clear for me, is it safe just revert or it is possible just add required patterns to auto sign (#5488 (comment)).

@lutzroeder
Copy link
Contributor Author

Quick follow up, can you please update this PR's yarn.lock

@mmaietta ran yarn install and added the updated yarn.lock. Is that all that is needed for this PR?

Copy link
Collaborator

@mmaietta mmaietta left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@develar develar merged commit ca20151 into electron-userland:master Dec 22, 2020
@lutzroeder
Copy link
Contributor Author

@develar @mmaietta what does it take to push a new prerelease with the recent changes?

Is there a doc page how to build electron-builder locally and fully patch the node_modules of a project?

@mmaietta
Copy link
Collaborator

mmaietta commented Dec 22, 2020

I have no idea in terms of a release 😅

In terms of patch package for tracking latest master, here's how I've done it:
Step 1

yarn compile && \
(cd ./packages/app-builder-lib && yalc push) && \
(cd ./packages/builder-util && yalc push) && \
(cd ./packages/builder-util-runtime && yalc push) && \
(cd ./packages/dmg-builder && yalc push) && \
(cd ./packages/electron-builder && yalc push) && \
(cd ./packages/electron-publish && yalc push) && \
(cd ./packages/electron-builder-squirrel-windows && yalc push) && \
(cd ./packages/electron-forge-maker-appimage && yalc push) && \
(cd ./packages/electron-forge-maker-nsis && yalc push) && \
(cd ./packages/electron-forge-maker-nsis-web && yalc push) && \
(cd ./packages/electron-forge-maker-snap && yalc push) && \
(cd ./packages/electron-updater && yalc push)

Step 2 in your project:

yalc remove --all
yalc retreat --all
yarn install --check-files --force --ignore-scripts
yalc link app-builder-lib builder-util builder-util-runtime dmg-builder electron-builder electron-publish electron-builder-squirrel-windows electron-forge-maker-appimage electron-forge-maker-nsis electron-forge-maker-nsis-web electron-forge-maker-snap electron-updater
rsync -avh --exclude=package.json --exclude=yalc.sig .yalc/ node_modules/
yarn patch-package app-builder-lib --exclude
yarn patch-package builder-util --exclude
yarn patch-package electron-builder --exclude
yarn patch-package electron-updater --exclude

If you hit a permission issue during yarn install, then just rerun the retreat and remove commands until it properly resets the permissions in node_modules. Note: the --ignore-scripts is necessary to avoid applying your current patch files as it'll break the subsequent attempts to create new patches.

A doc page for that above would probably be best in the yalc repo, but I suppose it'd still be super handy in our CONTRIBUTING.md file. Can you give commands above a try to test it outside of my local env? If successful, then we could consider updating an EB doc

@develar
Copy link
Member

develar commented Dec 22, 2020

22.10.4 is released as pre-release.

@mmaietta
Copy link
Collaborator

@lutzroeder EB provides an electronDist param for custom electron dists/forks, which is what my team uses and something I think we may have overlooked. Not a bug as part of this PR as this issue already exists for compiling 2+ archs on a single build run, as there will always be only one path to an arch-specific electron dist.

For building universal, we need to provide 2 different paths, one for each arch. However, electronDist only accepts one path to a corresponding .app.
What are your thoughts on us enabling electronDist to accept a dictionary of ${platform}-${arch} : <path> key-value pairs? It'd retain backward compatibility while enabling custom forks for universal builds.

CC @quanglam2807

@lutzroeder
Copy link
Contributor Author

@quanglam2807 what is causing them to be different?

@quanglam2807
Copy link
Contributor

@quanglam2807 what is causing them to be different?

We generate app.asar for each arch-specific build separately so they're different files with different SHAs.

@lutzroeder
Copy link
Contributor Author

lutzroeder commented Dec 23, 2020

@quanglam2807 do the app.asar files contain arch-specific binaries or do they contain something else that would make them different? If the difference is arch-specific binaries not sure how that would work as lipo is expected to merge such binaries.

@lutzroeder
Copy link
Contributor Author

Follow-up #5495

@quanglam2807
Copy link
Contributor

@quanglam2807 do the app.asar files contain arch-specific binaries or do they contain something else that would make them different? If the difference is arch-specific binaries not sure how that would work as lipo is expected to merge such binaries.

app.asar normally doesn't contain binaries. If it does, electron-builder will automatically unpack them from the asar file.

We generate x64 & arm64 builds separately before merging them together. So for each arch, we generate different app.asar file. These files are identical in contents, but could have different SHA because they differ in metadata (eg date created).

So in this case, we can opt to remove AsarIntegrity from Info.plist. Or we can unify the app.asar process for universal build.

@lutzroeder
Copy link
Contributor Author

lutzroeder commented Dec 23, 2020

@quanglam2807 do you have a repro project or is there some extra logging that needs to be enabled? I've been running with 20.10.4, pushed a release and haven't seen this error.

@quanglam2807
Copy link
Contributor

@lutzroeder You can clone this repo: https://github.com/webcatalog/translatium

Then remove the patch: patches/app-builder-lib+22.10.4.patch. Run yarn and then yarn dist-dev.

protected async doPack(outDir: string, appOutDir: string, platformName: ElectronPlatformName, arch: Arch, platformSpecificBuildOptions: MacConfiguration, targets: Array<Target>): Promise<any> {
switch (arch) {
default: {
return super.doPack(outDir, appOutDir, this.platform.nodeName as ElectronPlatformName, arch, this.platformSpecificBuildOptions, targets);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @lutzroeder,

Thank you for the universal support.

Why do you overwrite platformName and platformSpecificBuildOptions instead of passing arguments directly? It breaks mas builds.

Copy link
Contributor Author

@lutzroeder lutzroeder Dec 30, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Can you create an issue for tracking, link #5511 and review the change?

@fabiospampinato
Copy link

Does this PR take into account electron-updater?

Because when I switch from the x64 to the universal architecture I'm not getting the build artifacts that I would need, just a single file at mac-universal/MyApp.app and this error in the terminal:

Error: spawn zip ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)
    at onErrorNT (internal/child_process.js:456:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)

I'm under Mojave.

@lutzroeder
Copy link
Contributor Author

@fabiospampinato see #5504 which is not included in a preview build yet and #5495.

@fabiospampinato
Copy link

fabiospampinato commented Jan 16, 2021

@lutzroeder Would that probably address my issue? 🤔 I can get a universal build of the app, but I can't get the dmg and accessory files. Seeing as an error, possibly related to packing the app, got thrown at build time I'm not sure #5504 would address my issue.

facebook-github-bot referenced this pull request in facebook/flipper Mar 23, 2021
Summary:
allow-large-files
Bumps [app-builder-lib](https://github.com/electron-userland/electron-builder) from 22.9.1 to 22.10.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/electron-userland/electron-builder/releases">app-builder-lib's releases</a>.</em></p>
<blockquote>
<h2>22.10.5</h2>
<p>We have a new maintainer — welcome Mike Maietta (<a href="https://github.com/mmaietta"><code>@​mmaietta</code></a>)!</p>
<p><strong>electron-updater</strong>  4.3.8 contains fix for <a href="https://github.com/electron-userland/electron-builder/issues/5595">#5595</a>. This version is a pre-release.</p>
<h3>Bug Fixes</h3>
<ul>
<li>Look for the Amazon cred header to remove auth header (<a href="https://github.com/electron-userland/electron-builder/issues/5594">#5594</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/46a8840bb4b3ed9b81ac65d3351debc4e34f30ce">46a8840</a>)</li>
<li><strong>mac:</strong> fix &quot;Contents/Info.plist&quot; don't have identical SHAs when creating a universal build (<a href="https://github.com/electron-userland/electron-builder/issues/5550">#5550</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/0ba839b72b6a13178ad5bc4b03a47f9aca980650">0ba839b</a>)</li>
<li>updating nsis script to properly identify arm64 vs x64 vs ia32 package files within universal installers. (<a href="https://github.com/electron-userland/electron-builder/issues/5558">#5558</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/60f7fe367c54f7c1274e2628534f43cb9a93fcf6">60f7fe3</a>)</li>
<li><strong>mac:</strong> Allow arm64 macs to update to x64 version if no arm64 version available (<a href="https://github.com/electron-userland/electron-builder/issues/5524">#5524</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/dc5c2f8e772da4a9e6f1cf9578c70f60ddc36b37">dc5c2f8</a>)</li>
<li><strong>mac:</strong> Pass platformName and options in doPack (<a href="https://github.com/electron-userland/electron-builder/issues/5511">#5511</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/f78e3f48d7cde71fd52fe1024c114bbe23f83562">f78e3f4</a>)</li>
<li><strong>mac:</strong> Workaround for hdiutil randomly failing (<a href="https://github.com/electron-userland/electron-builder/issues/5431">#5431</a>) (<a href="https://github.com/electron-userland/electron-builder/issues/5464">#5464</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/53270cfe4eb2de1ac55e4b281c2c53483d4d1f2e">53270cf</a>)</li>
<li>binary detection signing (<a href="https://github.com/electron-userland/electron-builder/issues/5493">#5493</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/a6e86b593048b4eb3047b7c3a54d02d0521b02d2">a6e86b5</a>), closes <a href="https://github.com/electron-userland/electron-builder/issues/5465">#5465</a></li>
<li>ci-tests (<a href="https://github.com/electron-userland/electron-builder/issues/5523">#5523</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/ced6e50b93c621de5de07838205d739010e2526b">ced6e50</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>electron-updater:</strong> follow <code>autoInstallOnAppQuit = false</code> on macOS (<a href="https://github.com/electron-userland/electron-builder/issues/5271">#5271</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/1643d569600a197858585e895e3176948d3eec85">1643d56</a>)</li>
<li>add support for executableName to non-Linux Platforms (<a href="https://github.com/electron-userland/electron-builder/issues/5409">#5409</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/106b68010f2daa0fb7d370c889b4a5494fa2887f">106b680</a>)</li>
<li>Custom electronDist callback (<a href="https://github.com/electron-userland/electron-builder/issues/5527">#5527</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/4f4e0187715a57a358ab8ccfefef3fd0f8186584">4f4e018</a>)</li>
<li>macOS default architecture (<a href="https://github.com/electron-userland/electron-builder/issues/5495">#5495</a>) (<a href="https://github.com/electron-userland/electron-builder/issues/5504">#5504</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/5203d7eb15726605e8987aeed7a5ccedc8152e04">5203d7e</a>)</li>
</ul>
<h2>22.10.4</h2>
<h3>Bug Fixes</h3>
<ul>
<li>CI unit tests (<a href="https://github.com/electron-userland/electron-builder/issues/5489">#5489</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/637334ddbadebf503a45f79adf0b481fcba98679">637334d</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li>Apple Silicon Universal Support (<a href="https://github.com/electron-userland/electron-builder/issues/5481">#5481</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/ca20151c3416324d2413f451dea0c9e3853bab79">ca20151</a>)</li>
<li><strong>mas:</strong> Apple Silicon support (<a href="https://github.com/electron-userland/electron-builder/issues/5484">#5484</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/6b7d30555d8f88a3a908a25adb3e8836ccdf5bc8">6b7d305</a>)</li>
</ul>
<h3>Reverts</h3>
<ul>
<li>Revert &quot;fix: codesign all binary-like files (<a href="https://github.com/electron-userland/electron-builder/issues/5322">#5322</a>)&quot; (<a href="https://github.com/electron-userland/electron-builder/issues/5488">#5488</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/026227888f8c537855abf6d6aa2141a692a6bc8e">0262278</a>), closes <a href="https://github.com/electron-userland/electron-builder/issues/5322">#5322</a> <a href="https://github.com/electron-userland/electron-builder/issues/5488">#5488</a></li>
</ul>
<h2>22.10.3</h2>
<h3>Bug Fixes</h3>
<ul>
<li>signing of playwright (<a href="https://github.com/electron-userland/electron-builder/issues/5451">#5451</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/50750683b11d5670a182bd72f7cab14023e2b030">5075068</a>)</li>
<li><strong>dmg:</strong> new version of mac_alias (<a href="https://github.com/electron-userland/electron-builder/issues/5460">#5460</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/a8acb583bc3c6fb1ff0dca2f07d1eefa26b1780a">a8acb58</a>)</li>
<li>compiler error and test updates (<a href="https://github.com/electron-userland/electron-builder/issues/5449">#5449</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/0dec1b8c198f1f9ca0124649883945ba561d11d3">0dec1b8</a>)</li>
<li><strong>AppImage:</strong> Add default argument --no-sandbox (<a href="https://github.com/electron-userland/electron-builder/issues/4496">#4496</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/ede6d50ddb6c23fe6bbb056bd80509c8f2ea0116">ede6d50</a>)</li>
<li><strong>linux:</strong> Linux icon is not set if path is not explicitly defined in config (<a href="https://github.com/electron-userland/electron-builder/issues/5385">#5385</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/9fd950bc046ca1748950f63894993947da8185c5">9fd950b</a>)</li>
<li><strong>nsis:</strong> cs locale typos in messages (<a href="https://github.com/electron-userland/electron-builder/issues/5358">#5358</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/0fb69b5d11e5c8aa707b7af709a0ab52f5019a9f">0fb69b5</a>)</li>
<li>codesign all binary-like files (<a href="https://github.com/electron-userland/electron-builder/issues/5322">#5322</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/27ea1b2b9ce47a234e82772e09adf0bc7931e0df">27ea1b2</a>)</li>
</ul>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/electron-userland/electron-builder/commit/79940292bdd1a5de45b33453be492ea67529434b"><code>7994029</code></a> Cannot read property 'log' of undefined (<a href="https://github.com/electron-userland/electron-builder/issues/5622">#5622</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/1643d569600a197858585e895e3176948d3eec85"><code>1643d56</code></a> feat(electron-updater): follow <code>autoInstallOnAppQuit = false</code> on macOS (<a href="https://github.com/electron-userland/electron-builder/issues/5271">#5271</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/0360cd1705c7deab2e07f2a9abf8cdb652f945ff"><code>0360cd1</code></a> chore(build-utils): remove unreachable useless statement in createMessage (<a href="https://github.com/electron-userland/electron-builder/issues/5">https://github.com/facebook/flipper/issues/5</a>...</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/c348e318ce6e9a1d67febe40003aeb6badedea8f"><code>c348e31</code></a> Add &quot;open&quot; guard for AsarUtil to fix concurrent builds (<a href="https://github.com/electron-userland/electron-builder/issues/5567">#5567</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/11aa06c701a2ff091139a8bf8277151f7172efbb"><code>11aa06c</code></a> Detect CI tag for Bitbucket pipelines</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/8decc1867428ef532e81466e239a8b3ad04e4d9c"><code>8decc18</code></a> (fix) master branch depCheck + tests (<a href="https://github.com/electron-userland/electron-builder/issues/5630">#5630</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/46a8840bb4b3ed9b81ac65d3351debc4e34f30ce"><code>46a8840</code></a> fix: Look for the Amazon cred header to remove auth header (<a href="https://github.com/electron-userland/electron-builder/issues/5594">#5594</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/0ba839b72b6a13178ad5bc4b03a47f9aca980650"><code>0ba839b</code></a> fix(mac): fix &quot;Contents/Info.plist&quot; don't have identical SHAs when creating a...</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/60f7fe367c54f7c1274e2628534f43cb9a93fcf6"><code>60f7fe3</code></a> fix: updating nsis script to properly identify arm64 vs x64 vs ia32 package f...</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/5de0db981d069584933e88781a41a411e87ff1cd"><code>5de0db9</code></a> chore: lint</li>
<li>Additional commits viewable in <a href="https://github.com/electron-userland/electron-builder/compare/v22.9.1...v22.10.5">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=app-builder-lib&package-manager=npm_and_yarn&previous-version=22.9.1&new-version=22.10.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

 ---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>

Pull Request resolved: #2072

Reviewed By: passy

Differential Revision: D27230105

Pulled By: priteshrnandgaonkar

fbshipit-source-id: e53e942319a15d982797f7ce3af128a8b25b357f
facebook-github-bot referenced this pull request in facebook/flipper Mar 23, 2021
Summary:
Bumps [electron-builder](https://github.com/electron-userland/electron-builder) from 22.9.1 to 22.10.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/electron-userland/electron-builder/releases">electron-builder's releases</a>.</em></p>
<blockquote>
<h2>22.10.5</h2>
<p>We have a new maintainer — welcome Mike Maietta (<a href="https://github.com/mmaietta"><code>@​mmaietta</code></a>)!</p>
<p><strong>electron-updater</strong>  4.3.8 contains fix for <a href="https://github.com/electron-userland/electron-builder/issues/5595">#5595</a>. This version is a pre-release.</p>
<h3>Bug Fixes</h3>
<ul>
<li>Look for the Amazon cred header to remove auth header (<a href="https://github.com/electron-userland/electron-builder/issues/5594">#5594</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/46a8840bb4b3ed9b81ac65d3351debc4e34f30ce">46a8840</a>)</li>
<li><strong>mac:</strong> fix &quot;Contents/Info.plist&quot; don't have identical SHAs when creating a universal build (<a href="https://github.com/electron-userland/electron-builder/issues/5550">#5550</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/0ba839b72b6a13178ad5bc4b03a47f9aca980650">0ba839b</a>)</li>
<li>updating nsis script to properly identify arm64 vs x64 vs ia32 package files within universal installers. (<a href="https://github.com/electron-userland/electron-builder/issues/5558">#5558</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/60f7fe367c54f7c1274e2628534f43cb9a93fcf6">60f7fe3</a>)</li>
<li><strong>mac:</strong> Allow arm64 macs to update to x64 version if no arm64 version available (<a href="https://github.com/electron-userland/electron-builder/issues/5524">#5524</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/dc5c2f8e772da4a9e6f1cf9578c70f60ddc36b37">dc5c2f8</a>)</li>
<li><strong>mac:</strong> Pass platformName and options in doPack (<a href="https://github.com/electron-userland/electron-builder/issues/5511">#5511</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/f78e3f48d7cde71fd52fe1024c114bbe23f83562">f78e3f4</a>)</li>
<li><strong>mac:</strong> Workaround for hdiutil randomly failing (<a href="https://github.com/electron-userland/electron-builder/issues/5431">#5431</a>) (<a href="https://github.com/electron-userland/electron-builder/issues/5464">#5464</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/53270cfe4eb2de1ac55e4b281c2c53483d4d1f2e">53270cf</a>)</li>
<li>binary detection signing (<a href="https://github.com/electron-userland/electron-builder/issues/5493">#5493</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/a6e86b593048b4eb3047b7c3a54d02d0521b02d2">a6e86b5</a>), closes <a href="https://github.com/electron-userland/electron-builder/issues/5465">#5465</a></li>
<li>ci-tests (<a href="https://github.com/electron-userland/electron-builder/issues/5523">#5523</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/ced6e50b93c621de5de07838205d739010e2526b">ced6e50</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>electron-updater:</strong> follow <code>autoInstallOnAppQuit = false</code> on macOS (<a href="https://github.com/electron-userland/electron-builder/issues/5271">#5271</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/1643d569600a197858585e895e3176948d3eec85">1643d56</a>)</li>
<li>add support for executableName to non-Linux Platforms (<a href="https://github.com/electron-userland/electron-builder/issues/5409">#5409</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/106b68010f2daa0fb7d370c889b4a5494fa2887f">106b680</a>)</li>
<li>Custom electronDist callback (<a href="https://github.com/electron-userland/electron-builder/issues/5527">#5527</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/4f4e0187715a57a358ab8ccfefef3fd0f8186584">4f4e018</a>)</li>
<li>macOS default architecture (<a href="https://github.com/electron-userland/electron-builder/issues/5495">#5495</a>) (<a href="https://github.com/electron-userland/electron-builder/issues/5504">#5504</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/5203d7eb15726605e8987aeed7a5ccedc8152e04">5203d7e</a>)</li>
</ul>
<h2>22.10.4</h2>
<h3>Bug Fixes</h3>
<ul>
<li>CI unit tests (<a href="https://github.com/electron-userland/electron-builder/issues/5489">#5489</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/637334ddbadebf503a45f79adf0b481fcba98679">637334d</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li>Apple Silicon Universal Support (<a href="https://github.com/electron-userland/electron-builder/issues/5481">#5481</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/ca20151c3416324d2413f451dea0c9e3853bab79">ca20151</a>)</li>
<li><strong>mas:</strong> Apple Silicon support (<a href="https://github.com/electron-userland/electron-builder/issues/5484">#5484</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/6b7d30555d8f88a3a908a25adb3e8836ccdf5bc8">6b7d305</a>)</li>
</ul>
<h3>Reverts</h3>
<ul>
<li>Revert &quot;fix: codesign all binary-like files (<a href="https://github.com/electron-userland/electron-builder/issues/5322">#5322</a>)&quot; (<a href="https://github.com/electron-userland/electron-builder/issues/5488">#5488</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/026227888f8c537855abf6d6aa2141a692a6bc8e">0262278</a>), closes <a href="https://github.com/electron-userland/electron-builder/issues/5322">#5322</a> <a href="https://github.com/electron-userland/electron-builder/issues/5488">#5488</a></li>
</ul>
<h2>22.10.3</h2>
<h3>Bug Fixes</h3>
<ul>
<li>signing of playwright (<a href="https://github.com/electron-userland/electron-builder/issues/5451">#5451</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/50750683b11d5670a182bd72f7cab14023e2b030">5075068</a>)</li>
<li><strong>dmg:</strong> new version of mac_alias (<a href="https://github.com/electron-userland/electron-builder/issues/5460">#5460</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/a8acb583bc3c6fb1ff0dca2f07d1eefa26b1780a">a8acb58</a>)</li>
<li>compiler error and test updates (<a href="https://github.com/electron-userland/electron-builder/issues/5449">#5449</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/0dec1b8c198f1f9ca0124649883945ba561d11d3">0dec1b8</a>)</li>
<li><strong>AppImage:</strong> Add default argument --no-sandbox (<a href="https://github.com/electron-userland/electron-builder/issues/4496">#4496</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/ede6d50ddb6c23fe6bbb056bd80509c8f2ea0116">ede6d50</a>)</li>
<li><strong>linux:</strong> Linux icon is not set if path is not explicitly defined in config (<a href="https://github.com/electron-userland/electron-builder/issues/5385">#5385</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/9fd950bc046ca1748950f63894993947da8185c5">9fd950b</a>)</li>
<li><strong>nsis:</strong> cs locale typos in messages (<a href="https://github.com/electron-userland/electron-builder/issues/5358">#5358</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/0fb69b5d11e5c8aa707b7af709a0ab52f5019a9f">0fb69b5</a>)</li>
<li>codesign all binary-like files (<a href="https://github.com/electron-userland/electron-builder/issues/5322">#5322</a>) (<a href="https://github.com/electron-userland/electron-builder/commit/27ea1b2b9ce47a234e82772e09adf0bc7931e0df">27ea1b2</a>)</li>
</ul>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/electron-userland/electron-builder/commit/79940292bdd1a5de45b33453be492ea67529434b"><code>7994029</code></a> Cannot read property 'log' of undefined (<a href="https://github.com/electron-userland/electron-builder/issues/5622">#5622</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/1643d569600a197858585e895e3176948d3eec85"><code>1643d56</code></a> feat(electron-updater): follow <code>autoInstallOnAppQuit = false</code> on macOS (<a href="https://github.com/electron-userland/electron-builder/issues/5271">#5271</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/0360cd1705c7deab2e07f2a9abf8cdb652f945ff"><code>0360cd1</code></a> chore(build-utils): remove unreachable useless statement in createMessage (<a href="https://github.com/electron-userland/electron-builder/issues/5">https://github.com/facebook/flipper/issues/5</a>...</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/c348e318ce6e9a1d67febe40003aeb6badedea8f"><code>c348e31</code></a> Add &quot;open&quot; guard for AsarUtil to fix concurrent builds (<a href="https://github.com/electron-userland/electron-builder/issues/5567">#5567</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/11aa06c701a2ff091139a8bf8277151f7172efbb"><code>11aa06c</code></a> Detect CI tag for Bitbucket pipelines</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/8decc1867428ef532e81466e239a8b3ad04e4d9c"><code>8decc18</code></a> (fix) master branch depCheck + tests (<a href="https://github.com/electron-userland/electron-builder/issues/5630">#5630</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/46a8840bb4b3ed9b81ac65d3351debc4e34f30ce"><code>46a8840</code></a> fix: Look for the Amazon cred header to remove auth header (<a href="https://github.com/electron-userland/electron-builder/issues/5594">#5594</a>)</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/0ba839b72b6a13178ad5bc4b03a47f9aca980650"><code>0ba839b</code></a> fix(mac): fix &quot;Contents/Info.plist&quot; don't have identical SHAs when creating a...</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/60f7fe367c54f7c1274e2628534f43cb9a93fcf6"><code>60f7fe3</code></a> fix: updating nsis script to properly identify arm64 vs x64 vs ia32 package f...</li>
<li><a href="https://github.com/electron-userland/electron-builder/commit/5de0db981d069584933e88781a41a411e87ff1cd"><code>5de0db9</code></a> chore: lint</li>
<li>Additional commits viewable in <a href="https://github.com/electron-userland/electron-builder/compare/v22.9.1...v22.10.5">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=electron-builder&package-manager=npm_and_yarn&previous-version=22.9.1&new-version=22.10.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

 ---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

</details>

Pull Request resolved: #2068

Reviewed By: passy

Differential Revision: D27230125

Pulled By: priteshrnandgaonkar

fbshipit-source-id: 775e8d532b0516bf485b95e7057544d1d5a91e59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants