From 4a870fcccdbb9f705133f8335e4823e04f871a32 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Sun, 5 Apr 2020 05:12:41 +0200 Subject: [PATCH] Re-enable AArch64/ARM64 builds on Github Actions (#343) --- .github/workflows/ci.yml | 26 +++++++++++++++++++++++++- build.rs | 2 +- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 70ffa709..5b5e246e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,8 +33,15 @@ jobs: - os: windows-2019 target: x86_64-pc-windows-msvc + variant: release # Note: we do not support windows debug builds. + + - os: ubuntu-16.04 + target: aarch64-unknown-linux-gnu + variant: debug + + - os: ubuntu-16.04 + target: aarch64-unknown-linux-gnu variant: release - # Note we do not support windows debug builds. env: V8_FROM_SOURCE: true @@ -66,6 +73,23 @@ jobs: python-version: 2.7.x architecture: x64 + - name: Install cross compilation toolchain + if: matrix.config.target == 'aarch64-unknown-linux-gnu' + run: | + rustup target add aarch64-unknown-linux-gnu + + sudo apt update + sudo apt install -yq --no-install-suggests --no-install-recommends \ + binfmt-support g++-5-aarch64-linux-gnu g++-5-multilib \ + gcc-5-aarch64-linux-gnu libc6-arm64-cross qemu qemu-user \ + qemu-user-binfmt + + sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 \ + /lib/ld-linux-aarch64.so.1 + + echo "::set-env name=CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER::/usr/bin/aarch64-linux-gnu-gcc-5" + echo "::set-env name=QEMU_LD_PREFIX::/usr/aarch64-linux-gnu" + - name: Configure cargo data directory # After this point, all cargo registry and crate data is stored in # $GITHUB_WORKSPACE/target/cargo. This allows us to cache only the files diff --git a/build.rs b/build.rs index 42865b6e..0f52609d 100644 --- a/build.rs +++ b/build.rs @@ -89,7 +89,7 @@ fn build_v8() { } if env::var("TARGET").unwrap() == "aarch64-unknown-linux-gnu" { - gn_args.push("target_cpu=arm64".to_string()); + gn_args.push(r#"target_cpu="arm64""#.to_string()); gn_args.push("use_sysroot=true".to_string()); maybe_install_sysroot("arm64"); maybe_install_sysroot("amd64");