slint/.github/workflows/slint_tool_binary.yaml
Simon Hausmann c3bbf373c4
Some checks are pending
autofix.ci / format_fix (push) Waiting to run
autofix.ci / lint_typecheck (push) Waiting to run
CI / python_test (macos-14) (push) Blocked by required conditions
CI / python_test (ubuntu-22.04) (push) Blocked by required conditions
CI / files-changed (push) Waiting to run
CI / python_test (windows-2022) (push) Blocked by required conditions
CI / wasm_demo (push) Blocked by required conditions
CI / build_and_test (--exclude bevy-example, ubuntu-22.04, 1.85) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, --exclude bevy-example, windows-2022, 1.85) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, macos-14, stable) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, windows-2022, beta) (push) Blocked by required conditions
CI / build_and_test (--exclude ffmpeg --exclude gstreamer-player, windows-2022, stable) (push) Blocked by required conditions
CI / build_and_test (ubuntu-22.04, nightly) (push) Blocked by required conditions
CI / node_test (macos-14) (push) Blocked by required conditions
CI / node_test (ubuntu-22.04) (push) Blocked by required conditions
CI / node_test (windows-2022) (push) Blocked by required conditions
CI / tree-sitter (push) Blocked by required conditions
CI / cpp_test_driver (macos-13) (push) Blocked by required conditions
CI / cpp_test_driver (ubuntu-22.04) (push) Blocked by required conditions
CI / cpp_test_driver (windows-2022) (push) Blocked by required conditions
CI / cpp_cmake (macos-14, 1.85) (push) Blocked by required conditions
CI / cpp_cmake (ubuntu-22.04, stable) (push) Blocked by required conditions
CI / cpp_cmake (windows-2022, nightly) (push) Blocked by required conditions
CI / cpp_package_test (push) Blocked by required conditions
CI / vsce_build_test (push) Blocked by required conditions
CI / mcu (pico-st7789, thumbv6m-none-eabi) (push) Blocked by required conditions
CI / mcu (pico2-st7789, thumbv8m.main-none-eabihf) (push) Blocked by required conditions
CI / mcu (stm32h735g, thumbv7em-none-eabihf) (push) Blocked by required conditions
CI / mcu-embassy (push) Blocked by required conditions
CI / ffi_32bit_build (push) Blocked by required conditions
CI / docs (push) Blocked by required conditions
CI / wasm (push) Blocked by required conditions
CI / updater_test (0.3.0) (push) Blocked by required conditions
CI / fmt_test (push) Blocked by required conditions
CI / esp-idf-quick (push) Blocked by required conditions
CI / android (push) Blocked by required conditions
CI / miri (push) Blocked by required conditions
CI / test-figma-inspector (push) Blocked by required conditions
CI: Improve ZIP archive structure of viewer/lsp windows binaries
After commit 063950217f, the structure looks like this:

slint-lsp-windows-arm64
 |-- slint-lsp
      |-- bin
      |      |-- slint-lsp.exe
      |-- licenses\*

This patch changes it to

slint-lsp-windows-arm64
 |-- bin
 |      |-- slint-lsp.exe
 |-- licenses\*
2025-08-15 09:28:34 +02:00

210 lines
11 KiB
YAML

