-
Notifications
You must be signed in to change notification settings - Fork 567
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CeresSolver_jll leads to libcholmod.so.3
not found -- julia 1.10+
#8465
Comments
libcholmod.so.3
not foundlibcholmod.so.3
not found -- julia 1.10+
Probably need to rebuild with whatever version of suitesparse is in julia v1.10. |
Julia 1.10 uses Suitesparse 7.2.1, which has libcholmod.so.4. Note that Suitesparse 7.3.0+ changed that to libcholmod.so.5, and Julia 1.11 has Suitesparse 7.6.0 in it, so you will need to have very strict compat bounds for the Julia version to fix this, probably. |
Another reason why we should excise SparseArrays and SuiteSparse from stdlib (but it has other repercussions naturally). Most likely, just building an updated CeresSolver_jll with a recent Julia 1.10 minimum bound should fix this. |
How do I trigger a rebuild? |
Excising SuiteSparse should be more doable at least - it is already somewhat optional since there is the GPL-free build mode, I thought. SparseArrays is still useful without SuiteSparse I think though (e.g. to at least provide the base types that other sparse environments like Cuda.jl extend).
@avik-pal you need to make a change to the |
Yes, changing existing compat bounds*** always requires*** the version of the package (and no, removing the compat bounds doesn't count as a good solution, that only brings runtime errors), because Pkg (and hence the registry) can't distinguish different compat bounds within same major.minor.patch version numbers. |
My recommendation would be to skip Julia 1.10, and just build the latest version of Ceres (2.2) for Julia 1.11. |
It seems the existing Ceres just could not build properly with SuiteSparse 7 based on the comment in there. Is it still necessary to bump the Ceres version? My understanding is that we have to bump versions when we change SuiteSparse versions because that has an implicit dependency on Julia itself. Yggdrasil/C/CeresSolver/build_tarballs.jl Line 48 in 8566c7a
|
Yes, but sadly that's not a compat bound, so the registry doesn't know about it, otherwise it wouldn't have allowed installing the package to start with. Aside, it's unfortunate that for historic reasons the second positional argument of Dependency is the build version but isn't recorded as compat bound, I think it doesn't make any sense to specify the build version but not the compat: if you have to specify the build version then you're doing it because only certain versions are compatible, and so specifying the compat should also be necessary. I tried to make the compat argument mandatory with JuliaPackaging/BinaryBuilderBase.jl#314, but got into troubles with Pkg internals. |
I triggered a build with 1.10 #8491 for the time being to check if it builds with newer suitesparse |
@imciner2 |
The SO information for the libraries aren't tied together, unfortunately, so they can change even inside the major version (see my comment about cholmod changing SO version between 7.2 and 7.3). If we were going to redesign the packaging of SuiteSparse, I almost think it would make more sense to split each library into its own JLL with its own version and then keep track of them that way, so then packages can declare the version dependencies only on the library they need. Of course that either requires better automation on our end to extract those versions, or more work during updates. |
This is now fixed. Thanks everyone! |
This is in a fresh environment. Works fine in 1.9.
The text was updated successfully, but these errors were encountered: