feat: multi-platform multi-arch support (arm64, amd64, macOS Universal)
- Dominant language
- JavaScript
- Stars
- 6.6k
- Forks
- 903
- Avg merge
- 4d 13h
- Merged PRs (30d)
- 5
Description
This issue is intended to track the work and requests for distributing IPFS-Desktop across multiple architectures on multiple platforms (arm64, amd64, macOS Universal, and any others that pop up).
We have received requests for supporting the following currently unsupported builds:
| Platform | Architecture | Native build needed | Kubo supported? | Related Issues |
|--------------|--------------|---------------------|----------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|
| macOS | arm64 | Darwin arm64 | Yes - https://dist.ipfs.tech/kubo/v0.23.0/kubo_v0.23.0_darwin-arm64.tar.gz | https://github.com/ipfs/ipfs-desktop/issues/1827, https://github.com/ipfs/ipfs-desktop/pull/1856 |
| macOS | Universal | Darwin arm64 + Darwin amd64 | Not directly, need to explicitly build universal build that wraps both. | https://github.com/ipfs/ipfs-desktop/issues/1827, https://github.com/ipfs/ipfs-desktop/pull/1856 |
| Raspberry Pi | arm64 | Linux arm64 | Yes - https://dist.ipfs.tech/kubo/v0.23.0/kubo_v0.23.0_linux-arm64.tar.gz | https://github.com/ipfs/ipfs-desktop/issues/165 |
| Windows | arm64 | Windows arm64 | Yes - https://dist.ipfs.tech/kubo/v0.23.0/kubo_v0.23.0_windows-arm64.zip | https://github.com/ipfs/ipfs-desktop/issues/2656 |
---
### Is IPFS-Desktop opposed to supporting more architectures and platforms?
No. We would love to support more platform+arch with IPFS-Desktop.
### What requirements/limitations are there for supporting a platform+arch?
The only limiting factors preventing this work are:
1. time & dev resourcing
2. whether Kubo supports the platform+arch
3. whether electron-builder supports the platform+arch
4. Whether we have github-action runners available for building and signing a particular platform+arch combination.
### Articles on how to accomplish.
Two good resources I found are:
* https://www.beekeeperstudio.io/blog/electron-apps-for-arm-and-raspberry-pi
* https://github.com/orgs/community/discussions/25319
### Other Electron applications bundling platform+arch's we want
I [searched for electron-builder stuff in github CI files](https://github.com/search?q=path%3A.github%2Fworkflows%2F*.yml%20electron-builder&type=code) and found a few examples for us to look at.
https://github.com/jgraph/drawio-desktop seems like a promising place to look for configs and stuff to update our electron-builder flow.. seems like a pretty popular app that's up to date with [a really clear electron-builder integration](https://github.com/search?q=repo%3Ajgraph%2Fdrawio-desktop%20electron-builder&type=code), and multiple arch builds: including mac universal build.
---
```[tasklist]
### Tasks
- [ ] Figure out what arm64 hosted-runner kubo-releaser is using
- [ ] update electron & electron-builder
- [ ] Investigate https://github.com/jgraph/drawio-desktop for required changes to electron-builder configs
- [ ] call electron-builder from arm64 hosted-runners with flags as mentioned in https://www.beekeeperstudio.io/blog/electron-apps-for-arm-and-raspberry-pi and at https://www.electron.build/cli
- [ ] Ensure auto-update script is appropriately considering arch type
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.