thlorenz / rid

Rust integrated Dart framework providing an easy way to build Flutter apps with Rust.
63 stars 4 forks source link

Issues during the template instantiation process. #1

Open Yatekii opened 3 years ago

Yatekii commented 3 years ago

Hi!

Thanks for this awesome project; I have been eagerly waiting for this!

I tried to instantiate the rid templates with the ./setup.sh script. I had a handfull of troubles, which is to be expected given the young age of this project, but I thought I might report them as well for others.

  1. You need an up to date flutter version (2.2 did it for me). Otherwise it will fail to create the plugin project.
  2. You need cargo-lipo and cargo-ndk. Otherwise it will fail executing those commands and subsequent ones.
  3. rid-build currently requires a feature that was nightly only before 1.52.0. You can also use the stable version 1.52.0 and remove the feature enable to compile with stable.
  4. On Linux, macOS build tools are obviously not available. Unfortunately the setup script still tried to create and build those parts. I am not sure what impact this has on the final instantiated result. Going to find out now.
  5. For Android you need to set ANDROID_NDK_HOME. For me this required installing AndroidStudio and putting export ANDROID_NDK_HOME=/home/yatekii/Android/Sdk/ndk/22.1.7171670/into the .bashrc (Ubuntu).

Best, Noah

thlorenz commented 3 years ago

Yeah ... I'm sorry I wasn't ready for people to start using the template I guess and left a bunch of preparation steps out. You're right about those deps that are needed.

Even though the template + rid build script stuff will eventually be replaced with one rid executable I'd still like to document some of those so others don't run into as many problems as you did. Possibly add a Readme to rid-template-flutter.

WRT building on mac the setup script isn't configurable and it'd be wasted effort to make it since it'll be replaced later, but maybe we could have a setup-on-mac and setup-on-linux which are slightly different? I wouldn't mind tons of copy/pasted code in there either since all this is somewhat temporary.

Yatekii commented 3 years ago

Yeah, the mac code just faills to build on linux. But this is not an issue, if you do not build for mac :) Everything else works just fine. I added linux as a target to the setup script and managed to make it build. I'll make a PR in a bit when I cleaned it up.

chertov commented 3 years ago

Hi! RID is awesome project!! Thank you! I am trying to use RID in my flutter/rust project.. found some little errors on macos

thread 'main' panicked at 'Build failed: 
'cargo expand' encountered error(s): 

error: no such subcommand: `expand`

the solution is cargo install cargo-expand

jq: command not found
brew install jq

And i have a problem with template inside 'rid-template-flutter'. When i run ./setup.sh app i see errors like this:

MacBook-Pro:app user$ ./sh/bindgen 
error: current package believes it's in a workspace when it's not:
current:   /Users/user/dev/rid/rid/rid-template-flutter/app/Cargo.toml
workspace: /Users/user/dev/rid/rid/Cargo.toml

this may be fixable by adding `rid-template-flutter/app` to the `workspace.members` array of the manifest located at: /Users/user/dev/rid/rid/Cargo.toml
Alternatively, to keep it out of the workspace, add the package to the `workspace.exclude` array, or add an empty `[workspace]` table to the package's manifest.
MacBook-Pro:app user$ 

My solution is move /Users/user/dev/rid/rid-template-flutter/app to /Users/user/dev/app, change rid paths in /Users/user/dev/app/Cargo.toml

thlorenz commented 3 years ago

Ah cool you found a solution @chertov. The template is just there to have at least something until I get around to implementing a proper CLI for all this (see roadmap).

Lots remains to be done, so I'm happy you were at least able to unblock yourself.

If you find a quick fix please submit a PR and I'll have a look.

chertov commented 3 years ago

I'am tying to use rid for an existing project (./plugin doesn't exists).. simple append rid paths to Cargo.toml and append rid build step to build.rs

in my case command 'cargo rustc --lib -- -Zunpretty=expanded' from https://github.com/thlorenz/rid/blob/89dddfed2410135d34fd4f44b5e36772da770694/rid-build/src/bindings_generator.rs#L28 goes to an infinite loop i will try to find out what is wrong

chertov commented 3 years ago

I have a successful result cargo rustc --lib -- -Zunpretty=expanded output if i commented out rid build step in the build.rs! Otherwise, I get an infinite loop

