Skip to content

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

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
...

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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