From 0a9fb5bf04e0bfc59cb6d76651bba1ee2779381d Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Tue, 30 May 2023 23:56:05 +0100 Subject: [PATCH 01/12] Added two new items to the build matrix for android (aarch64 and x86_64) --- .github/workflows/main.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8de9ac36eef9..64b3b2813f33 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -706,6 +706,12 @@ jobs: - build: riscv64gc-linux os: ubuntu-latest target: riscv64gc-unknown-linux-gnu + - build: aarch64-android + os: ubuntu-latest + target: aarch64-linux-android + - build: x86_64-android + os: ubuntu-latest + target: x86_64-linux-android steps: - uses: actions/checkout@v3 with: From 82f724de750b29c2548855f7e710e534c6d75e5c Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Wed, 31 May 2023 00:05:15 +0100 Subject: [PATCH 02/12] Added setup for android tools --- .github/workflows/main.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 64b3b2813f33..364db2a947bc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -729,6 +729,18 @@ jobs: rustup target add ${{ matrix.target }} if: matrix.target != '' + - run: rustup target add aarch64-linux-android + - run: rustup target add x86_64-linux-android + - name: Setup Android SDK + uses: android-actions/setup-android@v2 + - uses: actions/cache@v3 + with: + path: ${{ runner.tool_cache }}/cargo-ndk + key: cargo-ndk-bin-${{ env.CARGO_NDK_VERSION }} + - run: echo "${{ runner.tool_cache }}/cargo-ndk/bin" >> $GITHUB_PATH + - run: cargo install --root ${{ runner.tool_cache }}/cargo-ndk --version ${{ env.CARGO_NDK_VERSION }} cargo-ndk + - run: cargo ndk -t arm64-v8a -t x86_64 check -p wasmtime + # Build `wasmtime` and executables. Note that we include `all-arch` so our # release artifacts can be used to compile `.cwasm`s for other targets. - run: $CENTOS cargo build --release --bin wasmtime --features all-arch From 9c1ab14c159ee6cd1fa893530f2f20c6e69306d8 Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Wed, 31 May 2023 00:18:24 +0100 Subject: [PATCH 03/12] Updated docs to add android targets to tier 3 --- docs/stability-tiers.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/stability-tiers.md b/docs/stability-tiers.md index b12a6a4724f7..f28734a7983c 100644 --- a/docs/stability-tiers.md +++ b/docs/stability-tiers.md @@ -48,6 +48,8 @@ For explanations of what each tier means see below. | Target | `aarch64-apple-darwin` | CI testing | | Target | `aarch64-pc-windows-msvc` | CI testing, unwinding, full-time maintainer | | Target | `riscv64gc-unknown-linux-gnu` | full-time maintainer | +| Target | `x86_64-linux-android` | CI testing, full-time maintainer | +| Target | `aarch64-linux-android` | CI testing, full-time maintainer | | WASI Proposal | `wasi-nn` | More expansive CI testing | | WASI Proposal | `wasi-crypto` | CI testing, clear owner | | WebAssembly Proposal | `threads` | Complete implementation | From 87b8cdc4c9dc5cdb207e15790810fb46de27aad2 Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Thu, 1 Jun 2023 13:42:56 +0100 Subject: [PATCH 04/12] Removed `target add`, not necessary due to the same thing being done just above. prtest:full --- .github/workflows/main.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 364db2a947bc..209a3e37e4f7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -729,8 +729,6 @@ jobs: rustup target add ${{ matrix.target }} if: matrix.target != '' - - run: rustup target add aarch64-linux-android - - run: rustup target add x86_64-linux-android - name: Setup Android SDK uses: android-actions/setup-android@v2 - uses: actions/cache@v3 From aed9a88fd38130e6ef610cdba8f4742ff2c9687b Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Thu, 1 Jun 2023 14:05:34 +0100 Subject: [PATCH 05/12] - Removed cargo check - Added some conditions to skip android steps in on-android targets --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 209a3e37e4f7..065dc11b0887 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -731,13 +731,14 @@ jobs: - name: Setup Android SDK uses: android-actions/setup-android@v2 + if: contains("android", matrix.target) - uses: actions/cache@v3 + if: contains("android", matrix.target) with: path: ${{ runner.tool_cache }}/cargo-ndk key: cargo-ndk-bin-${{ env.CARGO_NDK_VERSION }} - run: echo "${{ runner.tool_cache }}/cargo-ndk/bin" >> $GITHUB_PATH - run: cargo install --root ${{ runner.tool_cache }}/cargo-ndk --version ${{ env.CARGO_NDK_VERSION }} cargo-ndk - - run: cargo ndk -t arm64-v8a -t x86_64 check -p wasmtime # Build `wasmtime` and executables. Note that we include `all-arch` so our # release artifacts can be used to compile `.cwasm`s for other targets. From d6a0e6a3dd2445c293ed68e0a47f97fa9f1bd716 Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Thu, 1 Jun 2023 14:15:04 +0100 Subject: [PATCH 06/12] prtest:full --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 065dc11b0887..9434729ac8fe 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -738,7 +738,7 @@ jobs: path: ${{ runner.tool_cache }}/cargo-ndk key: cargo-ndk-bin-${{ env.CARGO_NDK_VERSION }} - run: echo "${{ runner.tool_cache }}/cargo-ndk/bin" >> $GITHUB_PATH - - run: cargo install --root ${{ runner.tool_cache }}/cargo-ndk --version ${{ env.CARGO_NDK_VERSION }} cargo-ndk + - run: cargo install --root ${{ runner.tool_cache }}/cargo-ndk --version ${{ env.CARGO_NDK_VERSION }} cargo-ndk # Build `wasmtime` and executables. Note that we include `all-arch` so our # release artifacts can be used to compile `.cwasm`s for other targets. From 6af95cc32f48bc3e0b767bbf284e6f591a0d9d33 Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Thu, 1 Jun 2023 14:27:23 +0100 Subject: [PATCH 07/12] Fixed string double quotes prtest:full --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9434729ac8fe..f04fea6fdf90 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -731,9 +731,9 @@ jobs: - name: Setup Android SDK uses: android-actions/setup-android@v2 - if: contains("android", matrix.target) + if: contains('android', matrix.target) - uses: actions/cache@v3 - if: contains("android", matrix.target) + if: contains('android', matrix.target) with: path: ${{ runner.tool_cache }}/cargo-ndk key: cargo-ndk-bin-${{ env.CARGO_NDK_VERSION }} From 82ac9525e7474c12507bc142b17ecda556cf3069 Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Thu, 1 Jun 2023 14:57:08 +0100 Subject: [PATCH 08/12] Swapped `aarch64-linux-android` to run on `aarch64-linux` prtest:full --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f04fea6fdf90..51efba558f53 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -707,7 +707,7 @@ jobs: os: ubuntu-latest target: riscv64gc-unknown-linux-gnu - build: aarch64-android - os: ubuntu-latest + os: aarch64-linux target: aarch64-linux-android - build: x86_64-android os: ubuntu-latest From ac8d1641c415db51efeb003a28b959cd04894999 Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Sun, 11 Jun 2023 23:39:29 +0100 Subject: [PATCH 09/12] Attempted to prevent using fancy docker stuff for android builds --- .github/actions/binary-compatible-builds/main.js | 5 +++++ .github/workflows/main.yml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/actions/binary-compatible-builds/main.js b/.github/actions/binary-compatible-builds/main.js index 378c5c202c9c..cb005adf4bfa 100755 --- a/.github/actions/binary-compatible-builds/main.js +++ b/.github/actions/binary-compatible-builds/main.js @@ -21,6 +21,11 @@ if (process.platform == 'win32') { return; } +// On Android skip the fancy things with containers +if (process.env.INPUT_NAME.indexOf("android") >= 0) { + return; +} + // ... and on Linux we do fancy things with containers. We'll spawn an old // CentOS container in the background with a super old glibc, and then we'll run // commands in there with the `$CENTOS` env var. diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 51efba558f53..f04fea6fdf90 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -707,7 +707,7 @@ jobs: os: ubuntu-latest target: riscv64gc-unknown-linux-gnu - build: aarch64-android - os: aarch64-linux + os: ubuntu-latest target: aarch64-linux-android - build: x86_64-android os: ubuntu-latest From 87bf5f7a8475abb533e7fc375174cf91d7ac0c9b Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Tue, 13 Jun 2023 02:12:30 +0100 Subject: [PATCH 10/12] Added NDK version to env --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f04fea6fdf90..c997224c3102 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -681,6 +681,8 @@ jobs: needs: determine if: needs.determine.outputs.run-full name: Release build for ${{ matrix.build }} + env: + CARGO_NDK_VERSION: 2.12.2 runs-on: ${{ matrix.os }} strategy: matrix: From e42111e330242b0513fb16ff46fb654231c29638 Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Wed, 12 Jul 2023 15:00:18 +0100 Subject: [PATCH 11/12] Attempting to build with cargo-ndk --- .github/workflows/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c997224c3102..c66c3d359c30 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -742,6 +742,9 @@ jobs: - run: echo "${{ runner.tool_cache }}/cargo-ndk/bin" >> $GITHUB_PATH - run: cargo install --root ${{ runner.tool_cache }}/cargo-ndk --version ${{ env.CARGO_NDK_VERSION }} cargo-ndk + - if: contains('android', matrix.target) + run: cargo ndk -t "${{ matrix.target }}" build wasmtime --release --features all-arch + # Build `wasmtime` and executables. Note that we include `all-arch` so our # release artifacts can be used to compile `.cwasm`s for other targets. - run: $CENTOS cargo build --release --bin wasmtime --features all-arch From bd864101ae689c444821c17064c17318d14fc8d8 Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Wed, 12 Jul 2023 15:13:08 +0100 Subject: [PATCH 12/12] running `cargo add matrix.target` --- .github/workflows/main.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c66c3d359c30..7dd074a1f2e1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -734,16 +734,14 @@ jobs: - name: Setup Android SDK uses: android-actions/setup-android@v2 if: contains('android', matrix.target) - - uses: actions/cache@v3 - if: contains('android', matrix.target) + uses: actions/cache@v3 with: path: ${{ runner.tool_cache }}/cargo-ndk key: cargo-ndk-bin-${{ env.CARGO_NDK_VERSION }} - - run: echo "${{ runner.tool_cache }}/cargo-ndk/bin" >> $GITHUB_PATH - - run: cargo install --root ${{ runner.tool_cache }}/cargo-ndk --version ${{ env.CARGO_NDK_VERSION }} cargo-ndk - - - if: contains('android', matrix.target) - run: cargo ndk -t "${{ matrix.target }}" build wasmtime --release --features all-arch + run: | + rustup target add ${{ matrix.target }} + echo "${{ runner.tool_cache }}/cargo-ndk/bin" >> $GITHUB_PATH + cargo install --root ${{ runner.tool_cache }}/cargo-ndk --version ${{ env.CARGO_NDK_VERSION }} cargo-ndk # Build `wasmtime` and executables. Note that we include `all-arch` so our # release artifacts can be used to compile `.cwasm`s for other targets.