Skip to content

[mumps] Add new port #46813

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

Draft
wants to merge 10 commits into
base: master
Choose a base branch
from
Draft

[mumps] Add new port #46813

wants to merge 10 commits into from

Conversation

tmmsartor
Copy link

@tmmsartor tmmsartor commented Aug 7, 2025

Add new port for Mumps-Solver with Coin-Or autotool build.
This is intended to work with existing port coin-or-ipopt.

  • Changes comply with the maintainer guide.

  • SHA512s are updated for each updated download.

  • The "supports" clause reflects platforms that may be fixed by this new version.

  • Any fixed CI baseline entries are removed from that file.

  • Any patches that are no longer applied are deleted from the port's directory.

  • The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.

  • Only one version is added to each modified port's versions file.

  • Changes comply with the maintainer guide.

  • The name of the port matches an existing name for this component on https://repology.org/ if possible, and/or is strongly associated with that component on search engines.

  • Optional dependencies are resolved in exactly one way. For example, if the component is built with CMake, all find_package calls are REQUIRED, are satisfied by vcpkg.json's declared dependencies, or disabled with CMAKE_DISABLE_FIND_PACKAGE_Xxx.

  • The versioning scheme in vcpkg.json matches what upstream says.

  • The license declaration in vcpkg.json matches what upstream says.

  • The installed as the "copyright" file matches what upstream says.

  • The source code of the component installed comes from an authoritative source.

  • The generated "usage text" is accurate. See adding-usage for context.

  • The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.

  • Only one version is in the new port's versions file.

  • Only one version is added to each modified port's versions file.

Copy link
Contributor

@dg0yt dg0yt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe start small?

Comment on lines +26 to +29
{
"name":"openblas",
"features":["blas","lapack"]
},
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you need blas and lapack, use the ports blas and lapack.

Copy link
Author

@tmmsartor tmmsartor Aug 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried that first, but it seem the lapack underlying package on Linux lapack-reference does not provide the C interface with the name mangling expected by coin-or built libraries.

To add more context, at the moment coin-or-ipopt (which use a autotool based build configuration similar to the one of this package) is using intel-mkl which is another blas+lapack implementation, but quite heavier in term of size,
I wanted to try if also openblas could work. Ideally providing intel-mkl as optional feature given it can be more performant. Also other projects using this "stack" ipopt+mumps (like casadi #43425) are using openblas for lapack implementation.

The problem I had with vcpkg lapack metapackage was the same of this coin-or-ipopt issue (#33860) . This may be also related to why coin-or-ipot port built is failing on CI for linux recently, I may be wrong, I didn't double check.
Switching to openblas was the easier thing for me to have a working build, but I can iterate to avoid modifying existing packages.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For linux, lapack selects lapack-reference, while blas selects openblas.
This might not be optimal. But it shouldn't be tuned per port.

Also other projects using this "stack" ipopt+mumps (like casadi #43425) are using openblas for lapack implementation.

I don't see any blas or lapack dependencies in https://github.com/Microsoft/vcpkg/blob/master/ports/casadi/vcpkg.json

The problem I had with vcpkg lapack metapackage was the same of this coin-or-ipopt issue (#33860) .

The solution reported in #33860 is "carry the transitive usage requirements". Ideally this should be handled via pkgconfig and cmake from the port which has these requirements.

@tmmsartor tmmsartor changed the title New port Mumps Solver with coin-or build script [mumps] Add new port Aug 8, 2025
@tmmsartor
Copy link
Author

@microsoft-github-policy-service agree

@dg0yt
Copy link
Contributor

dg0yt commented Aug 8, 2025

I found that MUMPS points at https://github.com/scivision/mumps for a CMake build system. That repo seems maintained, and it might be a much better fit for a vcpkg port than an autotools build.

@tmmsartor
Copy link
Author

I found that MUMPS points at https://github.com/scivision/mumps for a CMake build system. That repo seems maintained, and it might be a much better fit for a vcpkg port than an autotools build.

Thanks for the suggestion, I was aware of it but haven't tried it yet. I would also prefer to use CMake, I will give it a try.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants