@@ -14,81 +14,123 @@ jobs:
1414 fail-fast : false
1515 matrix :
1616 include :
17- - arch : x64
17+ - image : docker.io/library/dart
1818 platform : linux/amd64
19- - arch : ia32
19+ target : linux-x64
20+ - image : docker.io/library/dart
2021 platform : linux/amd64
21- - arch : arm64
22+ target : linux-ia32
23+ - image : docker.io/library/dart
2224 platform : linux/arm64
23- - arch : arm
25+ target : linux-arm64
26+ - image : docker.io/library/dart
2427 platform : linux/arm/v7
25- - arch : riscv64
28+ target : linux-arm
29+ - image : docker.io/library/debian:unstable-slim
2630 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
2762
2863 steps :
2964 - uses : actions/checkout@v4
3065
66+ - uses : ./.github/util/initialize
67+ with : {github-token: "${{ github.token }}"}
68+
3169 - name : Set up QEMU
32- uses : ./.github/util/setup- qemu
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"
3371
34- - name : Compile Protobuf
72+ - name : Build
73+ if : matrix.image != 'ghcr.io/dart-android/dart' && matrix.image != 'docker.io/library/debian:unstable-slim'
3574 run : |
3675 docker run --rm -i \
76+ --platform ${{ matrix.platform }} \
3777 --volume "$PWD:$PWD" \
3878 --workdir "$PWD" \
39- docker.io/library/dart <<'EOF'
79+ ${{ matrix.image }} <<'EOF'
4080 set -e
41- 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
4281 dart pub get
43- dart run grinder protobuf
82+ dart run grinder pkg-standalone-${{ matrix.target }}
4483 EOF
4584
4685 - name : Build
47- if : matrix.arch != 'riscv64 '
86+ if : matrix.image == 'ghcr.io/dart-android/dart '
4887 run : |
4988 docker run --rm -i \
50- --platform ${{ matrix.platform }} \
51- --volume "$PWD:$PWD" \
52- --workdir "$PWD" \
53- docker.io/library/dart:latest <<'EOF'
89+ --privileged \
90+ --platform ${{ matrix.platform }} \
91+ --volume "$PWD:$PWD" \
92+ --workdir "$PWD" \
93+ ${{ matrix.image }} <<'EOF'
5494 set -e
95+ export DART_SDK=/system/${{ endsWith(matrix.target, '64') && 'lib64' || 'lib' }}/dart
96+ export PATH=$DART_SDK/bin:$PATH
5597 dart pub get
56- dart run grinder pkg-standalone-linux- ${{ matrix.arch }}
98+ dart run grinder pkg-standalone-${{ matrix.target }}
5799 EOF
58100
59101 # https://github.com/dart-lang/dart-docker/issues/96#issuecomment-1669860829
60102 # There is no official riscv64 dart container image yet, build on debian:unstable instead.
61103 # The setup is adopted from: https://github.com/dart-lang/dart-docker/blob/main/Dockerfile-debian.template
62- - name : Build riscv64
63- if : matrix.arch == 'riscv64 '
104+ - name : Build
105+ if : matrix.image == 'docker.io/library/debian:unstable-slim '
64106 run : |
65107 DART_CHANNEL=stable
66108 DART_VERSION=$(curl -fsSL https://storage.googleapis.com/dart-archive/channels/$DART_CHANNEL/release/latest/VERSION | yq .version)
67- 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"
68110
69111 docker run --rm -i \
70- --platform ${{ matrix.platform }} \
71- --volume "$PWD:$PWD" \
72- --workdir "$PWD" \
73- docker.io/library/debian:unstable-slim <<'EOF'
112+ --platform ${{ matrix.platform }} \
113+ --volume "$PWD:$PWD" \
114+ --workdir "$PWD" \
115+ ${{ matrix.image }} <<'EOF'
74116 set -e
75117 apt-get update
76118 apt-get install -y --no-install-recommends ca-certificates curl dnsutils git openssh-client unzip
77119
78120 export DART_SDK=/usr/lib/dart
79121 export PATH=$DART_SDK/bin:/root/.pub-cache/bin:$PATH
80122
81- SDK="dartsdk-linux- ${{ matrix.arch }}-release.zip"
123+ SDK="dartsdk-${{ matrix.target }}-release.zip"
82124 unzip "$SDK" && mv dart-sdk "$DART_SDK" && rm "$SDK"
83125
84126 dart pub get
85- dart run grinder pkg-standalone-linux- ${{ matrix.arch }}
127+ dart run grinder pkg-standalone-${{ matrix.target }}
86128 EOF
87129
88130 - name : Upload Artifact
89131 uses : actions/upload-artifact@v4
90132 with :
91- name : build-linux- ${{ matrix.arch }}
133+ name : build-${{ matrix.target }}
92134 path : build/*.tar.gz
93135 if-no-files-found : error
94136 compression-level : 0
0 commit comments