From 1bde1f27b425795de8a6b919e0b25726c8bfc3c8 Mon Sep 17 00:00:00 2001 From: Mike Mueller Date: Tue, 5 May 2026 14:54:22 +0200 Subject: [PATCH] ci(linux): sed-patch ffi.Int/ffi.Pointer prefix in generated_bridge.freezed.dart --- .gitea/workflows/build-linux.yml | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/.gitea/workflows/build-linux.yml b/.gitea/workflows/build-linux.yml index 59228026d..7d7a84438 100644 --- a/.gitea/workflows/build-linux.yml +++ b/.gitea/workflows/build-linux.yml @@ -120,15 +120,31 @@ jobs: --c-output ./flutter/macos/Runner/bridge_generated.h cp ./flutter/macos/Runner/bridge_generated.h ./flutter/ios/Runner/bridge_generated.h - # Explicitly regenerate .freezed.dart files. fr_bridge_codegen 1.80.1 - # is supposed to invoke build_runner internally, but on Debian 13's - # toolchain that auto-step has been observed to leave a stale or - # half-generated lib/generated_bridge.freezed.dart behind, which then - # fails compilation later in `flutter build linux` with errors like - # `Type 'Int' not found` (unprefixed FFI types). --delete-conflicting-outputs - # ensures the file is fully rebuilt. + # Explicitly regenerate .freezed.dart files. (cd flutter && dart run build_runner build --delete-conflicting-outputs) + # Workaround for a flutter_rust_bridge 1.80.1 + freezed interaction: + # the generated `lib/generated_bridge.freezed.dart` references FFI + # types like `Int` and `Pointer` *without* the `ffi.` prefix that the + # parent file's `import 'dart:ffi' as ffi;` requires. Result is + # "Type 'Int' not found" / "Type 'Pointer' not found" at build time. + # Add the prefix where it's missing -- only when the identifier is + # NOT already prefixed (no preceding `.`) and is NOT part of a longer + # token (no preceding alnum/underscore). + freezed=./flutter/lib/generated_bridge.freezed.dart + if [ -f "$freezed" ]; then + echo "Patching FFI type prefixes in $(basename "$freezed")" + sed -i -E ' + s/([^A-Za-z0-9_.])Pointer ,)])/\1ffi.Int\2/g + ' "$freezed" + # Sanity: there should be no remaining unprefixed Int/Pointer in FFI position. + if grep -nE '[<,( ]Int[ >,)]|[<,( ]Pointer<' "$freezed" >/dev/null; then + echo "WARNING: still found unprefixed FFI types after patch:" + grep -nE '[<,( ]Int[ >,)]|[<,( ]Pointer<' "$freezed" | head + fi + fi + - name: vcpkg install dependencies (x64-linux) shell: bash env: