1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- # 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:
- FLUTTER_VERSION: "3.22.3"
- 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:
- - {
- target: x86_64-unknown-linux-gnu,
- os: ubuntu-20.04,
- extra-build-args: "",
- }
- steps:
- - name: Checkout source code
- uses: actions/checkout@v4
- - 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-10-dev \
- libgtk-3-dev \
- llvm-10-dev \
- nasm \
- ninja-build \
- pkg-config \
- wget
- - name: Install Rust toolchain
- uses: dtolnay/rust-toolchain@v1
- with:
- toolchain: ${{ env.RUST_VERSION }}
- targets: ${{ matrix.job.target }}
- components: "rustfmt"
- - uses: Swatinem/rust-cache@v2
- with:
- prefix-key: bridge-${{ matrix.job.os }}
- - name: Cache Bridge
- id: cache-bridge
- uses: actions/cache@v3
- with:
- path: /tmp/flutter_rust_bridge
- key: vcpkg-${{ matrix.job.arch }}
- - name: Install flutter
- uses: subosito/flutter-action@v2
- with:
- channel: "stable"
- flutter-version: ${{ env.FLUTTER_VERSION }}
- cache: true
- - name: Install flutter rust bridge deps
- shell: bash
- run: |
- cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid"
- pushd flutter && sed -i -e 's/extended_text: 14.0.0/extended_text: 13.0.0/g' pubspec.yaml && 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@master
- with:
- name: bridge-artifact
- 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
|