From 216d7d035fc4dca1f564ffcd40ec07d5a14024c0 Mon Sep 17 00:00:00 2001 From: Reilly Wood <26268125+rgwood@users.noreply.github.com> Date: Thu, 22 Dec 2022 06:52:07 -0800 Subject: [PATCH] Add cross-rs config (#7559) Cross-compiling Nu can be a little tricky due to dependencies. This PR makes it easy to use [`cross-rs`](https://github.com/cross-rs/cross), a popular tool for cross-compiling Rust code using Docker: ```bash cross build --target aarch64-unknown-linux-musl --release ``` I find this useful for compiling ARM binaries from x64. Easy to add more target triples later as needed. --- Cross.toml | 9 +++++++++ docker/cross-rs/aarch64-unknown-linux-gnu.dockerfile | 5 +++++ docker/cross-rs/aarch64-unknown-linux-musl.dockerfile | 5 +++++ 3 files changed, 19 insertions(+) create mode 100644 Cross.toml create mode 100644 docker/cross-rs/aarch64-unknown-linux-gnu.dockerfile create mode 100644 docker/cross-rs/aarch64-unknown-linux-musl.dockerfile diff --git a/Cross.toml b/Cross.toml new file mode 100644 index 000000000..2200509a6 --- /dev/null +++ b/Cross.toml @@ -0,0 +1,9 @@ +# Configuration for cross-rs: https://github.com/cross-rs/cross +# Run cross-rs like this: +# cross build --target aarch64-unknown-linux-musl --release + +[target.aarch64-unknown-linux-gnu] +dockerfile = "./docker/cross-rs/aarch64-unknown-linux-gnu.dockerfile" + +[target.aarch64-unknown-linux-musl] +dockerfile = "./docker/cross-rs/aarch64-unknown-linux-musl.dockerfile" \ No newline at end of file diff --git a/docker/cross-rs/aarch64-unknown-linux-gnu.dockerfile b/docker/cross-rs/aarch64-unknown-linux-gnu.dockerfile new file mode 100644 index 000000000..7d2c58baa --- /dev/null +++ b/docker/cross-rs/aarch64-unknown-linux-gnu.dockerfile @@ -0,0 +1,5 @@ +FROM ghcr.io/cross-rs/aarch64-unknown-linux-gnu:latest + +RUN dpkg --add-architecture arm64 && \ + apt-get update && \ + apt-get install --assume-yes libssl-dev:arm64 clang diff --git a/docker/cross-rs/aarch64-unknown-linux-musl.dockerfile b/docker/cross-rs/aarch64-unknown-linux-musl.dockerfile new file mode 100644 index 000000000..a9922a2cc --- /dev/null +++ b/docker/cross-rs/aarch64-unknown-linux-musl.dockerfile @@ -0,0 +1,5 @@ +FROM ghcr.io/cross-rs/aarch64-unknown-linux-musl:latest + +RUN dpkg --add-architecture arm64 && \ + apt-get update && \ + apt-get install --assume-yes libssl-dev:arm64 clang