Skip to content

Commit 37a05f9

Browse files
authored
Enable AOT build for android-riscv64 (#2399)
* Enable AOT build for android-riscv64 * Run arm64/arm linux builds on QEMU * Combine linux, linux-musl, and android release pipeline
1 parent 473ddf9 commit 37a05f9

File tree

4 files changed

+70
-194
lines changed

4 files changed

+70
-194
lines changed

.github/workflows/build-android.yml

Lines changed: 0 additions & 80 deletions
This file was deleted.

.github/workflows/build-linux-musl.yml

Lines changed: 0 additions & 71 deletions
This file was deleted.

.github/workflows/build-linux.yml

Lines changed: 69 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,94 +8,129 @@ jobs:
88
build:
99
name: Build
1010

11-
runs-on: ${{ matrix.runner }}
11+
runs-on: ubuntu-latest
1212

1313
strategy:
1414
fail-fast: false
1515
matrix:
1616
include:
17-
- arch: x64
18-
runner: ubuntu-latest
17+
- image: docker.io/library/dart
1918
platform: linux/amd64
20-
- arch: ia32
21-
runner: ubuntu-latest
19+
target: linux-x64
20+
- image: docker.io/library/dart
2221
platform: linux/amd64
23-
- arch: arm64
24-
runner: linux-arm64
22+
target: linux-ia32
23+
- image: docker.io/library/dart
2524
platform: linux/arm64
26-
- arch: arm
27-
runner: linux-arm64
25+
target: linux-arm64
26+
- image: docker.io/library/dart
2827
platform: linux/arm/v7
29-
- arch: riscv64
30-
runner: ubuntu-latest
28+
target: linux-arm
29+
- image: docker.io/library/debian:unstable-slim
3130
platform: linux/riscv64
31+
target: linux-riscv64
32+
- image: ghcr.io/dart-musl/dart
33+
platform: linux/amd64
34+
target: linux-x64-musl
35+
- image: ghcr.io/dart-musl/dart
36+
platform: linux/amd64
37+
target: linux-ia32-musl
38+
- image: ghcr.io/dart-musl/dart
39+
platform: linux/arm64
40+
target: linux-arm64-musl
41+
- image: ghcr.io/dart-musl/dart
42+
platform: linux/arm/v7
43+
target: linux-arm-musl
44+
- image: ghcr.io/dart-musl/dart
45+
platform: linux/riscv64
46+
target: linux-riscv64-musl
47+
- image: ghcr.io/dart-android/dart
48+
platform: linux/amd64
49+
target: android-x64
50+
- image: ghcr.io/dart-android/dart
51+
platform: linux/amd64
52+
target: android-ia32
53+
- image: ghcr.io/dart-android/dart
54+
platform: linux/arm64
55+
target: android-arm64
56+
- image: ghcr.io/dart-android/dart
57+
platform: linux/arm64
58+
target: android-arm
59+
- image: ghcr.io/dart-android/dart
60+
platform: linux/riscv64
61+
target: android-riscv64
3262

3363
steps:
3464
- uses: actions/checkout@v4
3565

66+
- uses: ./.github/util/initialize
67+
with: {github-token: "${{ github.token }}"}
68+
3669
- name: Set up QEMU
37-
uses: docker/setup-qemu-action@v3
38-
with:
39-
image: tonistiigi/binfmt:master
70+
run: docker run --privileged --rm registry.fedoraproject.org/fedora-minimal /bin/sh -c "microdnf install --assumeyes --nodocs --setopt=install_weak_deps=False qemu-user-static systemd-udev && mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc && /usr/lib/systemd/systemd-binfmt --unregister && /usr/lib/systemd/systemd-binfmt"
4071

41-
- name: Compile Protobuf
72+
- name: Build
73+
if: matrix.image != 'ghcr.io/dart-android/dart' && matrix.image != 'docker.io/library/debian:unstable-slim'
4274
run: |
4375
docker run --rm -i \
76+
--platform ${{ matrix.platform }} \
4477
--volume "$PWD:$PWD" \
4578
--workdir "$PWD" \
46-
docker.io/library/dart <<'EOF'
79+
${{ matrix.image }} <<'EOF'
4780
set -e
48-
curl -fsSL -H "Authorization: Bearer ${{ github.token }}" "https://github.com/bufbuild/buf/releases/latest/download/buf-$(uname -s)-$(uname -m).tar.gz" | tar -xzC /usr/local --strip-components 1
4981
dart pub get
50-
dart run grinder protobuf
82+
dart run grinder pkg-standalone-${{ matrix.target }}
5183
EOF
5284
5385
- name: Build
54-
if: matrix.arch != 'riscv64'
86+
if: matrix.image == 'ghcr.io/dart-android/dart'
5587
run: |
5688
docker run --rm -i \
57-
--platform ${{ matrix.platform }} \
58-
--volume "$PWD:$PWD" \
59-
--workdir "$PWD" \
60-
docker.io/library/dart:latest <<'EOF'
89+
--privileged \
90+
--platform ${{ matrix.platform }} \
91+
--volume "$PWD:$PWD" \
92+
--workdir "$PWD" \
93+
${{ matrix.image }} <<'EOF'
6194
set -e
95+
export DART_SDK=/system/${{ endsWith(matrix.target, '64') && 'lib64' || 'lib' }}/dart
96+
export PATH=$DART_SDK/bin:$PATH
6297
dart pub get
63-
dart run grinder pkg-standalone-linux-${{ matrix.arch }}
98+
dart run grinder pkg-standalone-${{ matrix.target }}
6499
EOF
65100
66101
# https://github.com/dart-lang/dart-docker/issues/96#issuecomment-1669860829
67102
# There is no official riscv64 dart container image yet, build on debian:unstable instead.
68103
# The setup is adopted from: https://github.com/dart-lang/dart-docker/blob/main/Dockerfile-debian.template
69-
- name: Build riscv64
70-
if: matrix.arch == 'riscv64'
104+
- name: Build
105+
if: matrix.image == 'docker.io/library/debian:unstable-slim'
71106
run: |
72107
DART_CHANNEL=stable
73108
DART_VERSION=$(curl -fsSL https://storage.googleapis.com/dart-archive/channels/$DART_CHANNEL/release/latest/VERSION | yq .version)
74-
curl -fsSLO https://storage.googleapis.com/dart-archive/channels/$DART_CHANNEL/release/$DART_VERSION/sdk/dartsdk-linux-${{ matrix.arch }}-release.zip
109+
curl -fsSLO "https://storage.googleapis.com/dart-archive/channels/$DART_CHANNEL/release/$DART_VERSION/sdk/dartsdk-${{ matrix.target }}-release.zip"
75110
76111
docker run --rm -i \
77-
--platform ${{ matrix.platform }} \
78-
--volume "$PWD:$PWD" \
79-
--workdir "$PWD" \
80-
docker.io/library/debian:unstable-slim <<'EOF'
112+
--platform ${{ matrix.platform }} \
113+
--volume "$PWD:$PWD" \
114+
--workdir "$PWD" \
115+
${{ matrix.image }} <<'EOF'
81116
set -e
82117
apt-get update
83118
apt-get install -y --no-install-recommends ca-certificates curl dnsutils git openssh-client unzip
84119
85120
export DART_SDK=/usr/lib/dart
86121
export PATH=$DART_SDK/bin:/root/.pub-cache/bin:$PATH
87122
88-
SDK="dartsdk-linux-${{ matrix.arch }}-release.zip"
123+
SDK="dartsdk-${{ matrix.target }}-release.zip"
89124
unzip "$SDK" && mv dart-sdk "$DART_SDK" && rm "$SDK"
90125
91126
dart pub get
92-
dart run grinder pkg-standalone-linux-${{ matrix.arch }}
127+
dart run grinder pkg-standalone-${{ matrix.target }}
93128
EOF
94129
95130
- name: Upload Artifact
96131
uses: actions/upload-artifact@v4
97132
with:
98-
name: build-linux-${{ matrix.arch }}
133+
name: build-${{ matrix.target }}
99134
path: build/*.tar.gz
100135
if-no-files-found: error
101136
compression-level: 0

.github/workflows/release.yml

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,10 @@ on:
44
workflow_call:
55

66
jobs:
7-
build_android:
8-
uses: ./.github/workflows/build-android.yml
9-
secrets: inherit
10-
117
build_linux:
128
uses: ./.github/workflows/build-linux.yml
139
secrets: inherit
1410

15-
build_linux_musl:
16-
uses: ./.github/workflows/build-linux-musl.yml
17-
secrets: inherit
18-
1911
build_macos:
2012
uses: ./.github/workflows/build-macos.yml
2113
secrets: inherit
@@ -27,7 +19,7 @@ jobs:
2719
release_github:
2820
name: Release Github
2921
runs-on: ubuntu-latest
30-
needs: [build_android, build_linux, build_linux_musl, build_macos, build_windows]
22+
needs: [build_linux, build_macos, build_windows]
3123

3224
steps:
3325
- uses: actions/checkout@v4

0 commit comments

Comments
 (0)