diff options
| author | Amanieu d'Antras <amanieu.dantras@huawei.com> | 2021-01-20 18:37:14 +0000 |
|---|---|---|
| committer | Amanieu d'Antras <amanieu@gmail.com> | 2021-01-27 23:08:15 +0000 |
| commit | b5482a8f166b952f397be0432dec062b5b0ca105 (patch) | |
| tree | b1bb8e6762c6aad2d31b33b1edfc47f753d69d1e | |
| parent | a072ecbf70eef05f2904031169e493782d65dd37 (diff) | |
| download | rust-b5482a8f166b952f397be0432dec062b5b0ca105.tar.gz rust-b5482a8f166b952f397be0432dec062b5b0ca105.zip | |
Preserve existing LD_LIBRARY_PATH in remote-test-server
| -rw-r--r-- | src/tools/remote-test-server/src/main.rs | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/src/tools/remote-test-server/src/main.rs b/src/tools/remote-test-server/src/main.rs index d92758eb747..cd9d5300964 100644 --- a/src/tools/remote-test-server/src/main.rs +++ b/src/tools/remote-test-server/src/main.rs @@ -218,25 +218,19 @@ fn handle_run(socket: TcpStream, work: &Path, tmp: &Path, lock: &Mutex<()>, conf cmd.args(args); cmd.envs(env); + // On windows, libraries are just searched in the executable directory, + // system directories, PWD, and PATH, in that order. PATH is the only one + // we can change for this. + let library_path = if cfg!(windows) { "PATH" } else { "LD_LIBRARY_PATH" }; + // Support libraries were uploaded to `work` earlier, so make sure that's // in `LD_LIBRARY_PATH`. Also include our own current dir which may have // had some libs uploaded. - if cfg!(windows) { - // On windows, libraries are just searched in the executable directory, - // system directories, PWD, and PATH, in that order. PATH is the only one - // we can change for this. - cmd.env( - "PATH", - env::join_paths( - std::iter::once(work.to_owned()) - .chain(std::iter::once(path.clone())) - .chain(env::split_paths(&env::var_os("PATH").unwrap())), - ) - .unwrap(), - ); - } else { - cmd.env("LD_LIBRARY_PATH", format!("{}:{}", work.display(), path.display())); + let mut paths = vec![work.to_owned(), path.clone()]; + if let Some(library_path) = env::var_os(library_path) { + paths.extend(env::split_paths(&library_path)); } + cmd.env(library_path, env::join_paths(paths).unwrap()); // Some tests assume RUST_TEST_TMPDIR exists cmd.env("RUST_TEST_TMPDIR", tmp.to_owned()); |
