fornwall / rust-script

Run Rust files and expressions as scripts without any setup or compilation step.
https://rust-script.org
Apache License 2.0
1.21k stars 41 forks source link

exe_path is wrong when the script name matches the name of a dependency #8

Closed badboy closed 3 years ago

badboy commented 3 years ago

This bug still exists in rust-script: https://github.com/DanielKeep/cargo-script/issues/57

Copied:

Can be reproduced with the following script:

Filename: time.rs

#!/usr/bin/env run-cargo-script
// cargo-deps: chrono
extern crate chrono;
fn main() {
    println!("Hello");
}

When trying to execute with ./time.rs or cargo script time.rs, it fails with internal error: Permission denied (os error 13) because it tries to run /home/user/.cargo/binary-cache/release/deps/libtime-2d0d7bb318809c2f.rlib instead of .cargo/binary-cache/release/time.

Some time ago, this worked. I’d guess the error lies in cargo_target_by_message, picking the wrong line because the target.name is the same as the package name.

Workaround: Renaming the script to another name lets it run fine.


(Paths/Invocations should be adjusted for rust-script of course)

fornwall commented 3 years ago

Thanks a lot for reporting!

This has now been fixed in version 0.9.0 - update with cargo install --force rust-script.

To fix existing scripts you need to run rust-script --clear-cache once after updating, to purge the incorrectly cached executable paths.

badboy commented 3 years ago

Thanks! That was quick.