libmesh icon indicating copy to clipboard operation
libmesh copied to clipboard

contrib: MS VC build fixes

Open mkhon opened this issue 3 years ago • 6 comments

mkhon avatar Jan 30 '22 09:01 mkhon

Job Coverage on 0175262 wanted to post the following:

Coverage

Coverage did not change

Full coverage report

This comment will be updated on new commits.

moosebuild avatar Jan 30 '22 16:01 moosebuild

Max, some updated build instructions for msys2/VC (including PETSc) would be really useful!

dschwen avatar Jan 30 '22 19:01 dschwen

It's not nearly as bad as the "will be reverted the next time someone runs bootstrap" changeset, but this still seems to be asking for regressions.

Making these sorts of changes in libMesh proper, maybe a little tricky to maintain, but at least we maintain it. We don't maintain Exodus, we just download and update when we need a newer version. Likewise for NetCDF. And for Metis, it's even worse - we don't even always use our own contrib/metis files; we'll build against a third party's (most commonly PETSc's) as necessary. So half your changes here are going to be reverted the next time we update a contrib package (or in one case might have already been reverted - are the Exodus changes here 5.22-only because 8.11 worked perfectly, or just because you didn't test with 8.11?), and half of the changes will occasionally go unused.

I'm afraid there's nothing to be done about the "built against a third party's" case, except to submit the same changes upstream and hope that third parties sync up before it becomes a problem. Have you done that yet?

But if our "download and update" isn't to become "download and update and break your builds without realizing it", we really need some more documentation here. A set of contrib/patches/*.diff files that can be examined (or if we're lucky, just fed into patch maybe?) whenever we upgrade? That might be considered redundant with the git logs ... but we ought to at least have some contrib/README pointing out how and why an upgrade might be more complicated than expected. See contrib/boost/README for a good example.

And updated build instructions would very much help in the same regard. If we're at the point where the remaining fixes are in contrib dependencies, and something like a --disable-exodus --disable-netcdf --disable-metis build might be just about working in Windows, let us know how, so we can replicate it and test against it when making changes we expect to impact it?

roystgnr avatar Jan 31 '22 18:01 roystgnr

In the meantime you can see the configure arguments I used here: microsoft/vcpkg#22810 This is msys2 + configure + MS VC build.

vcpkg sets up its own environment and also vcpkg libmesh port does some custom commands in its portfile.cmake so non-vcpkg build will be rather complicated.

I will submit a separate PR with non-vcpkg build instructions later.

Additionally, we can keep contrib bits as is (the patch will be maintained in vcpkg repository) and this PR can be closed.

mkhon avatar Feb 04 '22 20:02 mkhon

This PR has been marked "do not merge" since we are no longer accepting PRs into the master branch. All new PRs should be made on the devel branch instead. Once this PR's target branch has been updated to devel, the "do not merge" label will be removed.

jwpeterson avatar Mar 02 '22 20:03 jwpeterson

This PR has been marked "do not merge" since we are no longer accepting PRs into the master branch. All new PRs should be made on the devel branch instead. Once this PR's target branch has been updated to devel, the "do not merge" label will be removed.

target branch is now devel

mkhon avatar May 05 '22 14:05 mkhon