Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/util/initialize/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Initialize
description: Check out Dart Sass and build the embedded protocol buffer.
inputs:
github-token: {required: true}
node-version: {required: false, default: 18}
node-version: {required: false, default: 'lts/*'}
dart-sdk: {required: false, default: stable}
architecture: {required: false}
runs:
Expand Down
71 changes: 71 additions & 0 deletions .github/workflows/build-android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Build for android

on:
workflow_call:
workflow_dispatch:

jobs:
build:
name: Build

runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
include:
- arch: x64
lib: lib64
platform: linux/amd64
- arch: ia32
lib: lib
platform: linux/amd64
- arch: arm64
lib: lib64
platform: linux/arm64
- arch: arm
lib: lib
platform: linux/arm64

steps:
- uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
image: tonistiigi/binfmt:master # need qemu >= 7.0.0

- name: Compile Protobuf
run: |
docker run --rm -i \
--volume "$PWD:$PWD" \
--workdir "$PWD" \
docker.io/library/dart <<'EOF'
set -e
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
dart pub get
dart run grinder protobuf
EOF

- name: Build
run: |
docker run --rm -i \
--platform ${{ matrix.platform }} \
--privileged \
--volume "$PWD:$PWD" \
--workdir "$PWD" \
ghcr.io/dart-android/dart <<'EOF'
set -e
export DART_SDK=/system/${{ matrix.lib }}/dart
export PATH=$DART_SDK/bin:$PATH
dart pub get
dart run grinder pkg-standalone-android-${{ matrix.arch }}
EOF

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: build-android-${{ matrix.arch }}
path: build/*.tar.gz
if-no-files-found: error
compression-level: 0
89 changes: 89 additions & 0 deletions .github/workflows/build-linux-musl.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: Build for linux-musl

on:
workflow_call:
workflow_dispatch:

jobs:
build:
name: Build

runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
include:
- arch: x64
platform: linux/amd64
- arch: ia32
platform: linux/386
- arch: arm64
platform: linux/arm64
- arch: arm
platform: linux/arm/v7

steps:
- uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Compile Protobuf
run: |
docker run --rm -i \
--volume "$PWD:$PWD" \
--workdir "$PWD" \
docker.io/library/dart <<'EOF'
set -e
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
dart pub get
dart run grinder protobuf
EOF

# https://gitlab.com/qemu-project/qemu/-/issues/1729
#
# There is a bug in qemu's mremap causing pthread_getattr_np in musl to stuck in a loop on arm.
# Unless qemu fixes the bug or we get a real linux-arm runner, we cannot build aot-snapshot
# for arm on CI. So, we create a kernel snapshot for arm build in amd64 container instead.
- name: Build
run: |
docker run --rm -i \
--platform ${{ matrix.arch == 'arm' && 'linux/amd64' || matrix.platform }} \
--volume "$PWD:$PWD" \
--workdir "$PWD" \
ghcr.io/dart-musl/dart <<'EOF'
set -e
dart pub get
dart run grinder pkg-standalone-linux-${{ matrix.arch }}
# Rename the artifact from -linux- to -linux-musl- to avoid conflict with glibc builds.
find build -name '*.tar.gz' -print0 | xargs -0 -n 1 -- sh -xc 'mv "$1" "$(echo "$1" | sed -e "s/linux/linux-musl/")"' --
EOF

# The kernel snapshot created for arm in the previous step is bundling a glibc based dart runtime
# due to how cli_pkg downloads the sdk for building non-native platforms. Therefore we need to
# replace it with musl-libc based dart runtime to create a working linux-musl-arm package.
- name: Fix Dart Runtime
if: matrix.arch == 'arm'
run: |
docker run --rm -i \
--platform ${{ matrix.platform }} \
--volume $PWD:$PWD \
--workdir $PWD \
ghcr.io/dart-musl/dart <<'EOF'
set -e
apk add --no-cache tar
cd build
DART_RUNTIME=$(tar -tzf *.tar.gz --wildcards "*/src/dart")
tar -xzf *.tar.gz
cp $DART_SDK/bin/dart $DART_RUNTIME
tar -czf *.tar.gz "$(dirname "$(dirname "$DART_RUNTIME")")"
EOF

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: build-linux-musl-${{ matrix.arch }}
path: build/*.tar.gz
if-no-files-found: error
compression-level: 0
62 changes: 62 additions & 0 deletions .github/workflows/build-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Build for linux

on:
workflow_call:
workflow_dispatch:

jobs:
build:
name: Build

runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
include:
- arch: x64
platform: linux/amd64
- arch: ia32
platform: linux/amd64
- arch: arm
platform: linux/arm/v7
- arch: arm64
platform: linux/arm64

steps:
- uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Compile Protobuf
run: |
docker run --rm -i \
--volume "$PWD:$PWD" \
--workdir "$PWD" \
docker.io/library/dart <<'EOF'
set -e
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
dart pub get
dart run grinder protobuf
EOF

- name: Build
run: |
docker run --rm -i \
--platform ${{ matrix.platform }} \
--volume "$PWD:$PWD" \
--workdir "$PWD" \
docker.io/library/dart:latest <<'EOF'
set -e
dart pub get
dart run grinder pkg-standalone-linux-${{ matrix.arch }}
EOF

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: build-linux-${{ matrix.arch }}
path: build/*.tar.gz
if-no-files-found: error
compression-level: 0
38 changes: 38 additions & 0 deletions .github/workflows/build-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Build for macos

on:
workflow_call:
workflow_dispatch:

jobs:
build:
name: Build

runs-on: ${{ matrix.runner }}

strategy:
fail-fast: false
matrix:
include:
- arch: x64
runner: macos-latest
# https://github.blog/2023-10-02-introducing-the-new-apple-silicon-powered-m1-macos-larger-runner-for-github-actions/
- arch: arm64
runner: macos-latest-xlarge

steps:
- uses: actions/checkout@v4

- uses: ./.github/util/initialize
with: {github-token: "${{ github.token }}"}

- name: Build
run: dart run grinder pkg-standalone-macos-${{ matrix.arch }}

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: build-macos-${{ matrix.arch }}
path: build/*.tar.gz
if-no-files-found: error
compression-level: 0
41 changes: 41 additions & 0 deletions .github/workflows/build-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Build for windows

on:
workflow_call:
workflow_dispatch:

jobs:
build:
name: Build

runs-on: ${{ matrix.runner }}

strategy:
fail-fast: false
matrix:
include:
- arch: x64
runner: windows-latest
- arch: ia32
runner: windows-latest
# The support of windows-arm64 dart-sdk is in beta.
# TODO: Enable this once windows-arm64 support is stable.
# - arch: arm64
# runner: windows-latest

steps:
- uses: actions/checkout@v4

- uses: ./.github/util/initialize
with: {github-token: "${{ github.token }}"}

- name: Build
run: dart run grinder pkg-standalone-windows-${{ matrix.arch }}

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: build-windows-${{ matrix.arch }}
path: build/*.zip
if-no-files-found: error
compression-level: 0
Loading