ipfs / ipfs/ipfs-desktop

feat: multi-platform multi-arch support (arm64, amd64, macOS Universal)

Open
#2,681 0 comments 0 reactions 0 assignees View on GitHub
area/Kubo area/linux area/macos area/windows effort/weeks exp/wizard help wanted kind/architecture kind/enhancement need/analysis P1 status/ready topic/infra topic/interop topic/linux topic/macos topic/windows
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.