chertov commented 3 years ago

append to command https://github.com/thlorenz/rid/blob/89dddfed2410135d34fd4f44b5e36772da770694/rid-build/src/bindings_generator.rs#L28

            .env("RID_BUILD", "TRUE")

and check it in my build.rs do not start build step inside the bindings_generator command

    if env::var("RID_BUILD").ok().is_some() { return Ok(()); }

change a default target-dir for the cmd args to prevent cargo build deadlock here: https://github.com/thlorenz/rid/blob/89dddfed2410135d34fd4f44b5e36772da770694/rid-build/src/build_target.rs#L21 prepend

--target-dir=/tmp/rustc/".to_string(),

after this actions i have generated plugin folder

but need to generate pubspec.yaml, install ffigen, etc at this time i have an error:

  'dart run ffigen' failed to run successfully
  stderr: Could not find file `ffigen`
thlorenz commented 3 years ago

@chertov you're right that the template is not working 100%. I'm not sure when I can have a look. Is this preventing you from using rid in your project?

If not I'd leave this issue open and address it when I create a proper command line rid tool which will include a project scaffolder. At that point the template won't be needed anymore.

If you're blocked however please LMK. Fixing this shouldn't be too difficult. Basically just looking at some of the flutter rid-examples and adapting the template to include the correct dependencies and dart sdk (as in those examples) should do the trick. I could have a stab at it, but also would like to finish up HashMap support.

novolei commented 2 years ago

@thlorenz I used rid-examples to make a trial run on my M1 MacBook, and when I run 'flutter run -d macos', I still got an error:

Running pod install...                                             719ms
CocoaPods' output:
↳
      Preparing

    Analyzing dependencies

    Inspecting targets to integrate
    [!] Unable to find the Xcode project `/Users/ryanliu/development/rust/d2r/rid-examples/flutter/todo/macos/Runner.xcodeproj` for the target
    `Pods-Runner`.

    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer/target_inspector.rb:68:in `compute_project_path'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:1185:in `each'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:1185:in `group_by'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:1185:in `block in inspect_targets_to_integrate'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/user_interface.rb:64:in `section'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:1180:in `inspect_targets_to_integrate'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer/analyzer.rb:106:in `analyze'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:414:in `analyze'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:239:in `block in resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/user_interface.rb:64:in `section'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:238:in `resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/installer.rb:160:in `install!'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/command/install.rb:52:in `run'
    /Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/lib/cocoapods/command.rb:52:in `run'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.10.0/bin/pod:55:in `<top (required)>'
    /usr/local/bin/pod:23:in `load'
    /usr/local/bin/pod:23:in `<main>'

Error output from CocoaPods:
↳
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1
    Ignoring ffi-1.14.2 because its extensions are not built. Try: gem pristine ffi --version 1.14.2
    Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi --version 1.13.1

Exception: Error running pod install

Could you help to take a look on it?

If you're blocked however please LMK. Fixing this shouldn't be too difficult. Basically just looking at some of the flutter rid-examples and adapting the template to include the correct dependencies and dart sdk (as in those examples) should do the trick. I could have a stab at it, but also would like to finish up HashMap support.

novolei commented 2 years ago

more error msg:

