From 2702466cdf055d818a85c36d0052235027c22b98 Mon Sep 17 00:00:00 2001 From: Vasyl Gello Date: Tue, 7 Nov 2023 13:57:13 +0200 Subject: [PATCH 1/3] Revert "Avoid double build of bridge fies" This reverts commit f0f52d72448893b2d8e33a1304d92d8194fd4c47. Looks like macos and ios can use the same cached bridge but not linux one because of missing headers: Runner/bridge_generated.h --- .github/workflows/flutter-build.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/flutter-build.yml b/.github/workflows/flutter-build.yml index 66e51847e..f0b3a5084 100644 --- a/.github/workflows/flutter-build.yml +++ b/.github/workflows/flutter-build.yml @@ -489,13 +489,12 @@ jobs: prefix-key: rustdesk-lib-cache-ios key: ${{ matrix.job.target }}-${{ matrix.job.extra-build-features }} -# TODO: Re-evaluate caching bridge with flutter-rust-bridge >= 1.81.0 -# - 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 && flutter pub get && popd -# ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/ios/Runner/bridge_generated.h + - 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 && flutter pub get && popd + ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/ios/Runner/bridge_generated.h - name: Build rustdesk lib run: | From dcb4ce8d9ab5ed6393fe3ccef3e1438e86bf5b34 Mon Sep 17 00:00:00 2001 From: Vasyl Gello Date: Tue, 7 Nov 2023 13:59:22 +0200 Subject: [PATCH 2/3] Revert "CI: Remove flutter-elinux" This reverts commit c4b68280fdc30b37f74f2a59c52afcc7747615c0. Official flutter does not run on arm64 and it is very vaguely documented. --- .github/workflows/flutter-build.yml | 37 ++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/.github/workflows/flutter-build.yml b/.github/workflows/flutter-build.yml index f0b3a5084..15dc4b516 100644 --- a/.github/workflows/flutter-build.yml +++ b/.github/workflows/flutter-build.yml @@ -15,6 +15,9 @@ env: LLVM_VERSION: "15.0.6" FLUTTER_VERSION: "3.13.9" FLUTTER_RUST_BRIDGE_VERSION: "1.80.1" + # for arm64 linux + FLUTTER_ELINUX_VERSION: "3.13.9" + FLUTTER_ELINUX_COMMIT_ID: "f4d4205893c16b0aa9cb6ba46b9f32b639d3b057" TAG_NAME: "${{ inputs.upload-tag }}" VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" # vcpkg version: 2023.10.19 @@ -1397,6 +1400,19 @@ jobs: name: librustdesk-${{ matrix.job.arch }}-${{ matrix.job.extra-build-features }}.so path: ./target/release/ + - name: Download Flutter + shell: bash + run: | + # disable git safe.directory + git config --global --add safe.directory "*" + pushd /opt + # clone repo and reset to flutter ${{ env.FLUTTER_VERSION }} + git clone https://github.com/sony/flutter-elinux.git || true + pushd flutter-elinux + git fetch + git reset --hard ${{ env.FLUTTER_ELINUX_COMMIT_ID }} + popd + - uses: rustdesk-org/run-on-arch-action@amd64-support name: Build rustdesk binary for ${{ matrix.job.arch }} id: vcpkg @@ -1409,6 +1425,7 @@ jobs: dockerRunArgs: | --volume "${PWD}:/workspace" --volume "/opt/artifacts:/opt/artifacts" + --volume "/opt/flutter-elinux:/opt/flutter-elinux" shell: /bin/bash install: | apt-get update -y @@ -1435,14 +1452,18 @@ jobs: run: | # disable git safe.directory git config --global --add safe.directory "*" - # Setup Flutter - pushd /opt - wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz - tar xf flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz - ls -l . - export PATH=/opt/flutter/bin:$PATH - flutter doctor -v - flutter precache --linux + pushd /workspace + # we use flutter-elinux to build our rustdesk + export PATH=/opt/flutter-elinux/bin:$PATH + sed -i "s/flutter build linux --release/flutter-elinux build linux/g" ./build.py + # Setup flutter-elinux. Run doctor to check if issues here. + flutter-elinux doctor -v + # Patch arm64 engine for flutter 3.6.0+ + flutter-elinux precache --linux + pushd /tmp + curl -O https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_ELINUX_VERSION }}-stable.tar.xz + tar -xvf flutter_linux_${{ env.FLUTTER_ELINUX_VERSION }}-stable.tar.xz flutter/bin/cache/artifacts/engine/linux-x64/shader_lib + cp -R flutter/bin/cache/artifacts/engine/linux-x64/shader_lib /opt/flutter-elinux/flutter/bin/cache/artifacts/engine/linux-arm64 popd # edit to corresponding arch case ${{ matrix.job.arch }} in From e9f2a77bf6cbf820110653e9ce549e982f257b37 Mon Sep 17 00:00:00 2001 From: Vasyl Gello Date: Tue, 7 Nov 2023 14:12:22 +0200 Subject: [PATCH 3/3] Remove useless step for ios and document elinux need better [skip ci] Signed-off-by: Vasyl Gello --- .github/workflows/flutter-build.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/flutter-build.yml b/.github/workflows/flutter-build.yml index 15dc4b516..f586c7d91 100644 --- a/.github/workflows/flutter-build.yml +++ b/.github/workflows/flutter-build.yml @@ -15,7 +15,7 @@ env: LLVM_VERSION: "15.0.6" FLUTTER_VERSION: "3.13.9" FLUTTER_RUST_BRIDGE_VERSION: "1.80.1" - # for arm64 linux + # for arm64 linux because official Dart SDK does not work FLUTTER_ELINUX_VERSION: "3.13.9" FLUTTER_ELINUX_COMMIT_ID: "f4d4205893c16b0aa9cb6ba46b9f32b639d3b057" TAG_NAME: "${{ inputs.upload-tag }}" @@ -431,7 +431,6 @@ jobs: build-rustdesk-ios: if: ${{ inputs.upload-artifact }} - needs: [generate-bridge-linux] name: build rustdesk ios ipa ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-features }}] runs-on: ${{ matrix.job.os }} strategy: @@ -473,12 +472,6 @@ jobs: $VCPKG_ROOT/vcpkg install --triplet arm64-ios --x-install-root="$VCPKG_ROOT/installed" shell: bash - - name: Restore bridge files - uses: actions/download-artifact@master - with: - name: bridge-artifact - path: ./ - - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: