Skip to content

Commit

Permalink
Merge pull request #1304 from mietzen/patch-1
Browse files Browse the repository at this point in the history
Guide for cross compiling using docker
  • Loading branch information
eladyn authored Oct 17, 2024
2 parents 9d54de1 + 3cf858b commit 690ab7e
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
- [Installing on a Raspberry Pi](./installation/Raspberry-Pi.md)
- [Installing on Ubuntu (from source)](./installation/Ubuntu.md)
- [Cross Compiling on Ubuntu](./installation/Cross-Compiling-on-Ubuntu.md)
- [Cross Compilation using Docker](./installation/cross-compile-using-docker.md)
- [Installing with Homebrew on macOS](./installation/MacOS.md)
- [Installing on FreeBSD](./installation/FreeBSD.md)
- [Installing on OpenBSD](./installation/OpenBSD.md)
Expand Down
41 changes: 41 additions & 0 deletions docs/src/installation/cross-compile-using-docker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Cross Compilation using Docker

We can also use `docker` to cross compile on every platform and OS that runs `docker` and `qemu`:

1. Setup a docker [custom builder](https://docs.docker.com/build/building/multi-platform/#create-a-custom-builder)

```shell
docker buildx create \
--name container-builder \
--driver docker-container \
--use --bootstrap
```

If you are **not** using Docker-Desktop you might have to install [QEMU](https://docs.docker.com/build/building/multi-platform/#install-qemu-manually)

2. Create a docker `compose-file.yml`

Here we are building a `arm64` binary, so we set `platform: linux/arm64`

```yaml
services:
build-container:
image: rust:1.79-bookworm
platform: linux/arm64
command: bash -c "
apt-get update &&
apt-get install -y \
libasound2-dev \
libssl-dev \
pkg-config &&
curl -sSL https://api.github.com/repos/Spotifyd/spotifyd/tarball/v0.3.5 | tar xz -C /spotifyd --strip-components=1 &&
cargo build --release &&
cp /spotifyd/target/release/spotifyd /build/"
working_dir: /spotifyd
volumes:
- ./:/build
```

3. Run `docker compose up`

This will copy the build `spotifyd` binary in the current directory.

0 comments on commit 690ab7e

Please sign in to comment.