# Copyright © SixtyFPS GmbH <info@slint.dev>
# SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
name: Build slint-viewer or -lsp binary
on:
workflow_dispatch:
inputs:
program:
type: choice
description: binary to build
options:
- viewer
- lsp
features:
type: string
description: features to enable for build
# Keep in sync with features in nightly_snapshot.yaml, cpp_package.yaml,api/node/Cargo.toml, and api/python/slint/Cargo.toml
default: "backend-linuxkms-noseat,backend-winit,renderer-femtovg,renderer-skia,renderer-software"
codesign:
type: boolean
description: Sign binaries on macOS (false for manual builds)
default: false
workflow_call:
inputs:
program:
type: string
description: binary to build
features:
type: string
description: features to enable for build
# Keep in sync with features in nightly_snapshot.yaml, cpp_package.yaml,api/node/Cargo.toml, and api/python/slint/Cargo.toml
default: "backend-linuxkms-noseat,backend-winit,renderer-femtovg,renderer-skia,renderer-software"
codesign:
type: boolean
description: Sign binaries on macOS
default: true
secrets:
certificate:
description: "certificate secret"
required: false
certificate_password:
description: "certificate password"
required: false
keychain_password:
description: "keychain password to use"
required: false
developer_id:
description: "developer id to use"
required: false
env:
MACOSX_DEPLOYMENT_TARGET: "11.0"
jobs:
build_windows:
strategy:
matrix:
arch: [x86_64-pc-windows-msvc, aarch64-pc-windows-msvc]
include:
- arch: x86_64-pc-windows-msvc
runner: windows-2022
package_suffix: x86_64
- arch: aarch64-pc-windows-msvc
runner: windows-11-arm
package_suffix: arm64
runs-on: ${{ matrix.runner}}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-rust
with:
target: ${{ matrix.arch }}
- uses: baptiste0928/cargo-install@v3
with:
crate: cargo-about
version: "=0.6.6"
- name: Build
run: cargo build --verbose --no-default-features --features ${{ github.event.inputs.features || inputs.features }} --release -p slint-${{ github.event.inputs.program || inputs.program }}
- name: Create artifact directory
run: |
mkdir pkg
cd pkg
mkdir slint-${{ github.event.inputs.program || inputs.program }}
cd slint-${{ github.event.inputs.program || inputs.program }}
cp ..\..\target/release/slint-${{ github.event.inputs.program || inputs.program }}.exe ./
cd ..
cd ..
cd tools\${{ github.event.inputs.program || inputs.program }}
bash -x ../../scripts/prepare_binary_package.sh ..\..\pkg\slint-${{ github.event.inputs.program || inputs.program }}
- name: Create archive
shell: powershell
run: |
cd pkg
Compress-Archive -Path slint-${{ github.event.inputs.program || inputs.program }}\* -Destination ..\slint-${{ github.event.inputs.program || inputs.program }}-windows-${{ matrix.package_suffix }}.zip
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: slint-${{ github.event.inputs.program || inputs.program }}-windows-${{ matrix.package_suffix }}
path: |
slint-${{ github.event.inputs.program || inputs.program }}-windows-${{ matrix.package_suffix }}.zip
build_linux:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/install-linux-dependencies
with:
old-ubuntu: true
- uses: ./.github/actions/setup-rust
with:
target: x86_64-unknown-linux-gnu
- uses: baptiste0928/cargo-install@v3
with:
crate: cargo-about
version: "=0.6.6"
- name: Build
run: cargo build --verbose --no-default-features --features ${{ github.event.inputs.features || inputs.features }} --release -p slint-${{ github.event.inputs.program || inputs.program }}
- name: Create artifact directory
run: |
mkdir -p slint-${{ github.event.inputs.program || inputs.program }}
cp target/release/slint-${{ github.event.inputs.program || inputs.program }} slint-${{ github.event.inputs.program || inputs.program }}/
cd tools/${{ github.event.inputs.program || inputs.program }}
../../scripts/prepare_binary_package.sh ../../slint-${{ github.event.inputs.program || inputs.program }}
- name: Tar artifacts to preserve permissions
run: tar czvf slint-${{ github.event.inputs.program || inputs.program }}-linux.tar.gz slint-${{ github.event.inputs.program || inputs.program }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: slint-${{ github.event.inputs.program || inputs.program }}-linux
path: slint-${{ github.event.inputs.program || inputs.program }}-linux.tar.gz
build_linux_arm:
runs-on: ubuntu-22.04
strategy:
matrix:
target:
- armv7-unknown-linux-gnueabihf
- aarch64-unknown-linux-gnu
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-rust
with:
target: x86_64-unknown-linux-gnu
- uses: baptiste0928/cargo-install@v3
with:
crate: cross
- uses: baptiste0928/cargo-install@v3
with:
crate: cargo-about
version: "=0.6.6"
- name: Build
run: cross build --target=${{ matrix.target }} --no-default-features --features ${{ github.event.inputs.features || inputs.features }} --release -p slint-${{ github.event.inputs.program || inputs.program }}
- name: Create artifact directory
run: |
mkdir -p slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}
cp target//${{ matrix.target }}/release/slint-${{ github.event.inputs.program || inputs.program }} slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}/
cd tools/${{ github.event.inputs.program || inputs.program }}
../../scripts/prepare_binary_package.sh ../../slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}
- name: Tar artifacts to preserve permissions
run: tar czvf slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}.tar.gz slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}
path: slint-${{ github.event.inputs.program || inputs.program }}-${{ matrix.target }}.tar.gz
build_macos:
runs-on: macos-13
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-rust
with:
target: x86_64-apple-darwin
- uses: ./.github/actions/setup-rust
with:
target: aarch64-apple-darwin
- uses: baptiste0928/cargo-install@v3
with:
crate: cargo-about
version: "=0.6.6"
- name: Build x86_64
run: cargo build --verbose --target x86_64-apple-darwin --no-default-features --features ${{ github.event.inputs.features || inputs.features }} --release -p slint-${{ github.event.inputs.program || inputs.program }}
- name: Build aarch64
run: cargo build --verbose --target aarch64-apple-darwin --no-default-features --features ${{ github.event.inputs.features || inputs.features }} --release -p slint-${{ github.event.inputs.program || inputs.program }}
- name: Create artifact directory
run: |
mkdir -p slint-${{ github.event.inputs.program || inputs.program }}
cd slint-${{ github.event.inputs.program || inputs.program }}
lipo -create -output ./slint-${{ github.event.inputs.program || inputs.program }} ../target/x86_64-apple-darwin/release/slint-${{ github.event.inputs.program || inputs.program }} ../target/aarch64-apple-darwin/release/slint-${{ github.event.inputs.program || inputs.program }}
install_name_tool -add_rpath @executable_path/. ./slint-${{ github.event.inputs.program || inputs.program }}
cd ..
cd tools/${{ github.event.inputs.program || inputs.program }}
../../scripts/prepare_binary_package.sh ../../slint-${{ github.event.inputs.program || inputs.program }}
- uses: ./.github/actions/codesign
if: ${{ github.event.inputs.codesign == 'true' }}
with:
binary: slint-${{ github.event.inputs.program || inputs.program }}/slint-${{ github.event.inputs.program || inputs.program }}
certificate: ${{ github.event.inputs.certificate }}
certificate_password: ${{ github.event.inputs.certificate_password }}
keychain_password: ${{ github.event.inputs.keychain_password }}
developer_id: ${{ github.event.inputs.developer_id }}
- name: Tar artifacts to preserve permissions
run: tar czvf slint-${{ github.event.inputs.program || inputs.program }}-macos.tar.gz slint-${{ github.event.inputs.program || inputs.program }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: slint-${{ github.event.inputs.program || inputs.program }}-macos
path: slint-${{ github.event.inputs.program || inputs.program }}-macos.tar.gz