mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-06-22 00:04:54 +03:00
* Add initial arm64 build logic Signed-off-by: Dennis Ameling <dennis@dennisameling.com> * Upgrade Flutter to 3.44.0 and introduce Windows arm64 in CI Signed-off-by: Dennis Ameling <dennis@dennisameling.com> * Bump bridge build to Flutter 3.44 as well Signed-off-by: Dennis Ameling <dennis@dennisameling.com> * Fix install flutter step for Win arm64 * Bump install-llvm-action to v2 for arm64 support * Fix libsodium logic to only install through vcpkg on win arm64 * Fix Flutter installations on Win * Flutter XCode: only build the current arch as it defaults to universal Signed-off-by: Dennis Ameling <dennis@dennisameling.com> * Ensure that we really have arm64 Dart + Flutter engine in CI Signed-off-by: Dennis Ameling <dennis@dennisameling.com> * Enable hwcodec feature now that upstream supports building it Signed-off-by: Dennis Ameling <dennis@dennisameling.com> * CI: improve logic for getting Flutter arm64 SDK Signed-off-by: Dennis Ameling <dennis@dennisameling.com> * Apply PR feedback (only bump Flutter version on Win arm64) * Exclude MSI build on arm64 * CI: build the MSI for Windows arm64 (WiX v4 ARM64 platform + native CustomActions) * Address PR feedback * Update Cargo.toml * Update Cargo.lock * Update Cargo.lock * Add Flutter 3.44 DialogThemeData background colors Signed-off-by: 21pages <sunboeasy@gmail.com> --------- Signed-off-by: Dennis Ameling <dennis@dennisameling.com> Signed-off-by: 21pages <sunboeasy@gmail.com> Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com> Co-authored-by: 21pages <sunboeasy@gmail.com>
117 lines
4.2 KiB
YAML
117 lines
4.2 KiB
YAML
# This yaml shares the build bridge steps with ci and nightly.
|
|
name: Build flutter-rust-bridge
|
|
# 2023-11-23 18:00:00+00:00
|
|
|
|
on:
|
|
workflow_call:
|
|
|
|
env:
|
|
CARGO_EXPAND_VERSION: "1.0.95"
|
|
FLUTTER_RUST_BRIDGE_VERSION: "1.80.1"
|
|
RUST_VERSION: "1.75" # https://github.com/rustdesk/rustdesk/discussions/7503
|
|
|
|
jobs:
|
|
generate_bridge:
|
|
runs-on: ${{ matrix.job.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
job:
|
|
# Default bridge for every platform still on Flutter 3.24.5 (generated with 3.22.3).
|
|
- {
|
|
target: x86_64-unknown-linux-gnu,
|
|
os: ubuntu-22.04,
|
|
extra-build-args: "",
|
|
flutter-version: "3.22.3",
|
|
artifact-name: "bridge-artifact",
|
|
}
|
|
# Dedicated bridge for the Windows arm64 build (Flutter 3.44); runs in parallel.
|
|
- {
|
|
target: x86_64-unknown-linux-gnu,
|
|
os: ubuntu-22.04,
|
|
extra-build-args: "",
|
|
flutter-version: "3.44.0",
|
|
artifact-name: "bridge-artifact-flutter-3.44",
|
|
}
|
|
steps:
|
|
- name: Checkout source code
|
|
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Install prerequisites
|
|
run: |
|
|
sudo apt-get install ca-certificates -y
|
|
sudo apt-get update -y
|
|
sudo apt-get install -y \
|
|
clang \
|
|
cmake \
|
|
curl \
|
|
gcc \
|
|
git \
|
|
g++ \
|
|
libclang-dev \
|
|
libgtk-3-dev \
|
|
llvm-dev \
|
|
nasm \
|
|
ninja-build \
|
|
pkg-config \
|
|
wget
|
|
|
|
- name: Install Rust toolchain
|
|
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9 # v1
|
|
with:
|
|
toolchain: ${{ env.RUST_VERSION }}
|
|
targets: ${{ matrix.job.target }}
|
|
components: "rustfmt"
|
|
|
|
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
|
|
with:
|
|
prefix-key: bridge-${{ matrix.job.os }}
|
|
|
|
- name: Cache Bridge
|
|
id: cache-bridge
|
|
uses: actions/cache@6f8efc29b200d32929f49075959781ed54ec270c # v3
|
|
with:
|
|
path: /tmp/flutter_rust_bridge
|
|
key: bridge-${{ matrix.job.flutter-version }}
|
|
|
|
- name: Install flutter
|
|
uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 # v2
|
|
with:
|
|
channel: "stable"
|
|
flutter-version: ${{ matrix.job.flutter-version }}
|
|
cache: true
|
|
|
|
- name: Install flutter rust bridge deps
|
|
shell: bash
|
|
run: |
|
|
cargo install cargo-expand --version ${{ env.CARGO_EXPAND_VERSION }} --locked
|
|
cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" --locked
|
|
if [[ "${{ matrix.job.flutter-version }}" == "3.22.3" ]]; then
|
|
# Default Flutter 3.22.3: extended_text 14 needs a newer Dart, so downgrade for resolution.
|
|
sed -i -e 's/extended_text: 14.0.0/extended_text: 13.0.0/g' flutter/pubspec.yaml
|
|
else
|
|
# Flutter 3.44 bridge for Windows arm64: match that build's source/pubspec state so the
|
|
# generated *.freezed.dart compiles against the same Flutter/freezed it resolves.
|
|
bash .github/patches/apply_flutter_3.44_source_patches.sh
|
|
fi
|
|
pushd flutter && flutter pub get && popd
|
|
|
|
- name: Run flutter rust bridge
|
|
run: |
|
|
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/macos/Runner/bridge_generated.h
|
|
cp ./flutter/macos/Runner/bridge_generated.h ./flutter/ios/Runner/bridge_generated.h
|
|
|
|
- name: Upload Artifact
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: ${{ matrix.job.artifact-name }}
|
|
path: |
|
|
./src/bridge_generated.rs
|
|
./src/bridge_generated.io.rs
|
|
./flutter/lib/generated_bridge.dart
|
|
./flutter/lib/generated_bridge.freezed.dart
|
|
./flutter/macos/Runner/bridge_generated.h
|
|
./flutter/ios/Runner/bridge_generated.h
|