--- xcodebuild: WARNING: Using the first of multiple matching destinations:
{ platform:macOS, arch:x86_64, id:03BC5CB9-3FCC-5293-99F5-5E9CD729E00B }
{ platform:macOS, arch:arm64, id:03BC5CB9-3FCC-5293-99F5-5E9CD729E00B }
{ platform:macOS, arch:x86_64, variant:Mac Catalyst, id:03BC5CB9-3FCC-5293-99F5-5E9CD729E00B }
{ platform:macOS, arch:arm64, variant:Mac Catalyst, id:03BC5CB9-3FCC-5293-99F5-5E9CD729E00B }
{ platform:macOS, name:Any Mac }
{ platform:macOS, variant:Mac Catalyst, name:Any Mac }
ld: warning: ignoring file /Users/ryanliu/development/rust/d2r/rid-examples/flutter/todo/plugin/macos/libtodo.a, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
Undefined symbols for architecture x86_64:
  "___include_dart_for_ridvec_todo", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "___include_dart_for_vec_todo", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "__export_dart_enum_Filter", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "__include_Store_field_wrappers", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "__to_dart_for_Settings", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "__to_dart_for_Store", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "__to_dart_for_Todo", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_create_store", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_cstring_free", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_export_Store_filtered_todos", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_export_Store_todo_by_id", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_filter_debug", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_filter_debug_pretty", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_free_ridvec_todo", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_get_item_ridvec_todo", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_get_item_vec_todo", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_init_msg_isolate", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_init_reply_isolate", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_len_vec_todo", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_msg_AddTodo", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_msg_CompleteAll", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_msg_CompleteTodo", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_msg_RemoveCompleted", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_msg_RemoveTodo", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_msg_RestartAll", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_msg_RestartTodo", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_msg_SetAutoExpireCompletedTodos", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_msg_SetFilter", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_msg_ToggleTodo", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_settings_auto_expire_completed_todos", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_settings_completed_expiry_millis", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_settings_debug", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_settings_debug_pretty", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_store_debug", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_store_debug_pretty", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_store_filter", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_store_free", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_store_last_added_id", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_store_settings", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_store_todos", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_store_unlock", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_todo_completed", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_todo_debug", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_todo_debug_pretty", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_todo_expiry_millis", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_todo_id", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_todo_title", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
  "_rid_todo_title_len", referenced from:
      plugin.dummyCallsToPreventTreeShaking() -> () in plugin(Plugin.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
note: Using new build system
note: Planning
note: Build preparation complete
note: Building targets in parallel
warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/App.framework/Versions/A/App' is located outside of the allowed root paths.

warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/App.framework/Versions/A/Resources/Info.plist' is located outside of the allowed root paths.

warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/AssetManifest.json' is located outside of the allowed root paths.

warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/FontManifest.json' is located outside of the allowed root paths.

warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/NOTICES.Z' is located outside of the allowed root paths.

warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/assets/dash.png' is located outside of the allowed root paths.

warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/assets/ferris.png' is located outside of the allowed root paths.

warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/fonts/MaterialIcons-Regular.otf' is located outside of the allowed root paths.

warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/isolate_snapshot_data' is located outside of the allowed root paths.

warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/kernel_blob.bin' is located outside of the allowed root paths.

warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf' is located outside of the allowed root paths.

warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/App.framework/Versions/A/Resources/flutter_assets/vm_snapshot_data' is located outside of the allowed root paths.

warning: Stale file '/Users/ryanliu/Library/Developer/Xcode/DerivedData/Runner-chjaglggpyysmefimuwohdgjhwbd/Index/Build/Products/Debug/FlutterMacOS.framework/FlutterMacOS' is located outside of the allowed root paths.

** BUILD FAILED **

Building macOS application...                                           
Exception: Build process failed
Roms1383 commented 2 years ago

In the error logs is stated which architecture is used to build:

--- xcodebuild: WARNING: Using the first of multiple matching destinations:
{ platform:macOS, arch:x86_64, id:03BC5CB9-3FCC-5293-99F5-5E9CD729E00B }
{ platform:macOS, arch:arm64, id:03BC5CB9-3FCC-5293-99F5-5E9CD729E00B }
{ platform:macOS, arch:x86_64, variant:Mac Catalyst, id:03BC5CB9-3FCC-5293-99F5-5E9CD729E00B }
{ platform:macOS, arch:arm64, variant:Mac Catalyst, id:03BC5CB9-3FCC-5293-99F5-5E9CD729E00B }
{ platform:macOS, name:Any Mac }
{ platform:macOS, variant:Mac Catalyst, name:Any Mac }

And a bit below:

ld: symbol(s) not found for architecture x86_64

As stated, it attemps to use the first x86_64 arch in the list but couldn't get it to run properly.

Did you followed up the extra installation steps for M1 in README by any chance ?

Not sure as I did it a while ago, but it might be that you are missing:

arch -x86_64 sudo gem install ffi

Or some of the other extra steps.

novolei commented 2 years ago

@Roms1383 thanks for your feedback,I redo all the steps in readme, then it works now. Thanks BTW, I manually copied .a file from x86_64-apple-darwin.

thlorenz commented 2 years ago

Thanks for helping out @Roms1383 !