Open cgranade opened 2 years ago
As a follow-up, this seems possibly consistent with LTO bugs in rustc itself: https://github.com/rust-lang/rust/issues/51009
I'm not able to reproduce this error on Arch Linux with
% rustc --version
rustc 1.58.1 (db9d1b20b 2022-01-20)
% cargo --version
cargo 1.58.0 (f01b232bc 2022-01-19)
That warning before the error message is strange:
warning: Error finalizing incremental compilation session directory
\\?\C:\Users\cgran\source\scratch\blas-rs\target\debug\incremental\blas_rs-204zbe9n3gp6o\s-g6at8u30m7-1gpl7ds-working
: Access is denied. (os error 5)
Do you have any ideas regarding that message?
Do you still get an error if you run cargo clean
before cargo build
?
Apologies for missing your reply! I did still get the issue on Windows 11 even when running cargo clean
before cargo build
. For the warning message, I sometimes have seen that due to the rust-analyzer extension for VS Code locking cache folders; I had missed that that happened in this case, let me try and rerun from the command-line with rust-analyzer closed and see if I can reproduce. Thank you!
Rerunning at the command-line with rust-analyzer disabled, I reproduce the above on Windows 11:
➜ rustc --version
rustc 1.57.0 (f1edd0429 2021-11-29)
➜ cargo --version
cargo 1.57.0 (b2e52d7ca 2021-10-21)
The error persists after running rustup update
:
➜ rustc --version
rustc 1.58.1 (db9d1b20b 2022-01-20)
➜ cargo --version
cargo 1.58.0 (f01b232bc 2022-01-19)
Running in a fresh Docker container from the rust
image, the build completes successfully and produces all three artifacts in target/debug
, such that the issue looks to possibly be Windows-specific:
# ls target/debug/
build deps examples incremental libblas_rs.a libblas_rs.d libblas_rs.rlib libblas_rs.so
# cat /etc/issue
Debian GNU/Linux 11 \n \l
I'm not sure I'll be able to help much with this; my time is pretty limited, and I don't have a Windows machine set up for Rust development. Some suggestions:
Try building a crate with just lapack
and intel-mkl-src
dependencies (with the appropriate features enabled), to see if the issue is with ndarray-linalg
or the dependencies. (More info here.) If the issue is with the dependencies, then you could try creating an issue on the lapack repository to see if they could provide more help.
You could try the Rust users forum or chat platforms.
Possible workarounds:
Try creating a second crate which just wraps the first and exports the necessary functionality. (The inner crate would be an rlib
, and the outer crate would be a cdylib
.) This may work around whatever is causing the issue, since it occurs only when trying to build a single crate as both an rlib
and a cdylib
.
Cross-compile for Windows using Linux.
Use a different backend, e.g. OpenBLAS.
I see this issue on Windows Server but not on my windows 10 and windows 11 machine. I cant figure out why it does not work on the Windows server machine.
When compiling a small crate against
ndarray-linalg
using theintel-mkl-static
feature, linking errors result depending on the value oflib.crate-type
inCargo.toml
.Example crate
Example error:
Running
cargo build
works for some settings oflib.crate-type
, however:["rlib", "staticlib", "cdylib"]
: fails["staticlib", "cdylib"]
: works["rlib", "staticlib"]
: works["rlib"]
: works["staticlib"]
: works["rlib", "cdylib"]
: fails["cdylib"]
: worksVersion info