Skip to content

Commit

Permalink
Try #878: --target cross
Browse files Browse the repository at this point in the history
  • Loading branch information
bors[bot] authored Jun 28, 2022
2 parents eb2b8ad + e449476 commit 768aa9c
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 1 deletion.
15 changes: 14 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ jobs:
- { target: thumbv7em-none-eabi, os: ubuntu-latest, std: 1 }
- { target: thumbv7em-none-eabihf, os: ubuntu-latest, std: 1 }
- { target: thumbv7m-none-eabi, os: ubuntu-latest, std: 1 }
- { target: cross, os: ubuntu-latest }
build:
name: target (${{ matrix.pretty }},${{ matrix.os }})
Expand Down Expand Up @@ -270,7 +271,7 @@ jobs:
IMAGE: ${{ steps.build-docker-image.outputs.image }}
shell: bash
- name: Test Image
if: steps.prepare-meta.outputs.has-image && (github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/trying')
if: (steps.prepare-meta.outputs.has-image && (github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/trying')) && matrix.target != 'cross'
run: ./ci/test.sh
env:
TARGET: ${{ matrix.target }}
Expand All @@ -287,6 +288,18 @@ jobs:
target: ${{ matrix.target }}
image: ${{ steps.build-docker-image.outputs.image }}

- name: Test Cross Image
if: (steps.prepare-meta.outputs.has-image && (github.ref == 'refs/heads/staging' || github.ref == 'refs/heads/trying')) && matrix.target == 'cross'
run: ./ci/test-cross-image.sh
env:
TARGET: 'aarch64-unknown-linux-gnu'
shell: bash
- uses: ./.github/actions/cargo-install-upload-artifacts
if: matrix.deploy
with:
target: ${{ matrix.target }}
image: ${{ steps.build-docker-image.outputs.image }}

- name: Login to GitHub Container Registry
if: steps.prepare-meta.outputs.has-image
uses: docker/login-action@v1
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).

## [Unreleased] - ReleaseDate

### Added

- #878 - added a dockerfile containing cross.

### Changed

- #869 - ensure cargo configuration environment variable flags are passed to the docker container.
Expand Down
23 changes: 23 additions & 0 deletions ci/test-cross-image.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/usr/bin/env bash
# shellcheck disable=SC2086

set -x
set -eo pipefail

if [[ -z "${TARGET}" ]]; then
export TARGET="aarch64-unknown-linux-gnu"
fi

main() {
docker run --rm -e TARGET \
-v /var/run/docker.sock:/var/run/docker.sock \
ghcr.io/cross-rs/cross:main sh -c '
#!/usr/bin/env sh
td="$(mktemp -d)"
git clone --depth 1 https://github.com/cross-rs/rust-cpp-hello-word "${td}"
cd "${td}"
cross run --target "${TARGET}"
'
}

main "${@}"
22 changes: 22 additions & 0 deletions docker/Dockerfile.cross
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# we build our images in 2 steps, to ensure we have a compact
# image, since we want to add our current subdirectory

FROM ubuntu:20.04 as rust
ARG DEBIAN_FRONTEND=noninteractive
COPY lib.sh cross.sh /
RUN /cross.sh

FROM ubuntu:20.04
COPY --from=rust /root/.cargo /root/.cargo
COPY --from=rust /root/.rustup /root/.rustup

# need some basic devtools, and requirements for docker
RUN apt-get update && apt-get install --assume-yes --no-install-recommends \
ca-certificates \
curl \
git

RUN curl -fsSL https://get.docker.com | sh

ENV CROSS_CONTAINER_IN_CONTAINER=1 \
PATH=/root/.cargo/bin:$PATH
23 changes: 23 additions & 0 deletions docker/cross.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/usr/bin/env bash
# shellcheck disable=SC1091

set -x
set -euo pipefail

. lib.sh

main() {
install_packages ca-certificates curl gcc libc6-dev

# since we can't share outside the current docker context,
# we need to install from git, rather than from path
curl --proto "=https" --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME"/.cargo/env
cargo install cross --git https://github.com/cross-rs/cross --locked

purge_packages

rm -rf "${0}"
}

main "${@}"

0 comments on commit 768aa9c

Please sign in to comment.