Skip to content

Cargo publish path does not point to folder with .so files #3

Open
@NumesSanguis

Description

@NumesSanguis

Issue

Following your blog post at: Rust cross-platform... The Android part..., I run into the issue that cargo run --bin publish gives the error Error copying library file. The full output that that command gives:

warning: `/home/{user}/github/Rust-Cross-Platform-Development/rust-library/cryptor_jni/.cargo/config` is deprecated in favor of `config.toml`
note: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`
   Compiling cryptor_jni v0.1.0 (/home/{user}/github/Rust-Cross-Platform-Development/rust-library/cryptor_jni)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.33s
     Running `target/debug/publish`
Message: Error copying library file

This error message comes from line 150 in publish.rs.

Probable cause

It seems that cryptor_jni is missing from the path used in publish.

The output paths:

  • cargo run --bin release path: Rust-Cross-Platform-Development/rust-library/cryptor_jni/target/armv7-linux-androideabi/release/libcryptor_jni.so
  • cargo run --bin publish path: Rust-Cross-Platform-Development/rust-library/target/armv7-linux-androideabi/release/libcryptor_jni.so

I executed the release and publish commands from: Rust-Cross-Platform-Development/rust-library/cryptor_jni

Release from rust-library

If I run the command rust-library$ cargo run --bin release (instead of in rust-library/cryptor_jni), it throws the error:

error: multiple workspace roots found in the same workspace:
  /home/{user}/github/Rust-Cross-Platform-Development/rust-library/cryptor_jni
  /home/{user}/github/Rust-Cross-Platform-Development/rust-library

Debugging

I modified that Err line to output crate_lib_file_path and android_lib_file_path:

return Err(format!("Error copying library file {} |\n{}", crate_lib_file_path, android_lib_file_path).into())

Which gives me:

Message: Error copying library file /home/{user}/github/Rust-Cross-Platform-Development/rust-library/target/armv7-linux-androideabi/release/libcryptor_jni.so |
/home/{user}/github/Rust-Cross-Platform-Development/android-sample/app/src/main/jniLibs/armeabi-v7a/libcryptor_jni.so

Comparing this to the output from cargo run --bin release:

warning: `/home/{user}/github/Rust-Cross-Platform-Development/rust-library/cryptor_jni/.cargo/config` is deprecated in favor of `config.toml`
note: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.02s
     Running `target/debug/release`
Message: Releasing Android Targets...Be patient... :)
Message: Building Android Target --> armv7-linux-androideabi
warning: `/home/{user}/github/Rust-Cross-Platform-Development/rust-library/cryptor_jni/.cargo/config` is deprecated in favor of `config.toml`
note: if you need to support cargo 1.38 or earlier, you can symlink `config` to `config.toml`
   Compiling cryptor_jni v0.1.0 (/home/{user}/github/Rust-Cross-Platform-Development/rust-library/cryptor_jni)
    Finished `release` profile [optimized] target(s) in 0.49s
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions