Skip to content

⛓️ Saucer Prebuilt #15

⛓️ Saucer Prebuilt

⛓️ Saucer Prebuilt #15

on:
push:
branches:
- "main"
pull_request:
workflow_dispatch:
release:
types: [created]
name: ⛓️ Saucer Prebuilt
jobs:
build-windows:
# if: false # Temp disable for testing
strategy:
fail-fast: false
matrix:
build-type:
- Release
# - Debug
platform:
# - { arch: x86 }
- { arch: x86_64 }
runs-on: windows-latest
name: "Windows-WebView2-${{ matrix.platform.arch }}-${{ matrix.build-type }}"
steps:
- name: πŸ“₯ Checkout actions code
uses: actions/checkout@v4
- name: πŸ›Έ Checkout Saucer bindings code
uses: actions/checkout@v4
with:
repository: saucer/bindings
path: bindings
ref: main
- name: πŸ”¨ Compile
uses: ./.github/actions/compile
with:
backend: WebView2
platform: Windows
build-type: ${{ matrix.build-type }}
cmake-args: -Dsaucer_msvc_hack=ON -Dsaucer_serializer=Rflpp
- name: βš™οΈ Reorganize files
shell: bash
run: |
mkdir to_upload
cp "bindings/build/${{ matrix.build-type }}/saucer-bindings.dll" to_upload
cp "bindings/build/_deps/saucer-build/${{ matrix.build-type }}/saucer.dll" to_upload
cp "bindings/build/modules/desktop/${{ matrix.build-type }}/saucer-bindings-desktop.dll" to_upload
cp "bindings/build/modules/pdf/${{ matrix.build-type }}/saucer-bindings-pdf.dll" to_upload
cp "bindings/build/modules/loop/${{ matrix.build-type }}/saucer-bindings-loop.dll" to_upload
- name: πŸ“¦ Upload Artifact
uses: ./.github/actions/upload-artifact
with:
token: ${{ secrets.GITHUB_TOKEN }}
name: "Windows-WebView2-${{ matrix.platform.arch }}-${{ matrix.build-type }}"
path: "to_upload"
build-macos:
# if: false # Temp disable for testing
strategy:
fail-fast: false
matrix:
build-type:
- Release
# - Debug
platform:
# - { arch: x86_64, os: [self-hosted, macOS, x64, macos14-intel] } # Self hosted runner, thanks Max!
- { arch: x86_64, os: macos-15-intel }
- { arch: aarch64, os: macos-15 }
runs-on: ${{ matrix.platform.os }}
name: "macOS-WebKit-${{ matrix.platform.arch }}-${{ matrix.build-type }}"
steps:
- name: πŸ“₯ Checkout actions code
uses: actions/checkout@v4
- name: πŸ›Έ Checkout Saucer bindings code
uses: actions/checkout@v4
with:
repository: saucer/bindings
path: bindings
ref: main
- name: πŸ”¨ Compile
uses: ./.github/actions/compile
with:
backend: WebKit
platform: macOS
build-type: ${{ matrix.build-type }}
- name: βš™οΈ Reorganize files
shell: bash
run: |
mkdir to_upload
cp "bindings/build/libsaucer-bindings.dylib" to_upload
cp "bindings/build/_deps/saucer-build/libsaucer.dylib" to_upload
cp "bindings/build/modules/desktop/libsaucer-bindings-desktop.dylib" to_upload
cp "bindings/build/modules/pdf/libsaucer-bindings-pdf.dylib" to_upload
cp "bindings/build/modules/loop/libsaucer-bindings-loop.dylib" to_upload
- name: πŸ“¦ Upload Artifact
uses: ./.github/actions/upload-artifact
with:
token: ${{ secrets.GITHUB_TOKEN }}
name: "macOS-WebKit-${{ matrix.platform.arch }}-${{ matrix.build-type }}"
path: "to_upload"
build-gnu_linux_qt6:
# if: false # Temp disable for testing
strategy:
fail-fast: false
matrix:
build-type:
- Release
# - Debug
platform:
# Check these for architecture compatibility:
# https://packages.debian.org/search?searchon=names&keywords=qt6-webengine-dev
# https://hub.docker.com/_/debian/tags?page=&page_size=&ordering=&name=sid-slim
# https://github.com/tonistiigi/binfmt?tab=readme-ov-file#build-test-image
- { arch: "x86_64", qemuArch: "linux/amd64" }
- { arch: "x86", qemuArch: "linux/386" }
- { arch: "aarch64", qemuArch: "linux/arm64/v8" }
runs-on: ubuntu-latest
name: "GNU_Linux-Qt6-${{ matrix.platform.arch }}-${{ matrix.build-type }}"
steps:
- name: πŸ“₯ Checkout actions code
uses: actions/checkout@v4
- name: πŸ›Έ Checkout Saucer bindings code
uses: actions/checkout@v4
with:
repository: saucer/bindings
path: bindings
ref: main
- name: πŸ‘¨β€πŸ’» Setup container
uses: ./.github/actions/setup-container
with:
qemuArch: ${{ matrix.platform.qemuArch }}
dockerArch: ${{ matrix.platform.dockerArch || 'SAME_AS_QEMU' }}
image: "debian:sid-slim"
- name: πŸ“‹ Install dependencies
uses: ./.github/actions/run-in-container
with:
command: apt update && apt install -y build-essential git gcc-14 cmake xvfb qt6-base-dev qt6-tools-dev qt6-declarative-dev qt6-webchannel-dev qt6-webengine-dev qt6-svg-dev
- name: πŸ”¨ Compile
uses: ./.github/actions/compile
with:
backend: Qt
platform: Linux
build-type: ${{ matrix.build-type }}
in-container: true
arm-hack: ${{ matrix.platform.arch }}
- name: βš™οΈ Reorganize files
shell: bash
run: |
mkdir to_upload
cp "bindings/build/libsaucer-bindings.so" to_upload
cp "bindings/build/_deps/saucer-build/libsaucer.so" to_upload
cp "bindings/build/modules/desktop/libsaucer-bindings-desktop.so" to_upload
cp "bindings/build/modules/pdf/libsaucer-bindings-pdf.so" to_upload
cp "bindings/build/modules/loop/libsaucer-bindings-loop.so" to_upload
- name: πŸ“¦ Upload Artifact
uses: ./.github/actions/upload-artifact
with:
token: ${{ secrets.GITHUB_TOKEN }}
name: "GNU_Linux-Qt6-${{ matrix.platform.arch }}-${{ matrix.build-type }}"
path: "to_upload"
build-gnu_linux_gtk:
# if: false # Temp disable for testing
strategy:
fail-fast: false
matrix:
build-type:
- Release
# - Debug
platform:
# Check these for architecture compatibility:
# https://packages.debian.org/search?searchon=names&keywords=libgtk-4-dev
# https://hub.docker.com/_/debian/tags?page=&page_size=&ordering=&name=sid-slim
# https://github.com/tonistiigi/binfmt?tab=readme-ov-file#build-test-image
- { arch: "x86_64", qemuArch: "linux/amd64" }
- { arch: "x86", qemuArch: "linux/386" }
- { arch: "aarch64", qemuArch: "linux/arm64" }
# - { arch: "arm", qemuArch: "linux/arm/v5" }
- { arch: "ppc64le", qemuArch: "linux/ppc64le" }
- { arch: "riscv64", qemuArch: "linux/riscv64" }
- { arch: "s390x", qemuArch: "linux/s390x" }
# - { arch: "mips64el", qemuArch: "linux/mips64le" } # el in LLVM, le in qemu/docker.
runs-on: ubuntu-latest
name: "GNU_Linux-WebKitGtk-${{ matrix.platform.arch }}-${{ matrix.build-type }}"
steps:
- name: πŸ“₯ Checkout actions code
uses: actions/checkout@v4
- name: πŸ›Έ Checkout Saucer bindings code
uses: actions/checkout@v4
with:
repository: saucer/bindings
path: bindings
ref: main
- name: πŸ‘¨β€πŸ’» Setup container
uses: ./.github/actions/setup-container
with:
qemuArch: ${{ matrix.platform.qemuArch }}
dockerArch: ${{ matrix.platform.dockerArch || 'SAME_AS_QEMU' }}
image: "debian:sid-slim"
- name: πŸ“‹ Install dependencies
uses: ./.github/actions/run-in-container
with:
command: apt update && apt install -y build-essential git gcc-14 cmake xvfb libgtk-4-dev libwebkitgtk-6.0-dev libadwaita-1-dev libjson-glib-dev
- name: πŸ”¨ Compile
uses: ./.github/actions/compile
with:
backend: WebKitGtk
platform: Linux
build-type: ${{ matrix.build-type }}
in-container: true
arm-hack: ${{ matrix.platform.arch }}
- name: βš™οΈ Reorganize files
shell: bash
run: |
mkdir to_upload
cp "bindings/build/libsaucer-bindings.so" to_upload
cp "bindings/build/_deps/saucer-build/libsaucer.so" to_upload
cp "bindings/build/modules/desktop/libsaucer-bindings-desktop.so" to_upload
cp "bindings/build/modules/pdf/libsaucer-bindings-pdf.so" to_upload
cp "bindings/build/modules/loop/libsaucer-bindings-loop.so" to_upload
- name: πŸ“¦ Upload Artifact
uses: ./.github/actions/upload-artifact
with:
token: ${{ secrets.GITHUB_TOKEN }}
name: "GNU_Linux-WebKitGtk-${{ matrix.platform.arch }}-${{ matrix.build-type }}"
path: "to_upload"