Skip to content

Commit

Permalink
devcontainer: Cross-build extra cargo tools for arm64
Browse files Browse the repository at this point in the history
  • Loading branch information
barrbrain committed Dec 1, 2023
1 parent 674c550 commit ade8c9c
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 6 deletions.
6 changes: 1 addition & 5 deletions .devcontainer/Dockerfile.arm64
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,7 @@ RUN dpkg --add-architecture amd64 \
meson ninja-build \
&& rm -rf /var/lib/apt/lists/*
RUN rustup target add x86_64-unknown-linux-gnu
RUN export CARGO_PROFILE_RELEASE_STRIP=true \
&& cargo install -q cargo-c --version "0.9.27+cargo-0.74.0" \
&& cargo install -q cargo-criterion --version "1.1.0" \
&& cargo install -q cargo-fuzz --version "0.11.2" \
&& rm -rf /usr/local/cargo/registry
ADD cargo-extra.tar /
ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER=qemu-x86_64
ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUSTFLAGS=-Clinker=x86_64-linux-gnu-gcc
ENV PKG_CONFIG_ALLOW_CROSS_x86_64_unknown_linux_gnu=1
Expand Down
11 changes: 11 additions & 0 deletions .devcontainer/cargo-extra-cross.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash
apt-get update
apt-get install -y libcurl4-openssl-dev:arm64 libssl-dev:arm64 zlib1g-dev:arm64
export PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig
export CARGO_PROFILE_RELEASE_STRIP=true
export CARGO_BUILD_TARGET=aarch64-unknown-linux-gnu
cargo install cargo-c --version "0.9.27+cargo-0.74.0"
cargo install cargo-criterion --version "1.1.0"
cargo install cargo-fuzz --version "0.11.2"
tar cf cargo-extra.tar /usr/local/cargo/.crates.toml \
/usr/local/cargo/bin/{cargo-capi,cargo-cbuild,cargo-cinstall,cargo-ctest,cargo-criterion,cargo-fuzz}
4 changes: 3 additions & 1 deletion .github/workflows/devcontainer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
- name: Install devcontainer-cli
run: npm install -g @devcontainers/cli
- name: Register qemu binfmt-misc entries for Docker
run: docker run --privileged --rm tonistiigi/binfmt --install all
run: docker run --privileged --rm tonistiigi/binfmt --install aarch64
- name: Authenticate with ghcr.io
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin
- name: Build devcontainer image
Expand All @@ -32,6 +32,8 @@ jobs:
IMAGE_TAG=${IMAGE_ID,,}:$VERSION
devcontainer build --image-name $IMAGE_TAG-amd64 --platform linux/amd64 --push \
--workspace-folder $PWD --config .devcontainer/build-amd64.json
docker run -v $PWD/.devcontainer:/devcontainer --rm $IMAGE_TAG-amd64 \
bash -c "cd /devcontainer; ./cargo-extra-cross.sh"
devcontainer build --image-name $IMAGE_TAG-arm64 --platform linux/arm64 --push \
--workspace-folder $PWD --config .devcontainer/build-arm64.json
docker manifest create $IMAGE_TAG \
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ target/
*.png
*.bin
secret_key
/.devcontainer/cargo-extra.tar

0 comments on commit ade8c9c

Please sign in to comment.