Closed mulimoen closed 3 years ago
I think suitesparse is state of the art for many matrix decompositions, so building it from source looks like the best way to have it available on Windows and MacOS. I don't know what's the best way to do it on linux, relying on the package manager is easy, but it's probably a good idea to be able to build from source to control the exact version of suitesparse.
From what I've seen in your prototype, you have suitesparse as a submodule, which looks like the best way to get it and control its version. It's made of lots of components, have you seen if it's easy to build only a few of them with build.rs
scripts?
It is very simple to build suitesparse, and you can see in the prototype how each component is feature gated, making sure only requested components are built. The requested library is exported as a path to be linked with the associated -sys
crate.
This approach is very useful to clearly separate the intellectual works, handy for licensing and keeping the crate size down.
Looks like your prototype is very nice indeed. To answer your original question, I think building and testing the suitesparse bindings on CI for all major platforms is the way to go. In particular I've tried to make the bindings correct under windows by closely reading the documentations, but have never tested them, so this build from source will be a huge boon!
I will make some tests for linking, and integrate this into the CI and create a PR. Since these crates are not used in sprs
, it should not be a blocker for the 0.9.0
release
Implemented in #233
I've made a prototype to build suitesparse from source here. Are the suitsparse bindings popular enough to implement and test on all major platforms (through CI)?