Description
Pre-flight checklist
- I have read the contribution documentation for this project.
- I agree to follow the code of conduct that this project uses.
- I have searched the issue tracker for a bug that matches the one I want to file, without success.
Electron Forge version
7.4.0
Electron version
v24.1.1
Operating system
macOS 11.3.1
Last known working Electron Forge version
--
Expected behavior
Using electron/universal
configured with osxUniversal
in forge config, we expect all dependent modules will receive the correct arch
and build themselves accordingly.
Actual behavior
We are using ffmpeg-static
in our Electron app, but when the universal build is created, only the arm64 ffmpeg binary exists. I have confirmed that the ffmpeg-static
module can be rebuilt in CLI with an arch
param (npm rebuild --arch=x64 -f ffmpeg-static
and confirmed with file node_modules/ffmpeg-static/ffmpeg
). In this case the correct binary is build/fetched. But when running the universal build with forge, only os.arch()
seems to be respected, which in this case is an M1 machine.
It seems electron-forge isn't passing the correct arch to dependencies. If there were hooks in the universal build process, or some env vars set, I could manually rebuild this one ffmpeg module according to an arch. For example ffmpeg-static
does obey process.env.npm_config_arch
, so if I were able to set that in between the x64 and arm64 builds (or electron/universal did), the module would build the correct ffmpeg binary.
I have attempted using hooks in electron-forge to try and switch based on arch
, but that value is always universal
. Also, building the app on separate Intel and M1 machines does produce the appropriate ffmpeg binary.
Steps to reproduce
Set up a project with electron-forge
and ffmpeg-static
, then attempt a universal Mac build.
Additional information
No response