fzyzcjy / flutter_rust_bridge

Flutter/Dart <-> Rust binding generator, feature-rich, but seamless and simple.
https://fzyzcjy.github.io/flutter_rust_bridge/
MIT License
3.61k stars 254 forks source link

Failed to load Rust dynamic library on Nix #1898

Open TheBotlyNoob opened 3 weeks ago

TheBotlyNoob commented 3 weeks ago

Describe the bug

When running any (at least, all the applications I've tried) flutter application using flutter_rust_bridge on Nixos, the error:

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library 'librust_lib_myapp.so': librust_lib_myapp.so: cannot open shared object file: No such file or directory

appears, and the window is simply a white screen. The issue doesn't appear on flutter apps without flutter_rust_bridge.

This appears to occur on any Nix installation- not only the NixOS version.

Steps to reproduce

  1. Run the example/template app on Nix with the following packages installed: git flutter libclang glibc cmake ninja rustup.
  2. The error appears.

Logs

$ flutter run
Launching lib/main.dart on Linux in debug mode...
Building Linux application...                                           
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library 'librust_lib_myapp.so': librust_lib_myapp.so: cannot open shared object file: No such file or directory
#0      _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:11:43)
#1      new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:22:12)
#2      new ExternalLibrary.open (package:flutter_rust_bridge/src/platform_types/_io.dart:39:47)
#3      loadExternalLibraryRaw.<anonymous closure> (package:flutter_rust_bridge/src/loader/_io.dart:80:46)
#4      loadExternalLibraryRaw.tryAssumingNonPackaged (package:flutter_rust_bridge/src/loader/_io.dart:49:22)
#5      loadExternalLibraryRaw (package:flutter_rust_bridge/src/loader/_io.dart:79:12)
#6      loadExternalLibrary (package:flutter_rust_bridge/src/loader/_io.dart:14:10)
#7      BaseEntrypoint._loadDefaultExternalLibrary (package:flutter_rust_bridge/src/main_components/entrypoint.dart:129:13)
#8      BaseEntrypoint.initImpl (package:flutter_rust_bridge/src/main_components/entrypoint.dart:48:31)
#9      RustLib.init (package:myapp/src/rust/frb_generated.dart:25:20)
#10     main (package:myapp/main.dart:6:17)
#11     _runMain.<anonymous closure> (dart:ui/hooks.dart:301:23)
#12     _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
#13     _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)

Syncing files to device Linux...                                    48ms

Flutter run key commands.
r Hot reload. πŸ”₯πŸ”₯πŸ”₯
R Hot restart.
h List all available interactive commands.
d Detach (terminate "flutter run" but leave application
running).
c Clear the screen
q Quit (terminate the application on the device).

A Dart VM Service on Linux is available at:
http://127.0.0.1:39477/-wnbBfcw9lk=/

Expected behavior

Flutter being able to find the library.

Generated binding code

No response

OS

NixOS

Version of flutter_rust_bridge_codegen

2.0.0-dev.32

Flutter info

$ flutter doctor -v
[βœ“] Flutter (Channel stable, 3.19.0, on NixOS 24.05 (Uakari) 6.6.28, locale en_US.UTF-8)
    β€’ Flutter version 3.19.0 on channel stable at /nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links
    β€’ Upstream repository https://github.com/flutter/flutter.git
    β€’ Framework revision nixpkgs000 (), 1970-01-01 00:00:00
    β€’ Engine revision 04817c99c9
    β€’ Dart version 3.3.0
    β€’ DevTools version 2.31.1

[βœ—] Android toolchain - develop for Android devices
    βœ— Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.

[βœ—] Chrome - develop for the web (Cannot find Chrome executable at google-chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.

[βœ“] Linux toolchain - develop for Linux desktop
    β€’ clang version 17.0.6
    β€’ cmake version 3.29.1
    β€’ ninja version 1.11.1
    β€’ pkg-config version 0.29.2

[!] Android Studio (not installed)
    β€’ Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).

[βœ“] Connected device (1 available)
    β€’ Linux (desktop) β€’ linux β€’ linux-x64 β€’ NixOS 24.05 (Uakari) 6.6.28

[βœ“] Network resources
    β€’ All expected network resources are available.

! Doctor found issues in 3 categories.

Version of clang++

17.0.6

Additional context

No response

welcome[bot] commented 3 weeks ago

Hi! Thanks for opening your first issue here! :smile:

fzyzcjy commented 3 weeks ago

Hmm, without more info, I guess it may be because Flutter/Dart have trouble finding the .so file when using nix, or cargokit fails to call rust compilation (maybe nix has some special properties).

Firstly, could you please show flutter run --verbose, then the logs of cargokit will be shown and it can be checked whether the .so is compiled or not.

Then, if it is compiled, could you please check what is the proper way of loading a .so (DynamicLibrary) in Flutter on nix? (It may be the same question for calling C/C++/Rust/...) I guess one quick check is to use absolute path for .so file temporarily and see whether it works.

TheBotlyNoob commented 3 weeks ago

I forgot to mention that, sorry. Cargokit is able to create the .so file, and it does get copied to the correct directory (build/linux/x64/debug/bundle/lib/liburust_lib_myapp.so). Here is the output of flutter run --verbose:

flutter run --verbose ``` $ flutter run --verbose [ +15 ms] Unable to locate an Android SDK. [ +97 ms] Skipping pub get: version match. [ +72 ms] Found plugin integration_test at /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/packages/integration_test/ [ +13 ms] Found plugin rust_lib_myapp at /tmp/myapp/rust_builder/ [ +54 ms] Found plugin integration_test at /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/packages/integration_test/ [ +1 ms] Found plugin rust_lib_myapp at /tmp/myapp/rust_builder/ [ +35 ms] Found plugin integration_test at /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/packages/integration_test/ [ +1 ms] Found plugin rust_lib_myapp at /tmp/myapp/rust_builder/ [ +45 ms] Generating /tmp/myapp/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java [ +66 ms] No packages with native assets. Skipping native assets compilation. [ +1 ms] Initializing file store [ +5 ms] Skipping target: gen_localizations [ +2 ms] gen_dart_plugin_registrant: Starting due to {InvalidatedReasonKind.inputChanged: The following inputs have updated contents: /tmp/myapp/.dart_tool/package_config_subset} [ +47 ms] Found plugin integration_test at /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/packages/integration_test/ [ +1 ms] Found plugin rust_lib_myapp at /tmp/myapp/rust_builder/ [ +2 ms] gen_dart_plugin_registrant: Complete [ ] Skipping target: _composite [ +1 ms] complete [ +2 ms] Launching lib/main.dart on Linux in debug mode... [ +2 ms] /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/bin/cache/dart-sdk/bin/dartaotruntime --disable-dart-dev /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/bin/cache/dart-sdk/bin/snapshots/frontend_server_aot.dart.snapshot --sdk-root /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/common/flutter_patched_sdk/ --incremental --target=flutter --experimental-emit-debug-metadata -DFLUTTER_WEB_AUTO_DETECT=true -DFLUTTER_WEB_CANVASKIT_URL=https://www.gstatic.com/flutter-canvaskit/04817c99c9fd4956f27505204f7e344335810aed/ --output-dill /tmp/nix-shell.xKwSM4/flutter_tools.GPSKCK/flutter_tool.ETFZJL/app.dill --packages /tmp/myapp/.dart_tool/package_config.json -Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts --track-widget-creation --filesystem-scheme org-dartlang-root --initialize-from-dill build/f4da31578bf74e160393d588ebd02ee2.cache.dill.track.dill --verbosity=error --enable-experiment=alternative-invalidation-strategy [ +16 ms] Building Linux application... [ +6 ms] <- compile package:myapp/main.dart [ +1 ms] executing: [build/linux/x64/debug/] cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DFLUTTER_TARGET_PLATFORM=linux-x64 /tmp/myapp/linux [ +37 ms] -- Configuring done (0.0s) [ +5 ms] -- Generating done (0.0s) [ +8 ms] -- Build files have been written to: /tmp/myapp/build/linux/x64/debug [ +5 ms] executing: ninja -C build/linux/x64/debug install [ +7 ms] ninja: Entering directory `build/linux/x64/debug' [ +344 ms] [1/6] Generating librust_lib_myapp.so, _phony_ [ ] INFO: Precompiled binaries are disabled [ ] INFO: Building rust_lib_myapp for x86_64-unknown-linux-gnu [+2414 ms] [2/6] Generating /tmp/myapp/linux/flutter/ephemeral/libflutter_linux_gtk.so, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_basic_message_channel.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_binary_codec.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_binary_messenger.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_dart_project.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_engine.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_json_message_codec.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_json_method_codec.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_message_codec.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_method_call.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_method_channel.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_method_codec.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_method_response.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_plugin_registrar.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_plugin_registry.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_standard_message_codec.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_standard_method_codec.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_string_codec.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_value.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/fl_view.h, /tmp/myapp/linux/flutter/ephemeral/flutter_linux/flutter_linux.h, _phony_ [ +1 ms] [ +17 ms] Unable to locate an Android SDK. [ ] [ +111 ms] Initializing file store [ ] [ +8 ms] Done initializing file store [ ] [ +36 ms] native_assets: Starting due to {InvalidatedReasonKind.inputChanged: The following inputs have updated contents: /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/packages/flutter_tools/lib/src/build_system/targets/native_assets.dart} [ ] [ +3 ms] Skipping target: gen_localizations [ ] [ +1 ms] Skipping target: gen_dart_plugin_registrant [ +18 ms] [ +367 ms] unpack_linux: Starting due to {InvalidatedReasonKind.inputChanged: The following inputs have updated contents: /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/packages/flutter_tools/lib/src/build_system/targets/linux.dart,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/a rtifacts/engine/linux-x64/libflutter_linux_gtk.so,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/icudtl.dat,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-w rapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_standard_method_codec.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linu x/fl_pixel_buffer_texture.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_texture.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped -3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_texture_registrar.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_metho d_codec.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_method_channel.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk -links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_view.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_plugin_registry.h,/nix/store/ v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_message_codec.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artif acts/engine/linux-x64/flutter_linux/fl_json_method_codec.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_engine.h,/nix/store/v3pwqhl88vsk7wrmr9 whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_event_channel.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux- x64/flutter_linux/fl_string_codec.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_value.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-w rapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_texture_gl.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_plugin _registrar.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/flutter_linux.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk- links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_method_response.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_binary_messenger.h, /nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_dart_project.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/c ache/artifacts/engine/linux-x64/flutter_linux/fl_binary_codec.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_json_message_codec.h,/nix/store/v 3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_method_call.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifact s/engine/linux-x64/flutter_linux/fl_basic_message_channel.h,/nix/store/v3pwqhl88vsk7wrmr9whbsi9jhqnqfm5-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/linux-x64/flutter_linux/fl_standard_message_codec.h} [ +3 ms] [ +76 ms] unpack_linux: Complete [ ] [ +186 ms] No packages with native assets. Skipping native assets compilation. [ ] [ ] Writing native_assets.yaml. [ ] [ +12 ms] Writing /tmp/myapp/.dart_tool/flutter_build/9e1568dd812854195a6b5173237ad969/native_assets.yaml done. [ ] [ ] native_assets: Complete [ ] [ +271 ms] kernel_snapshot: Starting due to {InvalidatedReasonKind.inputChanged: The following inputs have updated contents: /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/packages/flutter_tools/lib/src/build_system/targets/common.dart,/nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/bin/intern al/engine.version,/nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/bin/internal/engine.version,/nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/bin/internal/engine.version, /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/bin/internal/engine.version} [ ] [ +21 ms] Embedding native assets mapping /tmp/myapp/.dart_tool/flutter_build/9e1568dd812854195a6b5173237ad969/native_assets.yaml in kernel. [ +1 ms] [ +5 ms] /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/bin/cache/dart-sdk/bin/dartaotruntime --disable-dart-dev /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/bin/cache/dart-sdk/bin/snapshots/frontend_server_aot.dart.snapshot --sdk-root /nix/store/m0w19afr102c3hi0lal89880splbrm54-flutter-wrapped-3.19.0-sdk-links/bin/cache/artifacts/engine/common/flutter_patched_sdk/ --target=flutter --no-print-incremental-dependencies -DFLUTTER_WEB_AUTO_DETECT=true -DFLUTTER_WEB_CANVASKIT_URL=https://www.gstatic.com/flutter-canvaskit/04817c99c9fd4956f27505204f7e344335810aed/ -Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts --track-widget-creation --packages /tmp/myapp/.dart_tool/package_config.json --output-dill /tmp/myapp/.dart_tool/flutter_build/9e1568dd812854195a6b5173237ad969/app.dill --depfile /tmp/myapp/.dart_tool/flutter_build/9e1568dd812854195a6b5173237ad969/kernel_snapshot.d --incremental --initialize-from-dill /tmp/myapp/.dart_tool/flutter_build/9e1568dd812854195a6b5173237ad969/app.dill --native-assets /tmp/myapp/.dart_tool/flutter_build/9e1568dd812854195a6b5173237ad969/native_assets.yaml --verbosity=error package:myapp/main.dart [ ] [ +817 ms] kernel_snapshot: Complete [ ] [ +343 ms] Skipping target: debug_bundle_linux-x64_assets [ ] [ ] Persisting file store [ ] [ +4 ms] Done persisting file store [ ] [ +4 ms] build succeeded. [ ] [ +5 ms] "flutter assemble" took 2,258ms. [ ] [ +165 ms] ensureAnalyticsSent: 161ms [ ] [ ] Running 0 shutdown hooks [ ] [ ] Shutdown hooks complete [ ] [ +1 ms] exiting with code 0 [ +480 ms] [3/6] Building CXX object CMakeFiles/myapp.dir/flutter/generated_plugin_registrant.cc.o [ +46 ms] [4/6] Building CXX object CMakeFiles/myapp.dir/my_application.cc.o [ +135 ms] [5/6] Linking CXX executable intermediates_do_not_run/myapp [ ] [5/6] Install the project... [ +7 ms] -- Install configuration: "Debug" [ +16 ms] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/myapp [ ] -- Set non-toolchain portion of runtime path of "/tmp/myapp/build/linux/x64/debug/bundle/myapp" to "$ORIGIN/lib" [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/icudtl.dat [ +1 ms] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/lib/libflutter_linux_gtk.so [ +49 ms] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/lib/librust_lib_myapp.so [ +16 ms] -- Up-to-date: /tmp/myapp/build/linux/x64/debug/bundle/lib [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/fonts [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/fonts/MaterialIcons-Regular.otf [ +1 ms] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/packages [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/packages/cupertino_icons [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/packages/cupertino_icons/assets [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/AssetManifest.json [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/kernel_blob.bin [ +42 ms] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/FontManifest.json [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/AssetManifest.bin [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/version.json [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/shaders [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/shaders/ink_sparkle.frag [ ] -- Installing: /tmp/myapp/build/linux/x64/debug/bundle/data/flutter_assets/NOTICES.Z [ +8 ms] Building Linux application... (completed in 3.7s) [ +189 ms] VM Service URL on device: http://127.0.0.1:41887/IRFTwBzPFc0=/ [ +2 ms] Caching compiled dill [ +46 ms] Connecting to service protocol: http://127.0.0.1:41887/IRFTwBzPFc0=/ [ +14 ms] ** (myapp:501801): WARNING **: 20:51:08.902: Unable to retrieve framework response: Message is not valid JSON [ ] ** (myapp:501801): WARNING **: 20:51:08.902: Unable to retrieve framework response: Message is not valid JSON [ ] ** (myapp:501801): WARNING **: 20:51:08.902: Unable to retrieve framework response: Message is not valid JSON [ +23 ms] [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library 'librust_lib_myapp.so': librust_lib_myapp.so: cannot open shared object file: No such file or directory [ ] #0 _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:11:43) [ +1 ms] #1 new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:22:12) [ ] #2 new ExternalLibrary.open (package:flutter_rust_bridge/src/platform_types/_io.dart:39:47) [ ] #3 loadExternalLibraryRaw. (package:flutter_rust_bridge/src/loader/_io.dart:80:46) [ ] #4 loadExternalLibraryRaw.tryAssumingNonPackaged (package:flutter_rust_bridge/src/loader/_io.dart:49:22) [ ] #5 loadExternalLibraryRaw (package:flutter_rust_bridge/src/loader/_io.dart:79:12) [ ] #6 loadExternalLibrary (package:flutter_rust_bridge/src/loader/_io.dart:14:10) [ ] #7 BaseEntrypoint._loadDefaultExternalLibrary (package:flutter_rust_bridge/src/main_components/entrypoint.dart:129:13) [ ] #8 BaseEntrypoint.initImpl (package:flutter_rust_bridge/src/main_components/entrypoint.dart:48:31) [ ] #9 RustLib.init (package:myapp/src/rust/frb_generated.dart:25:20) [ ] #10 main (package:myapp/main.dart:6:17) [ ] #11 _runMain. (dart:ui/hooks.dart:301:23) [ ] #12 _delayEntrypointInvocation. (dart:isolate-patch/isolate_patch.dart:297:19) [ ] #13 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12) [ +22 ms] ** (myapp:501801): WARNING **: 20:51:08.951: Unable to retrieve framework response: Message is not valid JSON [ +24 ms] Launching a Dart Developer Service (DDS) instance at http://127.0.0.1:0, connecting to VM service at http://127.0.0.1:41887/IRFTwBzPFc0=/. [ +54 ms] DDS is listening at http://127.0.0.1:33529/ijz5Vt_WT_0=/. [ +36 ms] ** (myapp:501801): WARNING **: 20:51:09.060: Unable to retrieve framework response: Message is not valid JSON [ +2 ms] Successfully connected to service protocol: http://127.0.0.1:41887/IRFTwBzPFc0=/ [ +24 ms] DevFS: Creating new filesystem on the device (null) [ +7 ms] DevFS: Created new filesystem on the device (file:///tmp/nix-shell.xKwSM4/myappJYQMNM/myapp/) [ +1 ms] Updating assets [ +67 ms] Syncing files to device Linux... [ +1 ms] Compiling dart to kernel with 0 updated files [ ] Processing bundle. [ ] <- recompile package:myapp/main.dart c00eb045-422b-4af5-95fd-16f5825f6144 [ ] <- c00eb045-422b-4af5-95fd-16f5825f6144 [ ] Bundle processing done. [ ] ** (myapp:501801): WARNING **: 20:51:09.131: Unable to retrieve framework response: Message is not valid JSON [ +54 ms] Updating files. [ ] DevFS: Sync finished [ ] Syncing files to device Linux... (completed in 57ms) [ ] Synced 0.0MB. [ ] <- accept [ +1 ms] Connected to _flutterView/0x555555ac84e0. [ +1 ms] Flutter run key commands. [ ] r Hot reload. πŸ”₯πŸ”₯πŸ”₯ [ ] R Hot restart. [ ] h List all available interactive commands. [ ] d Detach (terminate "flutter run" but leave application running). [ ] c Clear the screen [ ] q Quit (terminate the application on the device). [ ] A Dart VM Service on Linux is available at: http://127.0.0.1:33529/ijz5Vt_WT_0=/ ```
fzyzcjy commented 3 weeks ago

and it does get copied to the correct directory (build/linux/x64/debug/bundle/lib/liburust_lib_myapp.so

Then maybe try to point to the absolute path of .so as a first check.

Btw does nix have special property to forbid accessing some files?

TheBotlyNoob commented 3 weeks ago

okay, so if I manually patch LD_LIBRARY_PATH to the lib directory (i.e. going to the bundle directory, setting LD_LIBRARY_PATH to $(pwd)/lib, and running ./myapp), everything goes great. So that raises the question of why isn't dart finding the library by default?

Nix shouldn't have special properties- it (afaik) acts like a normal linux distro with some fancy config as a package manager. It is super useful for easy development environments, using devenv. The config is kinda hard to get down though.

fzyzcjy commented 3 weeks ago

So that raises the question of why isn't dart finding the library by default?

Given the information, I guess is it possible that, nix somehow provides different library search path than other linux distri? The loading logic is at https://github.com/fzyzcjy/flutter_rust_bridge/blob/8915d06a77122404650abcec9f0a5b03cfd1ada2/frb_dart/lib/src/loader/_io.dart#L77 (only a dozen lines of code), and the core is just:

DynamicLibrary.open('libsomething.so');
TheBotlyNoob commented 3 weeks ago

I think I'm getting hit with multiple issues at once. After switching to a machine running Arch, I realized that cargokit didn't copy the .so file to the bundle directory in the real app (both on the Arch and Nix machines). The core issue on Nix still exists, as that happened on the bare example app, but this is also weird. Cargokit does call cargo because the processes appear in the task manager, but the files don't get copied for some reason. Give me a few days to figure these issues out and I'll report back... eventually. I don't want to waste your time. After I figure out the library not copying issue, I can figure out the Nix issue.

TheBotlyNoob commented 3 weeks ago

If you want to see the logs of a clean build on the actual project, here it is.

flutter run --verbose (on the actual project) ```log [ +44 ms] Unable to locate an Android SDK. [ +5 ms] executing: uname -m [ +2 ms] Exit code 0 from: uname -m [ ] x86_64 [ +58 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. [ +1 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. [ +53 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. [ +1 ms] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. [ +79 ms] executing: [/home/jj/github/bramletts-games/client/] /opt/flutter/bin/cache/dart-sdk/bin/dart pub --suppress-analytics --verbose --directory . get --example FINE: Pub 3.3.1 MSG : Resolving dependencies... SLVR: fact: bramletts_games is 1.0.0+1 SLVR: derived: bramletts_games SLVR: fact: bramletts_games depends on flutter from sdk SLVR: fact: bramletts_games depends on rust_builder from path SLVR: fact: bramletts_games depends on flutter_rust_bridge 2.0.0-dev.32 SLVR: fact: bramletts_games depends on fluent_ui ^4.8.7 SLVR: fact: bramletts_games depends on stroke_text ^0.0.2 SLVR: fact: bramletts_games depends on cached_network_image ^3.3.1 SLVR: fact: bramletts_games depends on flutter_test from sdk SLVR: fact: bramletts_games depends on flutter_lints ^3.0.2 SLVR: fact: bramletts_games depends on ffigen ^11.0.0 SLVR: fact: bramletts_games depends on integration_test from sdk SLVR: selecting bramletts_games SLVR: derived: integration_test from sdk SLVR: derived: ffigen ^11.0.0 SLVR: derived: flutter_lints ^3.0.2 SLVR: derived: flutter_test from sdk SLVR: derived: cached_network_image ^3.3.1 SLVR: derived: stroke_text ^0.0.2 SLVR: derived: fluent_ui ^4.8.7 SLVR: derived: flutter_rust_bridge 2.0.0-dev.32 SLVR: derived: rust_builder from path SLVR: derived: flutter from sdk SLVR: fact: integration_test 0.0.0 from sdk depends on flutter from sdk SLVR: fact: integration_test 0.0.0 from sdk depends on flutter_driver from sdk SLVR: fact: integration_test 0.0.0 from sdk depends on flutter_test from sdk SLVR: fact: integration_test 0.0.0 from sdk depends on path 1.9.0 SLVR: fact: integration_test 0.0.0 from sdk depends on vm_service 13.0.0 SLVR: fact: integration_test 0.0.0 from sdk depends on async 2.11.0 SLVR: fact: integration_test 0.0.0 from sdk depends on boolean_selector 2.1.1 SLVR: fact: integration_test 0.0.0 from sdk depends on characters 1.3.0 SLVR: fact: integration_test 0.0.0 from sdk depends on clock 1.1.1 SLVR: fact: integration_test 0.0.0 from sdk depends on collection 1.18.0 SLVR: fact: integration_test 0.0.0 from sdk depends on fake_async 1.3.1 SLVR: fact: integration_test 0.0.0 from sdk depends on file 7.0.0 SLVR: fact: integration_test 0.0.0 from sdk depends on leak_tracker 10.0.0 SLVR: fact: integration_test 0.0.0 from sdk depends on leak_tracker_flutter_testing 2.0.1 SLVR: fact: integration_test 0.0.0 from sdk depends on leak_tracker_testing 2.0.1 SLVR: fact: integration_test 0.0.0 from sdk depends on matcher 0.12.16+1 SLVR: fact: integration_test 0.0.0 from sdk depends on material_color_utilities 0.8.0 SLVR: fact: integration_test 0.0.0 from sdk depends on meta 1.11.0 SLVR: fact: integration_test 0.0.0 from sdk depends on source_span 1.10.0 SLVR: fact: integration_test 0.0.0 from sdk depends on stack_trace 1.11.1 SLVR: fact: integration_test 0.0.0 from sdk depends on stream_channel 2.1.2 SLVR: fact: integration_test 0.0.0 from sdk depends on string_scanner 1.2.0 SLVR: fact: integration_test 0.0.0 from sdk depends on sync_http 0.3.1 SLVR: fact: integration_test 0.0.0 from sdk depends on term_glyph 1.2.1 SLVR: fact: integration_test 0.0.0 from sdk depends on test_api 0.6.1 SLVR: fact: integration_test 0.0.0 from sdk depends on vector_math 2.1.4 SLVR: fact: integration_test 0.0.0 from sdk depends on webdriver 3.0.3 SLVR: selecting integration_test 0.0.0 from sdk SLVR: derived: webdriver 3.0.3 SLVR: derived: vector_math 2.1.4 SLVR: derived: test_api 0.6.1 SLVR: derived: term_glyph 1.2.1 SLVR: derived: sync_http 0.3.1 SLVR: derived: string_scanner 1.2.0 SLVR: derived: stream_channel 2.1.2 SLVR: derived: stack_trace 1.11.1 SLVR: derived: source_span 1.10.0 SLVR: derived: meta 1.11.0 SLVR: derived: material_color_utilities 0.8.0 SLVR: derived: matcher 0.12.16+1 SLVR: derived: leak_tracker_testing 2.0.1 SLVR: derived: leak_tracker_flutter_testing 2.0.1 SLVR: derived: leak_tracker 10.0.0 SLVR: derived: file 7.0.0 SLVR: derived: fake_async 1.3.1 SLVR: derived: collection 1.18.0 SLVR: derived: clock 1.1.1 SLVR: derived: characters 1.3.0 SLVR: derived: boolean_selector 2.1.1 SLVR: derived: async 2.11.0 SLVR: derived: vm_service 13.0.0 SLVR: derived: path 1.9.0 SLVR: derived: flutter_driver from sdk SLVR: fact: ffigen 11.0.0 depends on ffi ^2.0.1 SLVR: fact: ffigen 11.0.0 depends on yaml ^3.0.0 SLVR: fact: ffigen 11.0.0 depends on path ^1.8.0 SLVR: fact: ffigen 11.0.0 depends on quiver ^3.0.0 SLVR: fact: ffigen 11.0.0 depends on args ^2.0.0 SLVR: fact: ffigen 11.0.0 depends on logging ^1.0.0 SLVR: fact: ffigen 11.0.0 depends on cli_util ^0.4.0 SLVR: fact: ffigen 11.0.0 depends on glob ^2.0.0 SLVR: fact: ffigen 11.0.0 depends on file ^7.0.0 SLVR: fact: ffigen 11.0.0 depends on package_config ^2.1.0 SLVR: fact: ffigen 11.0.0 depends on yaml_edit ^2.0.3 SLVR: selecting ffigen 11.0.0 SLVR: derived: yaml_edit ^2.0.3 SLVR: derived: package_config ^2.1.0 SLVR: derived: glob ^2.0.0 SLVR: derived: cli_util ^0.4.0 SLVR: derived: logging ^1.0.0 SLVR: derived: args ^2.0.0 SLVR: derived: quiver ^3.0.0 SLVR: derived: yaml ^3.0.0 SLVR: derived: ffi ^2.0.1 SLVR: fact: flutter_lints 3.0.2 depends on lints ^3.0.0 SLVR: selecting flutter_lints 3.0.2 SLVR: derived: lints ^3.0.0 SLVR: fact: flutter_test 0.0.0 from sdk depends on flutter from sdk SLVR: fact: flutter_test 0.0.0 from sdk depends on test_api 0.6.1 SLVR: fact: flutter_test 0.0.0 from sdk depends on matcher 0.12.16+1 SLVR: fact: flutter_test 0.0.0 from sdk depends on path 1.9.0 SLVR: fact: flutter_test 0.0.0 from sdk depends on fake_async 1.3.1 SLVR: fact: flutter_test 0.0.0 from sdk depends on clock 1.1.1 SLVR: fact: flutter_test 0.0.0 from sdk depends on stack_trace 1.11.1 SLVR: fact: flutter_test 0.0.0 from sdk depends on vector_math 2.1.4 SLVR: fact: flutter_test 0.0.0 from sdk depends on leak_tracker_flutter_testing 2.0.1 SLVR: fact: flutter_test 0.0.0 from sdk depends on async 2.11.0 SLVR: fact: flutter_test 0.0.0 from sdk depends on boolean_selector 2.1.1 SLVR: fact: flutter_test 0.0.0 from sdk depends on characters 1.3.0 SLVR: fact: flutter_test 0.0.0 from sdk depends on collection 1.18.0 SLVR: fact: flutter_test 0.0.0 from sdk depends on leak_tracker 10.0.0 SLVR: fact: flutter_test 0.0.0 from sdk depends on leak_tracker_testing 2.0.1 SLVR: fact: flutter_test 0.0.0 from sdk depends on material_color_utilities 0.8.0 SLVR: fact: flutter_test 0.0.0 from sdk depends on meta 1.11.0 SLVR: fact: flutter_test 0.0.0 from sdk depends on source_span 1.10.0 SLVR: fact: flutter_test 0.0.0 from sdk depends on stream_channel 2.1.2 SLVR: fact: flutter_test 0.0.0 from sdk depends on string_scanner 1.2.0 SLVR: fact: flutter_test 0.0.0 from sdk depends on term_glyph 1.2.1 SLVR: fact: flutter_test 0.0.0 from sdk depends on vm_service 13.0.0 SLVR: selecting flutter_test 0.0.0 from sdk SLVR: fact: cached_network_image 3.3.1 depends on cached_network_image_platform_interface ^4.0.0 SLVR: fact: cached_network_image 3.3.1 depends on cached_network_image_web ^1.1.1 SLVR: fact: cached_network_image 3.3.1 depends on flutter from sdk SLVR: fact: cached_network_image 3.3.1 depends on flutter_cache_manager ^3.3.1 SLVR: fact: cached_network_image 3.3.1 depends on octo_image ^2.0.0 SLVR: selecting cached_network_image 3.3.1 SLVR: derived: octo_image ^2.0.0 SLVR: derived: flutter_cache_manager ^3.3.1 SLVR: derived: cached_network_image_web ^1.1.1 SLVR: derived: cached_network_image_platform_interface ^4.0.0 SLVR: fact: stroke_text 0.0.2 depends on flutter from sdk SLVR: selecting stroke_text 0.0.2 SLVR: fact: fluent_ui 4.8.7 depends on flutter from sdk SLVR: fact: fluent_ui 4.8.7 depends on flutter_localizations from sdk SLVR: fact: fluent_ui 4.8.7 depends on intl >=0.18.0 <=1.0.0 SLVR: fact: fluent_ui 4.8.7 depends on scroll_pos >=0.5.0 <1.0.0 SLVR: fact: fluent_ui 4.8.7 depends on recase ^4.1.0 SLVR: fact: fluent_ui 4.8.7 depends on math_expressions ^2.4.0 SLVR: selecting fluent_ui 4.8.7 SLVR: derived: math_expressions ^2.4.0 SLVR: derived: recase ^4.1.0 SLVR: derived: scroll_pos >=0.5.0 <1.0.0 SLVR: derived: intl >=0.18.0 <=1.0.0 SLVR: derived: flutter_localizations from sdk SLVR: fact: flutter_rust_bridge 2.0.0-dev.32 depends on args ^2.3.1 SLVR: fact: flutter_rust_bridge 2.0.0-dev.32 depends on async ^2.11.0 SLVR: fact: flutter_rust_bridge 2.0.0-dev.32 depends on build_cli_annotations ^2.1.0 SLVR: fact: flutter_rust_bridge 2.0.0-dev.32 depends on js >=0.6.4 <0.8.0 SLVR: fact: flutter_rust_bridge 2.0.0-dev.32 depends on meta ^1.3.0 SLVR: fact: flutter_rust_bridge 2.0.0-dev.32 depends on path ^1.8.1 SLVR: selecting flutter_rust_bridge 2.0.0-dev.32 SLVR: derived: js >=0.6.4 <0.8.0 SLVR: derived: build_cli_annotations ^2.1.0 SLVR: derived: args ^2.3.1 SLVR: fact: rust_builder 0.0.1 from path depends on flutter from sdk SLVR: fact: rust_builder 0.0.1 from path depends on plugin_platform_interface ^2.0.2 SLVR: selecting rust_builder 0.0.1 from path SLVR: derived: plugin_platform_interface ^2.0.2 SLVR: fact: flutter 0.0.0 from sdk depends on characters 1.3.0 SLVR: fact: flutter 0.0.0 from sdk depends on collection 1.18.0 SLVR: fact: flutter 0.0.0 from sdk depends on material_color_utilities 0.8.0 SLVR: fact: flutter 0.0.0 from sdk depends on meta 1.11.0 SLVR: fact: flutter 0.0.0 from sdk depends on vector_math 2.1.4 SLVR: fact: flutter 0.0.0 from sdk depends on sky_engine from sdk SLVR: selecting flutter 0.0.0 from sdk SLVR: derived: sky_engine from sdk SLVR: fact: webdriver 3.0.3 depends on matcher ^0.12.10 SLVR: fact: webdriver 3.0.3 depends on path ^1.8.0 SLVR: fact: webdriver 3.0.3 depends on stack_trace ^1.10.0 SLVR: fact: webdriver 3.0.3 depends on sync_http ^0.3.0 SLVR: selecting webdriver 3.0.3 SLVR: selecting vector_math 2.1.4 SLVR: fact: test_api 0.6.1 depends on async ^2.5.0 SLVR: fact: test_api 0.6.1 depends on boolean_selector ^2.1.0 SLVR: fact: test_api 0.6.1 depends on collection ^1.15.0 SLVR: fact: test_api 0.6.1 depends on meta ^1.3.0 SLVR: fact: test_api 0.6.1 depends on source_span ^1.8.0 SLVR: fact: test_api 0.6.1 depends on stack_trace ^1.10.0 SLVR: fact: test_api 0.6.1 depends on stream_channel ^2.1.0 SLVR: fact: test_api 0.6.1 depends on string_scanner ^1.1.0 SLVR: fact: test_api 0.6.1 depends on term_glyph ^1.2.0 SLVR: selecting test_api 0.6.1 SLVR: selecting term_glyph 1.2.1 SLVR: selecting sync_http 0.3.1 SLVR: fact: string_scanner 1.2.0 depends on source_span ^1.8.0 SLVR: selecting string_scanner 1.2.0 SLVR: fact: stream_channel 2.1.2 depends on async ^2.5.0 SLVR: selecting stream_channel 2.1.2 SLVR: fact: stack_trace 1.11.1 depends on path ^1.8.0 SLVR: selecting stack_trace 1.11.1 SLVR: fact: source_span 1.10.0 depends on collection ^1.15.0 SLVR: fact: source_span 1.10.0 depends on path ^1.8.0 SLVR: fact: source_span 1.10.0 depends on term_glyph ^1.2.0 SLVR: selecting source_span 1.10.0 SLVR: selecting meta 1.11.0 SLVR: fact: material_color_utilities 0.8.0 depends on collection ^1.15.0 SLVR: selecting material_color_utilities 0.8.0 SLVR: fact: matcher 0.12.16+1 depends on async ^2.10.0 SLVR: fact: matcher 0.12.16+1 depends on meta ^1.8.0 SLVR: fact: matcher 0.12.16+1 depends on stack_trace ^1.10.0 SLVR: fact: matcher 0.12.16+1 depends on term_glyph ^1.2.0 SLVR: fact: matcher 0.12.16+1 depends on test_api >=0.5.0 <0.8.0 SLVR: selecting matcher 0.12.16+1 SLVR: fact: leak_tracker_testing 2.0.1 depends on leak_tracker >=9.0.0 <11.0.0 SLVR: fact: leak_tracker_testing 2.0.1 depends on matcher ^0.12.16 SLVR: fact: leak_tracker_testing 2.0.1 depends on meta ^1.11.0 SLVR: selecting leak_tracker_testing 2.0.1 SLVR: fact: leak_tracker_flutter_testing 2.0.1 depends on flutter from sdk SLVR: fact: leak_tracker_flutter_testing 2.0.1 depends on leak_tracker ^10.0.0 SLVR: fact: leak_tracker_flutter_testing 2.0.1 depends on leak_tracker_testing ^2.0.1 SLVR: fact: leak_tracker_flutter_testing 2.0.1 depends on matcher ^0.12.16 SLVR: fact: leak_tracker_flutter_testing 2.0.1 depends on meta ^1.8.0 SLVR: selecting leak_tracker_flutter_testing 2.0.1 SLVR: fact: leak_tracker 10.0.0 depends on clock ^1.1.1 SLVR: fact: leak_tracker 10.0.0 depends on collection ^1.15.0 SLVR: fact: leak_tracker 10.0.0 depends on meta ^1.8.0 SLVR: fact: leak_tracker 10.0.0 depends on path ^1.8.3 SLVR: fact: leak_tracker 10.0.0 depends on vm_service >=11.10.0 <15.0.0 SLVR: selecting leak_tracker 10.0.0 SLVR: fact: file 7.0.0 depends on meta ^1.9.1 SLVR: fact: file 7.0.0 depends on path ^1.8.3 SLVR: selecting file 7.0.0 SLVR: fact: fake_async 1.3.1 depends on clock ^1.1.0 SLVR: fact: fake_async 1.3.1 depends on collection ^1.15.0 SLVR: selecting fake_async 1.3.1 SLVR: selecting collection 1.18.0 SLVR: selecting clock 1.1.1 SLVR: selecting characters 1.3.0 SLVR: fact: boolean_selector 2.1.1 depends on source_span ^1.8.0 SLVR: fact: boolean_selector 2.1.1 depends on string_scanner ^1.1.0 SLVR: selecting boolean_selector 2.1.1 SLVR: fact: async 2.11.0 depends on collection ^1.15.0 SLVR: fact: async 2.11.0 depends on meta ^1.1.7 SLVR: selecting async 2.11.0 SLVR: selecting vm_service 13.0.0 SLVR: selecting path 1.9.0 SLVR: fact: flutter_driver 0.0.0 from sdk depends on file 7.0.0 SLVR: fact: flutter_driver 0.0.0 from sdk depends on flutter from sdk SLVR: fact: flutter_driver 0.0.0 from sdk depends on flutter_test from sdk SLVR: fact: flutter_driver 0.0.0 from sdk depends on fuchsia_remote_debug_protocol from sdk SLVR: fact: flutter_driver 0.0.0 from sdk depends on path 1.9.0 SLVR: fact: flutter_driver 0.0.0 from sdk depends on meta 1.11.0 SLVR: fact: flutter_driver 0.0.0 from sdk depends on vm_service 13.0.0 SLVR: fact: flutter_driver 0.0.0 from sdk depends on webdriver 3.0.3 SLVR: fact: flutter_driver 0.0.0 from sdk depends on async 2.11.0 SLVR: fact: flutter_driver 0.0.0 from sdk depends on boolean_selector 2.1.1 SLVR: fact: flutter_driver 0.0.0 from sdk depends on characters 1.3.0 SLVR: fact: flutter_driver 0.0.0 from sdk depends on clock 1.1.1 SLVR: fact: flutter_driver 0.0.0 from sdk depends on collection 1.18.0 SLVR: fact: flutter_driver 0.0.0 from sdk depends on leak_tracker 10.0.0 SLVR: fact: flutter_driver 0.0.0 from sdk depends on leak_tracker_flutter_testing 2.0.1 SLVR: fact: flutter_driver 0.0.0 from sdk depends on leak_tracker_testing 2.0.1 SLVR: fact: flutter_driver 0.0.0 from sdk depends on matcher 0.12.16+1 SLVR: fact: flutter_driver 0.0.0 from sdk depends on material_color_utilities 0.8.0 SLVR: fact: flutter_driver 0.0.0 from sdk depends on platform 3.1.4 SLVR: fact: flutter_driver 0.0.0 from sdk depends on process 5.0.2 SLVR: fact: flutter_driver 0.0.0 from sdk depends on source_span 1.10.0 SLVR: fact: flutter_driver 0.0.0 from sdk depends on stack_trace 1.11.1 SLVR: fact: flutter_driver 0.0.0 from sdk depends on stream_channel 2.1.2 SLVR: fact: flutter_driver 0.0.0 from sdk depends on string_scanner 1.2.0 SLVR: fact: flutter_driver 0.0.0 from sdk depends on sync_http 0.3.1 SLVR: fact: flutter_driver 0.0.0 from sdk depends on term_glyph 1.2.1 SLVR: fact: flutter_driver 0.0.0 from sdk depends on test_api 0.6.1 SLVR: fact: flutter_driver 0.0.0 from sdk depends on vector_math 2.1.4 SLVR: selecting flutter_driver 0.0.0 from sdk SLVR: derived: process 5.0.2 SLVR: derived: platform 3.1.4 SLVR: derived: fuchsia_remote_debug_protocol from sdk SLVR: fact: yaml_edit 2.2.0 depends on collection ^1.15.0 SLVR: fact: yaml_edit 2.2.0 depends on meta ^1.7.0 SLVR: fact: yaml_edit 2.2.0 depends on source_span ^1.8.1 SLVR: fact: yaml_edit 2.2.0 depends on yaml ^3.1.0 SLVR: selecting yaml_edit 2.2.0 SLVR: derived: yaml ^3.1.0 SLVR: fact: package_config 2.1.0 depends on path ^1.8.0 SLVR: selecting package_config 2.1.0 SLVR: fact: glob 2.1.2 depends on async ^2.5.0 SLVR: fact: glob 2.1.2 depends on collection ^1.15.0 SLVR: fact: glob 2.1.2 depends on file >=6.1.3 <8.0.0 SLVR: fact: glob 2.1.2 depends on path ^1.8.0 SLVR: fact: glob 2.1.2 depends on string_scanner ^1.1.0 SLVR: selecting glob 2.1.2 SLVR: fact: cli_util 0.4.1 depends on meta ^1.3.0 SLVR: fact: cli_util 0.4.1 depends on path ^1.8.0 SLVR: selecting cli_util 0.4.1 SLVR: selecting logging 1.2.0 SLVR: selecting args 2.5.0 SLVR: fact: quiver 3.2.1 depends on matcher ^0.12.10 SLVR: selecting quiver 3.2.1 SLVR: fact: yaml 3.1.2 depends on collection ^1.15.0 SLVR: fact: yaml 3.1.2 depends on source_span ^1.8.0 SLVR: fact: yaml 3.1.2 depends on string_scanner ^1.1.0 SLVR: selecting yaml 3.1.2 SLVR: selecting ffi 2.1.2 SLVR: selecting lints 3.0.0 SLVR: fact: octo_image 2.0.0 depends on flutter from sdk SLVR: selecting octo_image 2.0.0 SLVR: fact: flutter_cache_manager 3.3.1 depends on clock ^1.1.0 SLVR: fact: flutter_cache_manager 3.3.1 depends on collection ^1.15.0 SLVR: fact: flutter_cache_manager 3.3.1 depends on file >=6.1.4 <8.0.0 SLVR: fact: flutter_cache_manager 3.3.1 depends on flutter from sdk SLVR: fact: flutter_cache_manager 3.3.1 depends on http >=0.13.0 <2.0.0 SLVR: fact: flutter_cache_manager 3.3.1 depends on path ^1.8.0 SLVR: fact: flutter_cache_manager 3.3.1 depends on path_provider ^2.0.0 SLVR: fact: flutter_cache_manager 3.3.1 depends on rxdart >=0.26.0 <0.28.0 SLVR: fact: flutter_cache_manager 3.3.1 depends on sqflite ^2.0.0+4 SLVR: fact: flutter_cache_manager 3.3.1 depends on uuid >=3.0.0 <5.0.0 SLVR: selecting flutter_cache_manager 3.3.1 SLVR: derived: uuid >=3.0.0 <5.0.0 SLVR: derived: sqflite ^2.0.0+4 SLVR: derived: rxdart >=0.26.0 <0.28.0 SLVR: derived: path_provider ^2.0.0 SLVR: derived: http >=0.13.0 <2.0.0 SLVR: fact: cached_network_image_web 1.1.1 depends on cached_network_image_platform_interface ^4.0.0 SLVR: fact: cached_network_image_web 1.1.1 depends on flutter from sdk SLVR: fact: cached_network_image_web 1.1.1 depends on flutter_cache_manager ^3.3.1 SLVR: selecting cached_network_image_web 1.1.1 SLVR: fact: cached_network_image_platform_interface 4.0.0 depends on flutter from sdk SLVR: fact: cached_network_image_platform_interface 4.0.0 depends on flutter_cache_manager ^3.3.1 SLVR: selecting cached_network_image_platform_interface 4.0.0 SLVR: fact: math_expressions 2.5.0 depends on vector_math ^2.1.0 SLVR: selecting math_expressions 2.5.0 SLVR: selecting recase 4.1.0 SLVR: fact: scroll_pos 0.5.0 depends on flutter from sdk SLVR: selecting scroll_pos 0.5.0 SLVR: fact: intl 0.18.1 depends on clock ^1.1.0 SLVR: fact: intl 0.18.1 depends on meta ^1.0.2 SLVR: fact: intl 0.18.1 depends on path ^1.8.0 SLVR: selecting intl 0.18.1 SLVR: fact: flutter_localizations 0.0.0 from sdk depends on flutter from sdk SLVR: fact: flutter_localizations 0.0.0 from sdk depends on intl 0.18.1 SLVR: fact: flutter_localizations 0.0.0 from sdk depends on characters 1.3.0 SLVR: fact: flutter_localizations 0.0.0 from sdk depends on clock 1.1.1 SLVR: fact: flutter_localizations 0.0.0 from sdk depends on collection 1.18.0 SLVR: fact: flutter_localizations 0.0.0 from sdk depends on material_color_utilities 0.8.0 SLVR: fact: flutter_localizations 0.0.0 from sdk depends on meta 1.11.0 SLVR: fact: flutter_localizations 0.0.0 from sdk depends on path 1.9.0 SLVR: fact: flutter_localizations 0.0.0 from sdk depends on vector_math 2.1.4 SLVR: selecting flutter_localizations 0.0.0 from sdk SLVR: selecting js 0.7.1 SLVR: fact: build_cli_annotations 2.1.0 depends on args ^2.0.0 SLVR: fact: build_cli_annotations 2.1.0 depends on meta ^1.7.0 SLVR: selecting build_cli_annotations 2.1.0 SLVR: fact: plugin_platform_interface 2.1.8 depends on meta ^1.3.0 SLVR: selecting plugin_platform_interface 2.1.8 SLVR: selecting sky_engine 0.0.99 from sdk SLVR: fact: process 5.0.2 depends on file >=6.0.0 <8.0.0 SLVR: fact: process 5.0.2 depends on path ^1.8.0 SLVR: fact: process 5.0.2 depends on platform ^3.0.0 SLVR: selecting process 5.0.2 SLVR: selecting platform 3.1.4 SLVR: fact: fuchsia_remote_debug_protocol 0.0.0 from sdk depends on process 5.0.2 SLVR: fact: fuchsia_remote_debug_protocol 0.0.0 from sdk depends on vm_service 13.0.0 SLVR: fact: fuchsia_remote_debug_protocol 0.0.0 from sdk depends on file 7.0.0 SLVR: fact: fuchsia_remote_debug_protocol 0.0.0 from sdk depends on meta 1.11.0 SLVR: fact: fuchsia_remote_debug_protocol 0.0.0 from sdk depends on path 1.9.0 SLVR: fact: fuchsia_remote_debug_protocol 0.0.0 from sdk depends on platform 3.1.4 SLVR: selecting fuchsia_remote_debug_protocol 0.0.0 from sdk SLVR: fact: uuid 4.4.0 depends on crypto ^3.0.0 SLVR: fact: uuid 4.4.0 depends on sprintf ^7.0.0 SLVR: fact: uuid 4.4.0 depends on meta ^1.10.0 SLVR: fact: uuid 4.4.0 depends on fixnum ^1.1.0 SLVR: selecting uuid 4.4.0 SLVR: derived: fixnum ^1.1.0 SLVR: derived: sprintf ^7.0.0 SLVR: derived: crypto ^3.0.0 SLVR: fact: sqflite 2.3.3 depends on flutter from sdk SLVR: fact: sqflite 2.3.3 depends on sqflite_common >=2.5.0-1 <4.0.0 SLVR: fact: sqflite 2.3.3 depends on path >=1.8.0 <3.0.0 SLVR: selecting sqflite 2.3.3 SLVR: derived: sqflite_common >=2.5.0-1 <4.0.0 SLVR: selecting rxdart 0.27.7 SLVR: fact: path_provider 2.1.3 depends on flutter from sdk SLVR: fact: path_provider 2.1.3 depends on path_provider_android ^2.1.0 SLVR: fact: path_provider 2.1.3 depends on path_provider_foundation ^2.3.2 SLVR: fact: path_provider 2.1.3 depends on path_provider_linux ^2.2.0 SLVR: fact: path_provider 2.1.3 depends on path_provider_platform_interface ^2.1.0 SLVR: fact: path_provider 2.1.3 depends on path_provider_windows ^2.2.0 SLVR: selecting path_provider 2.1.3 SLVR: derived: path_provider_windows ^2.2.0 SLVR: derived: path_provider_platform_interface ^2.1.0 SLVR: derived: path_provider_linux ^2.2.0 SLVR: derived: path_provider_foundation ^2.3.2 SLVR: derived: path_provider_android ^2.1.0 SLVR: fact: http 1.2.1 depends on async ^2.5.0 SLVR: fact: http 1.2.1 depends on http_parser ^4.0.0 SLVR: fact: http 1.2.1 depends on meta ^1.3.0 SLVR: fact: http 1.2.1 depends on web ^0.5.0 SLVR: selecting http 1.2.1 SLVR: derived: web ^0.5.0 SLVR: derived: http_parser ^4.0.0 SLVR: selecting fixnum 1.1.0 SLVR: selecting sprintf 7.0.0 SLVR: fact: crypto 3.0.3 depends on typed_data ^1.3.0 SLVR: selecting crypto 3.0.3 SLVR: derived: typed_data ^1.3.0 SLVR: fact: sqflite_common 2.5.4 depends on synchronized >=3.0.0 <5.0.0 SLVR: fact: sqflite_common 2.5.4 depends on path >=1.8.0 <3.0.0 SLVR: fact: sqflite_common 2.5.4 depends on meta >=1.3.0 <3.0.0 SLVR: selecting sqflite_common 2.5.4 SLVR: derived: synchronized >=3.0.0 <5.0.0 SLVR: fact: path_provider_windows 2.2.1 depends on ffi ^2.0.0 SLVR: fact: path_provider_windows 2.2.1 depends on flutter from sdk SLVR: fact: path_provider_windows 2.2.1 depends on path ^1.8.0 SLVR: fact: path_provider_windows 2.2.1 depends on path_provider_platform_interface ^2.1.0 SLVR: fact: path_provider_windows 2.2.1 depends on win32 >=2.1.0 <6.0.0 SLVR: selecting path_provider_windows 2.2.1 SLVR: derived: win32 >=2.1.0 <6.0.0 SLVR: fact: path_provider_platform_interface 2.1.2 depends on flutter from sdk SLVR: fact: path_provider_platform_interface 2.1.2 depends on platform ^3.0.0 SLVR: fact: path_provider_platform_interface 2.1.2 depends on plugin_platform_interface ^2.1.7 SLVR: selecting path_provider_platform_interface 2.1.2 SLVR: fact: path_provider_linux 2.2.1 depends on ffi >=1.1.2 <3.0.0 SLVR: fact: path_provider_linux 2.2.1 depends on flutter from sdk SLVR: fact: path_provider_linux 2.2.1 depends on path ^1.8.0 SLVR: fact: path_provider_linux 2.2.1 depends on path_provider_platform_interface ^2.1.0 SLVR: fact: path_provider_linux 2.2.1 depends on xdg_directories >=0.2.0 <2.0.0 SLVR: selecting path_provider_linux 2.2.1 SLVR: derived: xdg_directories >=0.2.0 <2.0.0 SLVR: fact: path_provider_foundation 2.3.2 depends on flutter from sdk SLVR: fact: path_provider_foundation 2.3.2 depends on path_provider_platform_interface ^2.1.0 SLVR: selecting path_provider_foundation 2.3.2 SLVR: fact: path_provider_android 2.2.4 depends on flutter from sdk SLVR: fact: path_provider_android 2.2.4 depends on path_provider_platform_interface ^2.1.0 SLVR: selecting path_provider_android 2.2.4 SLVR: selecting web 0.5.1 SLVR: fact: http_parser 4.0.2 depends on collection ^1.15.0 SLVR: fact: http_parser 4.0.2 depends on source_span ^1.8.0 SLVR: fact: http_parser 4.0.2 depends on string_scanner ^1.1.0 SLVR: fact: http_parser 4.0.2 depends on typed_data ^1.3.0 SLVR: selecting http_parser 4.0.2 SLVR: fact: typed_data 1.3.2 depends on collection ^1.15.0 SLVR: selecting typed_data 1.3.2 SLVR: selecting synchronized 3.1.0+1 SLVR: fact: win32 5.4.0 depends on ffi ^2.1.2 SLVR: selecting win32 5.4.0 SLVR: fact: xdg_directories 1.0.4 depends on meta ^1.3.0 SLVR: fact: xdg_directories 1.0.4 depends on path ^1.8.0 SLVR: selecting xdg_directories 1.0.4 SLVR: Version solving took 0:00:01.046969 seconds. | Tried 1 solutions. FINE: Resolving dependencies finished (1.121s). MSG : intl 0.18.1 (0.19.0 available) | leak_tracker 10.0.0 (10.0.5 available) | leak_tracker_flutter_testing 2.0.1 (3.0.5 available) | leak_tracker_testing 2.0.1 (3.0.1 available) | material_color_utilities 0.8.0 (0.11.1 available) | meta 1.11.0 (1.14.0 available) | test_api 0.6.1 (0.7.1 available) | vm_service 13.0.0 (14.2.1 available) MSG : Got dependencies! MSG : 8 packages have newer versions incompatible with dependency constraints. | Try `flutter pub outdated` for more information. IO : Writing 18118 characters to text file pubspec.lock. FINE: Contents: | # Generated by pub | # See https://dart.dev/tools/pub/glossary#lockfile | packages: | args: | dependency: transitive | description: | name: args | sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" | url: "https://pub.dev" | source: hosted | version: "2.5.0" | async: | dependency: transitive | description: | name: async | sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" | url: "https://pub.dev" | source: hosted | version: "2.11.0" | boolean_selector: | dependency: transitive | description: | name: boolean_selector | sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" | url: "https://pub.dev" | source: hosted | version: "2.1.1" | build_cli_annotations: | dependency: transitive | description: | name: build_cli_annotations | sha256: b59d2769769efd6c9ff6d4c4cede0be115a566afc591705c2040b707534b1172 | url: "https://pub.dev" | source: hosted | version: "2.1.0" | cached_network_image: | dependency: "direct main" | description: | name: cached_network_image | sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" | url: "https://pub.dev" | source: hosted | version: "3.3.1" | cached_network_image_platform_interface: | dependency: transitive | description: | name: cached_network_image_platform_interface | sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" | url: "https://pub.dev" | source: hosted | version: "4.0.0" | cached_network_image_web: | dependency: transitive | description: | name: cached_network_image_web | sha256: "42a835caa27c220d1294311ac409a43361088625a4f23c820b006dd9bffb3316" | url: "https://pub.dev" | source: hosted | version: "1.1.1" | characters: | dependency: transitive | description: | name: characters | sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" | url: "https://pub.dev" | source: hosted | version: "1.3.0" | cli_util: | dependency: transitive | description: | name: cli_util | sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 | url: "https://pub.dev" | source: hosted | version: "0.4.1" | clock: | dependency: transitive | description: | name: clock | sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf | url: "https://pub.dev" | source: hosted | version: "1.1.1" | collection: | dependency: transitive | description: | name: collection | sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a | url: "https://pub.dev" | source: hosted | version: "1.18.0" | crypto: | dependency: transitive | description: | name: crypto | sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab | url: "https://pub.dev" | source: hosted | version: "3.0.3" | fake_async: | dependency: transitive | description: | name: fake_async | sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" | url: "https://pub.dev" | source: hosted | version: "1.3.1" | ffi: | dependency: transitive | description: | name: ffi | sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" | url: "https://pub.dev" | source: hosted | version: "2.1.2" | ffigen: | dependency: "direct dev" | description: | name: ffigen | sha256: dead012f29db2be71ea152458f5eab600de98fbc244e01088ae6bf2616bceca7 | url: "https://pub.dev" | source: hosted | version: "11.0.0" | file: | dependency: transitive | description: | name: file | sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" | url: "https://pub.dev" | source: hosted | version: "7.0.0" | fixnum: | dependency: transitive | description: | name: fixnum | sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" | url: "https://pub.dev" | source: hosted | version: "1.1.0" | fluent_ui: | dependency: "direct main" | description: | name: fluent_ui | sha256: a8c76cb501303d108cb9bd33e516da7cfd078031ff427d68eab6069bf4492a2c | url: "https://pub.dev" | source: hosted | version: "4.8.7" | flutter: | dependency: "direct main" | description: flutter | source: sdk | version: "0.0.0" | flutter_cache_manager: | dependency: transitive | description: | name: flutter_cache_manager | sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba" | url: "https://pub.dev" | source: hosted | version: "3.3.1" | flutter_driver: | dependency: transitive | description: flutter | source: sdk | version: "0.0.0" | flutter_lints: | dependency: "direct dev" | description: | name: flutter_lints | sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1" | url: "https://pub.dev" | source: hosted | version: "3.0.2" | flutter_localizations: | dependency: transitive | description: flutter | source: sdk | version: "0.0.0" | flutter_rust_bridge: | dependency: "direct main" | description: | name: flutter_rust_bridge | sha256: d65dbdd271de6050d3204bab69a8ae25a291deb359403cd4f95a86055cab66c3 | url: "https://pub.dev" | source: hosted | version: "2.0.0-dev.32" | flutter_test: | dependency: "direct dev" | description: flutter | source: sdk | version: "0.0.0" | fuchsia_remote_debug_protocol: | dependency: transitive | description: flutter | source: sdk | version: "0.0.0" | glob: | dependency: transitive | description: | name: glob | sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" | url: "https://pub.dev" | source: hosted | version: "2.1.2" | http: | dependency: transitive | description: | name: http | sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938" | url: "https://pub.dev" | source: hosted | version: "1.2.1" | http_parser: | dependency: transitive | description: | name: http_parser | sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" | url: "https://pub.dev" | source: hosted | version: "4.0.2" | integration_test: | dependency: "direct dev" | description: flutter | source: sdk | version: "0.0.0" | intl: | dependency: transitive | description: | name: intl | sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" | url: "https://pub.dev" | source: hosted | version: "0.18.1" | js: | dependency: transitive | description: | name: js | sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf | url: "https://pub.dev" | source: hosted | version: "0.7.1" | leak_tracker: | dependency: transitive | description: | name: leak_tracker | sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" | url: "https://pub.dev" | source: hosted | version: "10.0.0" | leak_tracker_flutter_testing: | dependency: transitive | description: | name: leak_tracker_flutter_testing | sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 | url: "https://pub.dev" | source: hosted | version: "2.0.1" | leak_tracker_testing: | dependency: transitive | description: | name: leak_tracker_testing | sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 | url: "https://pub.dev" | source: hosted | version: "2.0.1" | lints: | dependency: transitive | description: | name: lints | sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 | url: "https://pub.dev" | source: hosted | version: "3.0.0" | logging: | dependency: transitive | description: | name: logging | sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" | url: "https://pub.dev" | source: hosted | version: "1.2.0" | matcher: | dependency: transitive | description: | name: matcher | sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb | url: "https://pub.dev" | source: hosted | version: "0.12.16+1" | material_color_utilities: | dependency: transitive | description: | name: material_color_utilities | sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" | url: "https://pub.dev" | source: hosted | version: "0.8.0" | math_expressions: | dependency: transitive | description: | name: math_expressions | sha256: db0b72d867491c4e53a1c773e2708d5d6e94bbe06be07080fc9f896766b9cd3d | url: "https://pub.dev" | source: hosted | version: "2.5.0" | meta: | dependency: transitive | description: | name: meta | sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 | url: "https://pub.dev" | source: hosted | version: "1.11.0" | octo_image: | dependency: transitive | description: | name: octo_image | sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d" | url: "https://pub.dev" | source: hosted | version: "2.0.0" | package_config: | dependency: transitive | description: | name: package_config | sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" | url: "https://pub.dev" | source: hosted | version: "2.1.0" | path: | dependency: transitive | description: | name: path | sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" | url: "https://pub.dev" | source: hosted | version: "1.9.0" | path_provider: | dependency: transitive | description: | name: path_provider | sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 | url: "https://pub.dev" | source: hosted | version: "2.1.3" | path_provider_android: | dependency: transitive | description: | name: path_provider_android | sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d | url: "https://pub.dev" | source: hosted | version: "2.2.4" | path_provider_foundation: | dependency: transitive | description: | name: path_provider_foundation | sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" | url: "https://pub.dev" | source: hosted | version: "2.3.2" | path_provider_linux: | dependency: transitive | description: | name: path_provider_linux | sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 | url: "https://pub.dev" | source: hosted | version: "2.2.1" | path_provider_platform_interface: | dependency: transitive | description: | name: path_provider_platform_interface | sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" | url: "https://pub.dev" | source: hosted | version: "2.1.2" | path_provider_windows: | dependency: transitive | description: | name: path_provider_windows | sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" | url: "https://pub.dev" | source: hosted | version: "2.2.1" | platform: | dependency: transitive | description: | name: platform | sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" | url: "https://pub.dev" | source: hosted | version: "3.1.4" | plugin_platform_interface: | dependency: transitive | description: | name: plugin_platform_interface | sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" | url: "https://pub.dev" | source: hosted | version: "2.1.8" | process: | dependency: transitive | description: | name: process | sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32" | url: "https://pub.dev" | source: hosted | version: "5.0.2" | quiver: | dependency: transitive | description: | name: quiver | sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 | url: "https://pub.dev" | source: hosted | version: "3.2.1" | recase: | dependency: transitive | description: | name: recase | sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213 | url: "https://pub.dev" | source: hosted | version: "4.1.0" | rust_builder: | dependency: "direct main" | description: | path: rust_builder | relative: true | source: path | version: "0.0.1" | rxdart: | dependency: transitive | description: | name: rxdart | sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" | url: "https://pub.dev" | source: hosted | version: "0.27.7" | scroll_pos: | dependency: transitive | description: | name: scroll_pos | sha256: cebf602b2dd939de6832bb902ffefb574608d1b84f420b82b381a4007d3c1e1b | url: "https://pub.dev" | source: hosted | version: "0.5.0" | sky_engine: | dependency: transitive | description: flutter | source: sdk | version: "0.0.99" | source_span: | dependency: transitive | description: | name: source_span | sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" | url: "https://pub.dev" | source: hosted | version: "1.10.0" | sprintf: | dependency: transitive | description: | name: sprintf | sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" | url: "https://pub.dev" | source: hosted | version: "7.0.0" | sqflite: | dependency: transitive | description: | name: sqflite | sha256: "5ce2e1a15e822c3b4bfb5400455775e421da7098eed8adc8f26298ada7c9308c" | url: "https://pub.dev" | source: hosted | version: "2.3.3" | sqflite_common: | dependency: transitive | description: | name: sqflite_common | sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4" | url: "https://pub.dev" | source: hosted | version: "2.5.4" | stack_trace: | dependency: transitive | description: | name: stack_trace | sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" | url: "https://pub.dev" | source: hosted | version: "1.11.1" | stream_channel: | dependency: transitive | description: | name: stream_channel | sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 | url: "https://pub.dev" | source: hosted | version: "2.1.2" | string_scanner: | dependency: transitive | description: | name: string_scanner | sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" | url: "https://pub.dev" | source: hosted | version: "1.2.0" | stroke_text: | dependency: "direct main" | description: | name: stroke_text | sha256: "0ec0e526c0eae7d21ce628d78eb9ae9be634259f26b0f1735f9ed540890d8cf6" | url: "https://pub.dev" | source: hosted | version: "0.0.2" | sync_http: | dependency: transitive | description: | name: sync_http | sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" | url: "https://pub.dev" | source: hosted | version: "0.3.1" | synchronized: | dependency: transitive | description: | name: synchronized | sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" | url: "https://pub.dev" | source: hosted | version: "3.1.0+1" | term_glyph: | dependency: transitive | description: | name: term_glyph | sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 | url: "https://pub.dev" | source: hosted | version: "1.2.1" | test_api: | dependency: transitive | description: | name: test_api | sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" | url: "https://pub.dev" | source: hosted | version: "0.6.1" | typed_data: | dependency: transitive | description: | name: typed_data | sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c | url: "https://pub.dev" | source: hosted | version: "1.3.2" | uuid: | dependency: transitive | description: | name: uuid | sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8" | url: "https://pub.dev" | source: hosted | version: "4.4.0" | vector_math: | dependency: transitive | description: | name: vector_math | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" | url: "https://pub.dev" | source: hosted | version: "2.1.4" | vm_service: | dependency: transitive | description: | name: vm_service | sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 | url: "https://pub.dev" | source: hosted | version: "13.0.0" | web: | dependency: transitive | description: | name: web | sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27" | url: "https://pub.dev" | source: hosted | version: "0.5.1" | webdriver: | dependency: transitive | description: | name: webdriver | sha256: "003d7da9519e1e5f329422b36c4dcdf18d7d2978d1ba099ea4e45ba490ed845e" | url: "https://pub.dev" | source: hosted | version: "3.0.3" | win32: | dependency: transitive | description: | name: win32 | sha256: "0a989dc7ca2bb51eac91e8fd00851297cfffd641aa7538b165c62637ca0eaa4a" | url: "https://pub.dev" | source: hosted | version: "5.4.0" | xdg_directories: | dependency: transitive | description: | name: xdg_directories | sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d | url: "https://pub.dev" | source: hosted | version: "1.0.4" | yaml: | dependency: transitive | description: | name: yaml | sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" | url: "https://pub.dev" | source: hosted | version: "3.1.2" | yaml_edit: | dependency: transitive | description: | name: yaml_edit | sha256: c566f4f804215d84a7a2c377667f546c6033d5b34b4f9e60dfb09d17c4e97826 | url: "https://pub.dev" | source: hosted | version: "2.2.0" | sdks: | dart: ">=3.3.0 <4.0.0" | flutter: ">=3.16.0" FINE: Sending analytics hit for "pub-get" of path_provider_android version 2.2.4 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of math_expressions version 2.5.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of crypto version 3.0.3 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of lints version 3.0.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of test_api version 0.6.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of webdriver version 3.0.3 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of build_cli_annotations version 2.1.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of sqflite_common version 2.5.4 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of path_provider_foundation version 2.3.2 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of web version 0.5.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of recase version 4.1.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of collection version 1.18.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of ffi version 2.1.2 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of path_provider version 2.1.3 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of http_parser version 4.0.2 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of stream_channel version 2.1.2 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of flutter_lints version 3.0.2 as dependency-kind dev FINE: Sending analytics hit for "pub-get" of plugin_platform_interface version 2.1.8 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of flutter_rust_bridge version 2.0.0-dev.32 as dependency-kind direct FINE: Sending analytics hit for "pub-get" of clock version 1.1.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of path_provider_linux version 2.2.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of logging version 1.2.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of cached_network_image_platform_interface version 4.0.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of flutter_cache_manager version 3.3.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of args version 2.5.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of sprintf version 7.0.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of path_provider_windows version 2.2.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of file version 7.0.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of meta version 1.11.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of yaml version 3.1.2 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of fake_async version 1.3.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of leak_tracker_flutter_testing version 2.0.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of scroll_pos version 0.5.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of fixnum version 1.1.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of synchronized version 3.1.0+1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of async version 2.11.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of xdg_directories version 1.0.4 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of platform version 3.1.4 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of win32 version 5.4.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of js version 0.7.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of characters version 1.3.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of vm_service version 13.0.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of rxdart version 0.27.7 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of intl version 0.18.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of cached_network_image version 3.3.1 as dependency-kind direct FINE: Sending analytics hit for "pub-get" of term_glyph version 1.2.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of cli_util version 0.4.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of fluent_ui version 4.8.7 as dependency-kind direct FINE: Sending analytics hit for "pub-get" of uuid version 4.4.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of cached_network_image_web version 1.1.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of sqflite version 2.3.3 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of material_color_utilities version 0.8.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of boolean_selector version 2.1.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of string_scanner version 1.2.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of http version 1.2.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of path_provider_platform_interface version 2.1.2 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of process version 5.0.2 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of quiver version 3.2.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of leak_tracker_testing version 2.0.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of matcher version 0.12.16+1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of path version 1.9.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of vector_math version 2.1.4 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of source_span version 1.10.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of package_config version 2.1.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of leak_tracker version 10.0.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of ffigen version 11.0.0 as dependency-kind dev FINE: Sending analytics hit for "pub-get" of sync_http version 0.3.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of yaml_edit version 2.2.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of stroke_text version 0.0.2 as dependency-kind direct FINE: Sending analytics hit for "pub-get" of typed_data version 1.3.2 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of stack_trace version 1.11.1 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of octo_image version 2.0.0 as dependency-kind transitive FINE: Sending analytics hit for "pub-get" of glob version 2.1.2 as dependency-kind transitive IO : Writing 14963 characters to text file .dart_tool/package_config.json. FINE: Contents: | { | "configVersion": 2, | "packages": [ | { | "name": "args", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/args-2.5.0", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "async", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/async-2.11.0", | "packageUri": "lib/", | "languageVersion": "2.18" | }, | { | "name": "boolean_selector", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1", | "packageUri": "lib/", | "languageVersion": "2.17" | }, | { | "name": "build_cli_annotations", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/build_cli_annotations-2.1.0", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "cached_network_image", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/cached_network_image-3.3.1", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "cached_network_image_platform_interface", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/cached_network_image_platform_interface-4.0.0", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "cached_network_image_web", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/cached_network_image_web-1.1.1", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "characters", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/characters-1.3.0", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "cli_util", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/cli_util-0.4.1", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "clock", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/clock-1.1.1", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "collection", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/collection-1.18.0", | "packageUri": "lib/", | "languageVersion": "2.18" | }, | { | "name": "crypto", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/crypto-3.0.3", | "packageUri": "lib/", | "languageVersion": "2.19" | }, | { | "name": "fake_async", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/fake_async-1.3.1", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "ffi", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/ffi-2.1.2", | "packageUri": "lib/", | "languageVersion": "3.3" | }, | { | "name": "ffigen", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/ffigen-11.0.0", | "packageUri": "lib/", | "languageVersion": "3.2" | }, | { | "name": "file", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/file-7.0.0", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "fixnum", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/fixnum-1.1.0", | "packageUri": "lib/", | "languageVersion": "2.19" | }, | { | "name": "fluent_ui", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/fluent_ui-4.8.7", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "flutter", | "rootUri": "file:///opt/flutter/packages/flutter", | "packageUri": "lib/", | "languageVersion": "3.2" | }, | { | "name": "flutter_cache_manager", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/flutter_cache_manager-3.3.1", | "packageUri": "lib/", | "languageVersion": "2.17" | }, | { | "name": "flutter_driver", | "rootUri": "file:///opt/flutter/packages/flutter_driver", | "packageUri": "lib/", | "languageVersion": "3.2" | }, | { | "name": "flutter_lints", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/flutter_lints-3.0.2", | "packageUri": "lib/", | "languageVersion": "3.1" | }, | { | "name": "flutter_localizations", | "rootUri": "file:///opt/flutter/packages/flutter_localizations", | "packageUri": "lib/", | "languageVersion": "3.2" | }, | { | "name": "flutter_rust_bridge", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/flutter_rust_bridge-2.0.0-dev.32", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "flutter_test", | "rootUri": "file:///opt/flutter/packages/flutter_test", | "packageUri": "lib/", | "languageVersion": "3.2" | }, | { | "name": "fuchsia_remote_debug_protocol", | "rootUri": "file:///opt/flutter/packages/fuchsia_remote_debug_protocol", | "packageUri": "lib/", | "languageVersion": "3.2" | }, | { | "name": "glob", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/glob-2.1.2", | "packageUri": "lib/", | "languageVersion": "2.19" | }, | { | "name": "http", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/http-1.2.1", | "packageUri": "lib/", | "languageVersion": "3.3" | }, | { | "name": "http_parser", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/http_parser-4.0.2", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "integration_test", | "rootUri": "file:///opt/flutter/packages/integration_test", | "packageUri": "lib/", | "languageVersion": "3.2" | }, | { | "name": "intl", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/intl-0.18.1", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "js", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/js-0.7.1", | "packageUri": "lib/", | "languageVersion": "3.1" | }, | { | "name": "leak_tracker", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/leak_tracker-10.0.0", | "packageUri": "lib/", | "languageVersion": "3.1" | }, | { | "name": "leak_tracker_flutter_testing", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/leak_tracker_flutter_testing-2.0.1", | "packageUri": "lib/", | "languageVersion": "3.1" | }, | { | "name": "leak_tracker_testing", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/leak_tracker_testing-2.0.1", | "packageUri": "lib/", | "languageVersion": "3.1" | }, | { | "name": "lints", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/lints-3.0.0", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "logging", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/logging-1.2.0", | "packageUri": "lib/", | "languageVersion": "2.19" | }, | { | "name": "matcher", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/matcher-0.12.16+1", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "material_color_utilities", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/material_color_utilities-0.8.0", | "packageUri": "lib/", | "languageVersion": "2.17" | }, | { | "name": "math_expressions", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/math_expressions-2.5.0", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "meta", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/meta-1.11.0", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "octo_image", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/octo_image-2.0.0", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "package_config", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/package_config-2.1.0", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "path", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/path-1.9.0", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "path_provider", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/path_provider-2.1.3", | "packageUri": "lib/", | "languageVersion": "3.1" | }, | { | "name": "path_provider_android", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/path_provider_android-2.2.4", | "packageUri": "lib/", | "languageVersion": "3.2" | }, | { | "name": "path_provider_foundation", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/path_provider_foundation-2.3.2", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "path_provider_linux", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1", | "packageUri": "lib/", | "languageVersion": "2.19" | }, | { | "name": "path_provider_platform_interface", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.1.2", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "path_provider_windows", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/path_provider_windows-2.2.1", | "packageUri": "lib/", | "languageVersion": "2.19" | }, | { | "name": "platform", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/platform-3.1.4", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "plugin_platform_interface", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.8", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "process", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/process-5.0.2", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "quiver", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/quiver-3.2.1", | "packageUri": "lib/", | "languageVersion": "2.17" | }, | { | "name": "recase", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/recase-4.1.0", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "rust_builder", | "rootUri": "../rust_builder", | "packageUri": "lib/", | "languageVersion": "3.3" | }, | { | "name": "rxdart", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/rxdart-0.27.7", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "scroll_pos", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/scroll_pos-0.5.0", | "packageUri": "lib/", | "languageVersion": "2.15" | }, | { | "name": "sky_engine", | "rootUri": "file:///opt/flutter/bin/cache/pkg/sky_engine", | "packageUri": "lib/", | "languageVersion": "3.2" | }, | { | "name": "source_span", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/source_span-1.10.0", | "packageUri": "lib/", | "languageVersion": "2.18" | }, | { | "name": "sprintf", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/sprintf-7.0.0", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "sqflite", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/sqflite-2.3.3", | "packageUri": "lib/", | "languageVersion": "3.3" | }, | { | "name": "sqflite_common", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/sqflite_common-2.5.4", | "packageUri": "lib/", | "languageVersion": "3.3" | }, | { | "name": "stack_trace", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/stack_trace-1.11.1", | "packageUri": "lib/", | "languageVersion": "2.18" | }, | { | "name": "stream_channel", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/stream_channel-2.1.2", | "packageUri": "lib/", | "languageVersion": "2.19" | }, | { | "name": "string_scanner", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/string_scanner-1.2.0", | "packageUri": "lib/", | "languageVersion": "2.18" | }, | { | "name": "stroke_text", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/stroke_text-0.0.2", | "packageUri": "lib/", | "languageVersion": "2.16" | }, | { | "name": "sync_http", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/sync_http-0.3.1", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "synchronized", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/synchronized-3.1.0+1", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "term_glyph", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/term_glyph-1.2.1", | "packageUri": "lib/", | "languageVersion": "2.12" | }, | { | "name": "test_api", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/test_api-0.6.1", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "typed_data", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/typed_data-1.3.2", | "packageUri": "lib/", | "languageVersion": "2.17" | }, | { | "name": "uuid", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/uuid-4.4.0", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "vector_math", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/vector_math-2.1.4", | "packageUri": "lib/", | "languageVersion": "2.14" | }, | { | "name": "vm_service", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/vm_service-13.0.0", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "web", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/web-0.5.1", | "packageUri": "lib/", | "languageVersion": "3.3" | }, | { | "name": "webdriver", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/webdriver-3.0.3", | "packageUri": "lib/", | "languageVersion": "2.18" | }, | { | "name": "win32", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/win32-5.4.0", | "packageUri": "lib/", | "languageVersion": "3.3" | }, | { | "name": "xdg_directories", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/xdg_directories-1.0.4", | "packageUri": "lib/", | "languageVersion": "3.0" | }, | { | "name": "yaml", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/yaml-3.1.2", | "packageUri": "lib/", | "languageVersion": "2.19" | }, | { | "name": "yaml_edit", | "rootUri": "file:///home/jj/.pub-cache/hosted/pub.dev/yaml_edit-2.2.0", | "packageUri": "lib/", | "languageVersion": "2.19" | }, | { | "name": "bramletts_games", | "rootUri": "../", | "packageUri": "lib/", | "languageVersion": "3.2" | } | ], | "generated": "2024-04-24T21:28:08.973107Z", | "generator": "pub", | "generatorVersion": "3.3.1" | } IO : Writing 108776 characters to text file /home/jj/.pub-cache/log/pub_log.txt. MSG : Logs written to /home/jj/.pub-cache/log/pub_log.txt. [+1822 ms] Found plugin path_provider at /home/jj/.pub-cache/hosted/pub.dev/path_provider-2.1.3/ [ +7 ms] Found plugin path_provider_android at /home/jj/.pub-cache/hosted/pub.dev/path_provider_android-2.2.4/ [ +3 ms] Found plugin path_provider_foundation at /home/jj/.pub-cache/hosted/pub.dev/path_provider_foundation-2.3.2/ [ +3 ms] Found plugin path_provider_linux at /home/jj/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/ [ +5 ms] Found plugin path_provider_windows at /home/jj/.pub-cache/hosted/pub.dev/path_provider_windows-2.2.1/ [ +25 ms] Found plugin sqflite at /home/jj/.pub-cache/hosted/pub.dev/sqflite-2.3.3/ [ +43 ms] Found plugin rust_builder at /home/jj/github/bramletts-games/client/rust_builder/ [ +23 ms] Found plugin integration_test at /opt/flutter/packages/integration_test/ [ +78 ms] Found plugin path_provider at /home/jj/.pub-cache/hosted/pub.dev/path_provider-2.1.3/ [ +1 ms] Found plugin path_provider_android at /home/jj/.pub-cache/hosted/pub.dev/path_provider_android-2.2.4/ [ +1 ms] Found plugin path_provider_foundation at /home/jj/.pub-cache/hosted/pub.dev/path_provider_foundation-2.3.2/ [ +1 ms] Found plugin path_provider_linux at /home/jj/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/ [ +1 ms] Found plugin path_provider_windows at /home/jj/.pub-cache/hosted/pub.dev/path_provider_windows-2.2.1/ [ +8 ms] Found plugin sqflite at /home/jj/.pub-cache/hosted/pub.dev/sqflite-2.3.3/ [ +25 ms] Found plugin rust_builder at /home/jj/github/bramletts-games/client/rust_builder/ [ +10 ms] Found plugin integration_test at /opt/flutter/packages/integration_test/ [ +107 ms] No packages with native assets. Skipping native assets compilation. [ +3 ms] Initializing file store [ +7 ms] Skipping target: gen_localizations [ +4 ms] gen_dart_plugin_registrant: Starting due to {InvalidatedReasonKind.inputChanged: The following inputs have updated contents: /home/jj/github/bramletts-games/client/.dart_tool/package_config_subset} [ +66 ms] Found plugin path_provider at /home/jj/.pub-cache/hosted/pub.dev/path_provider-2.1.3/ [ +1 ms] Found plugin path_provider_android at /home/jj/.pub-cache/hosted/pub.dev/path_provider_android-2.2.4/ [ +1 ms] Found plugin path_provider_foundation at /home/jj/.pub-cache/hosted/pub.dev/path_provider_foundation-2.3.2/ [ +1 ms] Found plugin path_provider_linux at /home/jj/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/ [ +2 ms] Found plugin path_provider_windows at /home/jj/.pub-cache/hosted/pub.dev/path_provider_windows-2.2.1/ [ +10 ms] Found plugin sqflite at /home/jj/.pub-cache/hosted/pub.dev/sqflite-2.3.3/ [ +26 ms] Found plugin rust_builder at /home/jj/github/bramletts-games/client/rust_builder/ [ +9 ms] Found plugin integration_test at /opt/flutter/packages/integration_test/ [ +7 ms] gen_dart_plugin_registrant: Complete [ +1 ms] _composite: Starting due to {} [ ] _composite: Complete [ +2 ms] complete [ +5 ms] Launching lib/main.dart on Linux in debug mode... [ +3 ms] /opt/flutter/bin/cache/dart-sdk/bin/dartaotruntime --disable-dart-dev /opt/flutter/bin/cache/dart-sdk/bin/snapshots/frontend_server_aot.dart.snapshot --sdk-root /opt/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk/ --incremental --target=flutter --experimental-emit-debug-metadata -DFLUTTER_WEB_AUTO_DETECT=true -DFLUTTER_WEB_CANVASKIT_URL=https://www.gstatic.com/flutter-canvaskit/2e4ba9c6fb499ccd4e81420543783cc7267ae406/ --output-dill /tmp/flutter_tools.YKCKSD/flutter_tool.QFCWHN/app.dill --packages /home/jj/github/bramletts-games/client/.dart_tool/package_config.json -Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts --track-widget-creation --filesystem-scheme org-dartlang-root --initialize-from-dill build/26c1224f28ba1925f2521c2679048535.cache.dill.track.dill --source file:///home/jj/github/bramletts-games/client/.dart_tool/flutter_build/dart_plugin_registrant.dart --source package:flutter/src/dart_plugin_registrant.dart -Dflutter.dart_plugin_registrant=file:///home/jj/github/bramletts-games/client/.dart_tool/flutter_build/dart_plugin_registrant.dart --verbosity=error --enable-experiment=alternative-invalidation-strategy [ +20 ms] Building Linux application... [ +11 ms] <- compile package:bramletts_games/main.dart [ +4 ms] executing: [build/linux/x64/debug/] cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DFLUTTER_TARGET_PLATFORM=linux-x64 /home/jj/github/bramletts-games/client/linux [ +239 ms] -- The CXX compiler identification is Clang 17.0.6 [+1305 ms] -- Detecting CXX compiler ABI info [ +210 ms] -- Detecting CXX compiler ABI info - done [ +13 ms] -- Check for working CXX compiler: /usr/sbin/clang++ - skipped [ ] -- Detecting CXX compile features [ ] -- Detecting CXX compile features - done [ +8 ms] -- Found PkgConfig: /usr/sbin/pkg-config (found version "2.1.1") [ ] -- Checking for module 'gtk+-3.0' [ +24 ms] -- Found gtk+-3.0, version 3.24.41 [ +112 ms] -- Checking for module 'glib-2.0' [ +13 ms] -- Found glib-2.0, version 2.80.0 [ +40 ms] -- Checking for module 'gio-2.0' [ +11 ms] -- Found gio-2.0, version 2.80.0 [ +93 ms] -- Configuring done (2.0s) [ +24 ms] -- Generating done (0.0s) [ +19 ms] -- Build files have been written to: /home/jj/github/bramletts-games/client/build/linux/x64/debug [ +4 ms] executing: ninja -C build/linux/x64/debug install [ +11 ms] ninja: Entering directory `build/linux/x64/debug' [+36052 ms] [1/7] Generating /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/libflutter_linux_gtk.so, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_basic_message_channel.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_binary_codec.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_binary_messenger.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_dart_project.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_engine.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_json_message_codec.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_json_method_codec.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_message_codec.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_method_call.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_method_channel.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_method_codec.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_method_response.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_plugin_registrar.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_plugin_registry.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_standard_message_codec.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_standard_method_codec.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_string_codec.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_value.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/fl_view.h, /home/jj/github/bramletts-games/client/linux/flutter/ephemeral/flutter_linux/flutter_linux.h, _phony_ [ +3 ms] [ +46 ms] Unable to locate an Android SDK. [ ] [ +6 ms] executing: uname -m [ ] [ +3 ms] Exit code 0 from: uname -m [ ] [ ] x86_64 [ ] [ +26 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. [ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. [ ] [ +2 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. [ +1 ms] [ +102 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update. [ +20 ms] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update. [ ] [ ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. [ ] [ ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update. [ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update. [ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. [ ] [ +1 ms] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. [ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. [ ] [ +2 ms] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update. [ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update. [ +1 ms] [ +46 ms] Initializing file store [ ] [ +17 ms] native_assets: Starting due to {} [ ] [ +2 ms] Skipping target: gen_localizations [ ] [ +10 ms] gen_dart_plugin_registrant: Starting due to {InvalidatedReasonKind.inputChanged: The following inputs have updated contents: /home/jj/github/bramletts-games/client/.dart_tool/package_config_subset} [ ] [ +6 ms] unpack_linux: Starting due to {} [ ] [ +503 ms] unpack_linux: Complete [ ] [ +952 ms] No packages with native assets. Skipping native assets compilation. [ ] [ ] Writing native_assets.yaml. [ +1 ms] [ +24 ms] Writing /home/jj/github/bramletts-games/client/.dart_tool/flutter_build/3cfb831e6f7b405204cc38d73e6f1a19/native_assets.yaml done. [ ] [ +18 ms] native_assets: Complete [ ] [ +47 ms] Found plugin path_provider at /home/jj/.pub-cache/hosted/pub.dev/path_provider-2.1.3/ [ ] [ +5 ms] Found plugin path_provider_android at /home/jj/.pub-cache/hosted/pub.dev/path_provider_android-2.2.4/ [ ] [ +3 ms] Found plugin path_provider_foundation at /home/jj/.pub-cache/hosted/pub.dev/path_provider_foundation-2.3.2/ [ ] [ +2 ms] Found plugin path_provider_linux at /home/jj/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/ [ ] [ +4 ms] Found plugin path_provider_windows at /home/jj/.pub-cache/hosted/pub.dev/path_provider_windows-2.2.1/ [ +2 ms] [ +20 ms] Found plugin sqflite at /home/jj/.pub-cache/hosted/pub.dev/sqflite-2.3.3/ [ +1 ms] [ +47 ms] Found plugin rust_builder at /home/jj/github/bramletts-games/client/rust_builder/ [ +3 ms] [ +16 ms] Found plugin integration_test at /opt/flutter/packages/integration_test/ [ ] [ +18 ms] gen_dart_plugin_registrant: Complete [ ] [ +1 ms] kernel_snapshot: Starting due to {} [ ] [ +1 ms] Embedding native assets mapping /home/jj/github/bramletts-games/client/.dart_tool/flutter_build/3cfb831e6f7b405204cc38d73e6f1a19/native_assets.yaml in kernel. [ +11 ms] [ +5 ms] /opt/flutter/bin/cache/dart-sdk/bin/dartaotruntime --disable-dart-dev /opt/flutter/bin/cache/dart-sdk/bin/snapshots/frontend_server_aot.dart.snapshot --sdk-root /opt/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk/ --target=flutter --no-print-incremental-dependencies -DFLUTTER_WEB_AUTO_DETECT=true -DFLUTTER_WEB_CANVASKIT_URL=https://www.gstatic.com/flutter-canvaskit/2e4ba9c6fb499ccd4e81420543783cc7267ae406/ -Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts --track-widget-creation --packages /home/jj/github/bramletts-games/client/.dart_tool/package_config.json --output-dill /home/jj/github/bramletts-games/client/.dart_tool/flutter_build/3cfb831e6f7b405204cc38d73e6f1a19/app.dill --depfile /home/jj/github/bramletts-games/client/.dart_tool/flutter_build/3cfb831e6f7b405204cc38d73e6f1a19/kernel_snapshot.d --incremental --initialize-from-dill /home/jj/github/bramletts-games/client/.dart_tool/flutter_build/3cfb831e6f7b405204cc38d73e6f1a19/app.dill --source file:///home/jj/github/bramletts-games/client/.dart_tool/flutter_build/dart_plugin_registrant.dart --source package:flutter/src/dart_plugin_registrant.dart -Dflutter.dart_plugin_registrant=file:///home/jj/github/bramletts-games/client/.dart_tool/flutter_build/dart_plugin_registrant.dart --native-assets /home/jj/github/bramletts-games/client/.dart_tool/flutter_build/3cfb831e6f7b405204cc38d73e6f1a19/native_assets.yaml --verbosity=error package:bramletts_games/main.dart [ +2 ms] [+26163 ms] kernel_snapshot: Complete [ +2 ms] [+3836 ms] debug_bundle_linux-x64_assets: Starting due to {} [ +1 ms] [+1005 ms] shaderc command: [/opt/flutter/bin/cache/artifacts/engine/linux-x64/impellerc, --sksl, --iplr, --sl=/home/jj/github/bramletts-games/client/build/flutter_assets/shaders/ink_sparkle.frag, --spirv=/home/jj/github/bramletts-games/client/build/flutter_assets/shaders/ink_sparkle.frag.spirv, --input=/opt/flutter/packages/flutter/lib/src/material/shaders/ink_sparkle.frag, --input-type=frag, --include=/opt/flutter/packages/flutter/lib/src/material/shaders, --include=/opt/flutter/bin/cache/artifacts/engine/linux-x64/shader_lib] [ ] [ +662 ms] debug_bundle_linux-x64_assets: Complete [ +4 ms] [+1418 ms] Persisting file store [ ] [ +30 ms] Done persisting file store [ ] [ +39 ms] build succeeded. [ ] [ +48 ms] "flutter assemble" took 35,043ms. [ +1 ms] [ +150 ms] ensureAnalyticsSent: 129ms [ ] [ ] Running 0 shutdown hooks [ ] [ ] Shutdown hooks complete [ ] [ ] exiting with code 0 [+3389 ms] [2/7] Building CXX object CMakeFiles/bramletts_games.dir/flutter/generated_plugin_registrant.cc.o [ +34 ms] [3/7] Building CXX object CMakeFiles/bramletts_games.dir/main.cc.o [ +22 ms] [4/7] Building CXX object CMakeFiles/bramletts_games.dir/my_application.cc.o [ +980 ms] [5/7] Linking CXX executable intermediates_do_not_run/bramletts_games [+25937 ms] [6/7] Generating librust_lib_bramletts_games.so, _phony_ [ ] Resolving dependencies... [ ] + adaptive_number 1.0.0 [ ] + args 2.4.2 (2.5.0 available) [ ] + async 2.11.0 [ ] + build_tool 1.0.0 from path /home/jj/github/bramletts-games/client/rust_builder/cargokit/build_tool [ ] + collection 1.18.0 [ ] + convert 3.1.1 [ ] + crypto 3.0.3 [ ] + ed25519_edwards 0.3.1 [ ] + fixnum 1.1.0 [ ] + github 9.17.0 (9.24.0 available) [ ] + hex 0.2.0 [ ] + http 1.1.0 (1.2.1 available) [ ] + http_parser 4.0.2 [ ] + json_annotation 4.9.0 [ ] + logging 1.2.0 [ ] + meta 1.14.0 [ ] + path 1.8.0 (1.9.0 available) [ ] + petitparser 5.4.0 (6.0.2 available) [ ] + source_span 1.10.0 [ ] + string_scanner 1.2.0 [ ] + term_glyph 1.2.1 [ ] + toml 0.14.0 (0.15.0 available) [ ] + typed_data 1.3.2 [ ] + version 3.0.0 (3.0.2 available) [ ] + yaml 3.1.2 [ ] Changed 25 dependencies! [ ] 7 packages have newer versions incompatible with dependency constraints. [ ] Try `dart pub outdated` for more information. [ ] Compiling bin/build_tool_runner.dart to kernel file bin/build_tool_runner.dill. [ ] INFO: Precompiled binaries are disabled [ ] INFO: Building rust_lib_bramletts_games for x86_64-unknown-linux-gnu [ ] [6/7] Install the project... [ +43 ms] -- Install configuration: "Debug" [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/bramletts_games [ ] -- Set non-toolchain portion of runtime path of "/home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/bramletts_games" to "$ORIGIN/lib" [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/icudtl.dat [ +4 ms] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/lib/libflutter_linux_gtk.so [ +114 ms] -- Up-to-date: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/lib [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/shaders [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/shaders/ink_sparkle.frag [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/version.json [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/packages [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/packages/fluent_ui [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/packages/fluent_ui/assets [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/packages/fluent_ui/assets/AcrylicNoise.png [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/packages/fluent_ui/fonts [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/packages/fluent_ui/fonts/FluentIcons.ttf [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/kernel_blob.bin [ +97 ms] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/AssetManifest.json [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/NOTICES.Z [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/FontManifest.json [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/fonts [ ] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/fonts/MaterialIcons-Regular.otf [ +2 ms] -- Installing: /home/jj/github/bramletts-games/client/build/linux/x64/debug/bundle/data/flutter_assets/AssetManifest.bin [ +19 ms] Building Linux application... (completed in 68.9s) [ +405 ms] VM Service URL on device: http://127.0.0.1:37115/r7jLZ_tcO6w=/ [ +133 ms] [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Invalid argument(s): Failed to load dynamic library 'librust_lib_bramletts_games.so': librust_lib_bramletts_games.so: cannot open shared object file: No such file or directory [ +1 ms] #0 _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:11:43) [ ] #1 new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:22:12) [ ] #2 new ExternalLibrary.open (package:flutter_rust_bridge/src/platform_types/_io.dart:39:47) [ ] #3 loadExternalLibraryRaw. (package:flutter_rust_bridge/src/loader/_io.dart:80:46) [ ] #4 loadExternalLibraryRaw.tryAssumingNonPackaged (package:flutter_rust_bridge/src/loader/_io.dart:49:22) [ ] #5 loadExternalLibraryRaw (package:flutter_rust_bridge/src/loader/_io.dart:79:12) [ ] #6 loadExternalLibrary (package:flutter_rust_bridge/src/loader/_io.dart:14:10) [ ] #7 BaseEntrypoint._loadDefaultExternalLibrary (package:flutter_rust_bridge/src/main_components/entrypoint.dart:129:13) [ ] #8 BaseEntrypoint.initImpl (package:flutter_rust_bridge/src/main_components/entrypoint.dart:48:31) [ ] #9 RustLib.init (package:bramletts_games/src/rust/frb_generated.dart:26:20) [ ] #10 main (package:bramletts_games/main.dart:9:17) [ ] #11 _runMain. (dart:ui/hooks.dart:301:23) [ ] #12 _delayEntrypointInvocation. (dart:isolate-patch/isolate_patch.dart:297:19) [ ] #13 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12) [+6267 ms] Caching compiled dill [ +55 ms] Connecting to service protocol: http://127.0.0.1:37115/r7jLZ_tcO6w=/ [ +122 ms] ensureAnalyticsSent: 121ms [ ] Running 1 shutdown hook [ +8 ms] Shutdown hooks complete [ +1 ms] exiting with code 1 ```
fzyzcjy commented 3 weeks ago

It's OK and take your time! If it turn out to be cargokit issue, I guess I may not be able to help much in this repo and it may be great to issue/PR in cargokit.

TheBotlyNoob commented 3 weeks ago

I found a fairly hacky fix, but it works for my setup and I don't really feel like debugging further unless someone else is having this issue.

I nuked the existing rust_builder/, linux/, windows/, macos/, etc. folders, the pubspec.yaml-- pretty much everything BUT the lib and rust directories, and regenerated it using flutter_rust_bridge_codegen create <project_name> and copied the generated folders back to the original directory.

I think this was caused by a botched upgrade by me. For some reason, instead of using flutter_rust_bridge_codegen to upgrade the project, I simply found and replaced all instances of -dev.<OLD_VERSION> (i.e. -dev.21) with -dev.<NEW_VERSION> (i.e. -dev.32). I'm not sure if this was the real issue or not, but its what happened before things went haywire (the botched upgrade to flutter_rust_bridge happened at about the same time as me switching to Nix, which is why I didn't notice it before immediately blaming it on Nix.

To fix the Nix issue, I simply patched the LD_LIBRARY_PATH to "$(pwd)/client/build/linux/x64/debug/bundle/lib:$(pwd)/client/build/linux/x64/release/bundle/lib:$LD_LIBRARY_PATH" (export LD_LIBRARY_PATH="$(pwd)/client/build/linux/x64/debug/bundle/lib:$(pwd)/client/build/linux/x64/release/bundle/lib:$LD_LIBRARY_PATH" in the shell before running flutter run)

if anyone else has similar issues, I'd be happy to help debug with you, and maybe provide another fix I find in the future. But for now this is good enough for me.

TheBotlyNoob commented 3 weeks ago

for the full diff, see https://github.com/TheBotlyNoob/bramlett/commit/d1da8cbffe833e80416a72c9eaf52651ec70f039

fzyzcjy commented 3 weeks ago

I simply found and replaced all instances of

Well I guess this may not work: The developer-facing API is guaranteed to not have breaking changes (for stable versions) and almost no breaking changes (for .dev versions); however, the generated code can change arbitrarily. In other words, it is possible that .dev.21's generated code will be quite different from that of .dev.32, and that will cause trouble because the runtime library version mismatch.

To fix the Nix issue, I simply patched

Looks pretty reasonable - I personally also often wrap commands with extra things

TheBotlyNoob commented 2 weeks ago

Found what was wrong with Nix: https://nix.dev/guides/faq.html#how-to-run-non-nix-executables. There's nothing you can really do about it, I don't think- just putting it here for info.

On the upgrading, I found-and-replaced the versions then regenerated. I didn't just change the version.

Anyhow, I think this issue is pretty much fixed, although the only fix is kind of a workaround. If you feel like thats enough, you can close it.

fzyzcjy commented 2 weeks ago

I see, this looks like speciality of nix.

Never used nix before, but by looking at the doc, I guess it may be possible to use things like programs.nix-ld.libraries to fix it?

patmuk commented 2 weeks ago

I switched to nix as well ... and ran into troubles. A tip I got was to use a FHS environment - which only works on Linux. As I am running on an apple silicon Mac, I wrote a nix.flake, which installs flutter & dart into the local project directory. Rust is installed globally - nix only installs rustup, which I used to install the rust toolchain.

I had a lot of lib issues (though these where apple libs (like core, UIKit, ...) not present, and could only solve these by not using libs c-compiler, but Xcode's one -> by using mkShellNoCC instead of mkShell.

If anyone has troubles as well: write to me :)

acul009 commented 2 weeks ago

I have a flake with dev shell for my project which I could share if anyone is interested

Edit: Maybe we could work on adding a default flake for nix users?

patmuk commented 2 weeks ago

@acul009 you don't compile to iOS, right? Because for that the flutter-nix package is broken.

Otherwise it might be a good idea - we could start by joining our nix flake files. @fzyzcjy what do you think? Pro:

Maybe @acul009 we should wait for others to "+1" this discussion.

fzyzcjy commented 2 weeks ago

@fzyzcjy what do you think?

I do not have Nix (thus not possible to play with it by myself), but PRs are welcome! After it is setup, we can also utilize the github actions (e.g. https://github.com/marketplace/actions/install-nix) to ensure it never breaks as time goes by.

acul009 commented 2 weeks ago

@acul009 you don't compile to iOS, right? Because for that the flutter-nix package is broken.

Not yet, though I'd like to in the future

Otherwise it might be a good idea - we could start by joining our nix flake files. I'm pretty new to nix and nixos and it took me quite a while to get this working. If there's a nix flake that works out of the box, then others wouldn't need to scour these issues to get it working.

rob-mur commented 5 days ago

Hi!

I've been messing around with Nix trying to get my project to work too (which was previously on ubuntu). Note that it's still on 1.82.6 of this library as I've not found the time to work through the 2.0 upgrade.

What I'm noticing is the same bug that has been raised here, but the fix needed tweaking slightly to remove the 'client' part of the path (presumably that's from v2.0?).

Please see my full flake below as it was very painful to make so if it saves anyone time that's a win!

Note that I also had to specify llvm path explicitly in my build.rs using the LIBCLANG_PATH environment variable as otherwise it isn't found by ffigen.

Most of the advice I saw online was to use the nix-shell -p ... arguments to 'make the environment work as if it was normal linux' but I didn't have that that experience at all (YMMV), but these environment variables allow me to build!

```nix { inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions"; flake-utils.follows = "nix-vscode-extensions/flake-utils"; nixpkgs.follows = "nix-vscode-extensions/nixpkgs"; # Rust rust-overlay.url = "github:oxalica/rust-overlay"; }; outputs = inputs: inputs.flake-utils.lib.eachDefaultSystem ( system: let pkgs = import inputs.nixpkgs { inherit system; overlays = [ inputs.rust-overlay.overlays.default ]; }; extensions = inputs.nix-vscode-extensions.extensions.${system}; inherit (pkgs) vscode-with-extensions vscodium; packages.default = vscode-with-extensions.override { vscode = vscodium; vscodeExtensions = [ extensions.vscode-marketplace.bbenoist.nix extensions.vscode-marketplace.ms-vscode-remote.remote-ssh extensions.vscode-marketplace.jnoortheen.nix-ide extensions.vscode-marketplace.ms-vscode-remote.remote-containers extensions.vscode-marketplace.rust-lang.rust-analyzer extensions.open-vsx.eamodio.gitlens extensions.open-vsx.dart-code.flutter extensions.open-vsx.dart-code.dart-code ]; }; devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ pkg-config cmake packages.default flutter ninja corrosion (pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.default)) gtk3 clang llvmPackages.libclang ]; shellHook = '' printf "VSCodium with extensions:\n" codium --list-extensions export LIBCLANG_PATH="${pkgs.llvmPackages.libclang.lib}"; export CPATH="${pkgs.clang.libc_dev}/include:${pkgs.clang.libc}/lib:${pkgs.libclang.lib}/lib/clang/17/include"; export CC=clang; export LD_LIBRARY_PATH="$(pwd)/build/linux/x64/debug/bundle/lib:$(pwd)/build/linux/x64/release/bundle/lib:$LD_LIBRARY_PATH" nix-shell -p clang pkg-config corrosion cmake ''; }; in { inherit packages devShells; } ); } ```
patmuk commented 5 days ago

Thanks @rob-mur! I assume you are still on a *nix based os, not MacOS?

rob-mur commented 5 days ago

No worries - yep NixOS.

I'll update my configuration once I've got web + android working (the flake up until this point was just to get it building on Linux)

rob-mur commented 4 days ago

Hi again

I've been tinkering on this for a couple days now - adding web support was relatively painless but android is super painful to get working. See my current flake below which still doesn't work (it seems the version of libc that is making it into my app is too old somehow and doesn't have the right 64 bit symbols).

Note that I've currently just been trying to get an x86_64 emulator working as cross compilation to arm and x86 causes even more issues.

If anyone has had any luck please let me know - I'm mostly just trying to link random libraries now as nothing obvious seems to work.

```nix { inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions"; flake-utils.follows = "nix-vscode-extensions/flake-utils"; nixpkgs.follows = "nix-vscode-extensions/nixpkgs"; # Rust rust-overlay.url = "github:oxalica/rust-overlay"; }; outputs = inputs: inputs.flake-utils.lib.eachDefaultSystem ( system: let pkgs = import inputs.nixpkgs { inherit system; config = { android_sdk.accept_license = true; allowUnfree = true; }; overlays = [ inputs.rust-overlay.overlays.default ]; }; extensions = inputs.nix-vscode-extensions.extensions.${system}; inherit (pkgs) vscode-with-extensions vscodium; packages.default = vscode-with-extensions.override { vscode = vscodium; vscodeExtensions = [ extensions.vscode-marketplace.bbenoist.nix extensions.vscode-marketplace.ms-vscode-remote.remote-ssh extensions.vscode-marketplace.jnoortheen.nix-ide extensions.vscode-marketplace.ms-vscode-remote.remote-containers extensions.vscode-marketplace.rust-lang.rust-analyzer extensions.open-vsx.eamodio.gitlens extensions.open-vsx.dart-code.flutter extensions.open-vsx.dart-code.dart-code ]; }; config.android_sdk.accept_license = true; androidComposition = pkgs.androidenv.composeAndroidPackages { buildToolsVersions = [ "30.0.3" ]; platformVersions = [ "33" "34" ]; abiVersions = [ "x86_64" ]; includeEmulator = true; emulatorVersion = "35.1.4"; includeSystemImages = true; systemImageTypes = [ "google_apis_playstore" ]; includeNDK = true; ndkVersions = [ "26.3.11579264" ]; }; androidSdk = androidComposition.androidsdk; devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ pkg-config cmake packages.default flutter ninja corrosion (pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.default.override { extensions = [ "rust-src" "rustfmt" "clippy" ]; targets = [ "wasm32-unknown-unknown" "aarch64-linux-android" "armv7-linux-androideabi" "x86_64-linux-android" "i686-linux-android" ]; })) gtk3 clang llvmPackages.libclang awscli2 cargo-lambda jdk17 androidSdk glibc_multi aapt libxml2 ]; shellHook = '' export LIBCLANG_PATH="${pkgs.llvmPackages.libclang.lib}" export CPATH="${pkgs.clang.libc_dev}/include:${pkgs.clang.libc}/lib:${pkgs.libclang.lib}/lib/clang/17/include" export CC=clang export LIBXML2=$(xml2-config --libs | cut -d ' ' -f 1 | cut -c 3-) export LD_LIBRARY_PATH="$(pwd)/build/linux/x64/debug/bundle/lib:$(pwd)/build/linux/x64/release/bundle/lib:$LIBXML2:$LD_LIBRARY_PATH" export PATH="$PATH":"$HOME/.pub-cache/bin":"$HOME/.cargo/bin" export DYNAMO_PREFIX=global export AWS_CONFIG_FILE=$(pwd)/aws-config export ANDROID_SDK_ROOT="${androidSdk}/libexec/android-sdk" export ANDROID_NDK_ROOT="$ANDROID_SDK_ROOT/ndk-bundle" export GRADLE_OPTS="-Dorg.gradle.project.android.aapt2FromMavenOverride=${pkgs.aapt}/bin/aapt2" export LIBCTEST="${pkgs.glibc_multi}" dart pub global activate flutter_rust_bridge cargo install wasm-pack cargo-ndk nix-shell -p clang pkg-config corrosion cmake glibc_multi ''; }; in { inherit packages devShells; } ); } ```
rob-mur commented 4 days ago

The basic issue I think is that my native library builds sqlite and is doing so with some version of libc that is newer than the one in even the latest ndk.

Will keep investigating but if generally the status of nix plus android for frb with a non-trivial project is very ropey at the moment

rob-mur commented 3 days ago

Ok, so essentially the issue is that the CPATH environment variable that is set to get the Linux build working is interfering with the Android build, because the Android one is using an older version of various C libraries. (the android ndk is a modified version of clang_14).

The problem though is that we need to set CPATH to the includes and lib directories of the clang we are using, otherwise ffigen fails silently and we run into this issue. (normally I think this doesn't matter because it assumes some /usr/lib path which doesn't exist on nix)

Therefore what I think we need to do is modify the CPATH to point to the relevant android-ndk. If we do this then we manage to not run into issues with ffigen or having symbols unknown to bionic at runtime and so can run on Android!

The downside of the above fix is it breaks the Linux build - we need to be changing this environment variable per target otherwise we have issues. The current fix I've landed on is to have CPATH set as the default linux value and then in gradle overwrite it with what we need for the android build.

Note also that in order to use sqlite we have to link in libgcc statically during the cargo ndk run using rustflags else __extenddftf2 cannot be found at runtime (see here). Before this was relying on a /usr/lib directory which we don't have on Nix so instead I pull in the file using an environment variable from gcc-unwrapped. Note that I then needed to set CC=clang in order for sqlite to build.

All of the above to say that the below flake.nix and snippet of my build.gradle is sufficient to run FRB on NixOS for a non-trivial project for Linux, Web and Android! :rocket:

I won't be looking into iOS as I don't support that platform for my app anyway, but that would be the only platform that doesn't work.

flake.nix ```nix { inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions"; flake-utils.follows = "nix-vscode-extensions/flake-utils"; nixpkgs.follows = "nix-vscode-extensions/nixpkgs"; # Rust rust-overlay.url = "github:oxalica/rust-overlay"; }; outputs = inputs: inputs.flake-utils.lib.eachDefaultSystem ( system: let pkgs = import inputs.nixpkgs { inherit system; config = { android_sdk.accept_license = true; allowUnfree = true; }; overlays = [ inputs.rust-overlay.overlays.default ]; }; extensions = inputs.nix-vscode-extensions.extensions.${system}; inherit (pkgs) vscode-with-extensions vscodium; packages.default = vscode-with-extensions.override { vscode = vscodium; vscodeExtensions = [ extensions.vscode-marketplace.bbenoist.nix extensions.vscode-marketplace.ms-vscode-remote.remote-ssh extensions.vscode-marketplace.jnoortheen.nix-ide extensions.vscode-marketplace.ms-vscode-remote.remote-containers extensions.vscode-marketplace.rust-lang.rust-analyzer extensions.open-vsx.eamodio.gitlens extensions.open-vsx.dart-code.flutter extensions.open-vsx.dart-code.dart-code ]; }; config.android_sdk.accept_license = true; androidComposition = pkgs.androidenv.composeAndroidPackages { buildToolsVersions = [ "30.0.3" ]; platformVersions = [ "33" "34" ]; abiVersions = [ "x86_64" ]; includeEmulator = true; emulatorVersion = "35.1.4"; includeSystemImages = true; systemImageTypes = [ "google_apis_playstore" ]; includeNDK = true; ndkVersions = [ "25.1.8937393" ]; }; androidSdk = androidComposition.androidsdk; devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ pkg-config cmake packages.default flutter ninja corrosion (pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.default.override { extensions = [ "rust-src" "rustfmt" "clippy" ]; targets = [ "wasm32-unknown-unknown" "aarch64-linux-android" "armv7-linux-androideabi" "x86_64-linux-android" "i686-linux-android" ]; })) gtk3 clang llvmPackages.libclang awscli2 cargo-lambda jdk17 androidSdk gcc-unwrapped aapt ]; shellHook = '' export LIBCLANG_PATH="${pkgs.llvmPackages.libclang.lib}" export LD_LIBRARY_PATH="$(pwd)/build/linux/x64/debug/bundle/lib:$(pwd)/build/linux/x64/release/bundle/lib:$LD_LIBRARY_PATH" export PATH="$PATH":"$HOME/.pub-cache/bin":"$HOME/.cargo/bin" export DYNAMO_PREFIX=global export AWS_CONFIG_FILE=$(pwd)/aws-config export ANDROID_SDK_ROOT="${androidSdk}/libexec/android-sdk" export ANDROID_NDK_ROOT="$ANDROID_SDK_ROOT/ndk-bundle" export GRADLE_OPTS="-Dorg.gradle.project.android.aapt2FromMavenOverride=${pkgs.aapt}/bin/aapt2" export CPATH_ANDROID="${androidSdk}/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.6/include:${androidSdk}/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include" export CPATH="${pkgs.clang.libc_dev}/include:${pkgs.clang.libc}/lib:${pkgs.libclang.lib}/lib/clang/17/include" export LIBGCC_PATH="${pkgs.gcc-unwrapped}/lib/gcc/x86_64-unknown-linux-gnu/13.2.0/libgcc.a" dart pub global activate flutter_rust_bridge cargo install wasm-pack cargo-ndk nix-shell -p clang pkg-config corrosion cmake glibc ''; }; in { inherit packages devShells; } ); } ```
build.gradle ```gradle def cpathAndroid = System.getenv("CPATH_ANDROID") def libgcc = System.getenv("LIBGCC_PATH") environment "CPATH", cpathAndroid environment "RUSTFLAGS", " -C link-arg=" + libgcc if (profileMode != null) { commandLine 'cargo', 'ndk', // Uncomment to enable these ABIs as required. '-t', 'x86', '-t', 'x86_64', '-t', 'armeabi-v7a', '-t', 'arm64-v8a', '-o', '../../android/app/src/main/jniLibs', 'build' args profileMode } else { commandLine 'cargo', 'ndk', // Uncomment to enable these ABIs as required. '-t', 'x86_64', '-o', '../../android/app/src/main/jniLibs', 'build' } ```
patmuk commented 2 days ago

I updated my example project and added my nix flake configuration.

Note, that this is for MacOS. FRB is done in a nix-y way but Flutter and Xcode are not:

This is a setup with some workarounds - but it works :)