-
Notifications
You must be signed in to change notification settings - Fork 6.5k
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
[msmpi] build from source #13218
[msmpi] build from source #13218
Conversation
ms-mpi deps: networkdirect |
file(TO_NATIVE_PATH "${SDK_ARCHIVE}" SDK_ARCHIVE) | ||
file(TO_NATIVE_PATH "${SOURCE_PATH}/sdk" SDK_SOURCE_DIR) | ||
file(TO_NATIVE_PATH "${CURRENT_BUILDTREES_DIR}/msiexec-${TARGET_TRIPLET}.log" MSIEXEC_LOG_PATH) | ||
vcpkg_acquire_msys(MSYS_ROOT PACKAGES "mingw-w64-${MSYS_TARGET}-gcc-fortran") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(x86 doesn't work))
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
MSMPI seems to support x86 just fine (see the current CI results). The binary distribution always includes a 32bit and 64bit version as well. Am I missing something?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nothing is visible in the logs, well, if it works, let it work
d56206e
to
99ecd71
Compare
Some projects might have *.lib/*.dll files in their directories that are not actually build artifacts of the projects themselves. This change allows to specify a sub-directory for vcpkg_install_msbuild, so that only binaries from that directory get installed. This behaves similar to the already present `INCLUDES_SUBPATH`.
99ecd71
to
94aa800
Compare
As discussed above, I have added a patch to the MSMPI source code that replaces the usage of
|
I think we need to add the assembly of another package, as a dependency of this -->> networkdirect |
Good catch. I missed it since it is not listed as dependency and NuGet just picked it up, unnoticed by me. I modified the port to use the |
17dd745
to
eaf80fb
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please update the networkDirect-sdk
version info. See documentation.
|
Sorry, I have updated the port-version now.
This is intended (see this comment above). I am not sure what to do about it. I think one would need to update the |
@albertziegenhagel Add |
@JackBoosY Thanks for the info! I've updated the CI baseline. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are you disabling SafeSEH and CFG?
I had to disable CFG because due to it being enabled, one gets undefined symbols to And I had to disable SafeSEH (for x86 builds) because without it being disabled I got |
Unfortunately while I would like to see fewer binary dependencies I don't think we can in good faith merge something that explicitly breaks Security Development Lifecycle rules :/ |
Note that this is likely impacted by #13019 |
@BillyONeal I can totally understand this. I have removed the patches to disable CFG and SAFESEH from the MR. The CFG patch is only required for downstream Fortran projects which do not yet exist in vcpkg. I will try to find a fix for missing SAFESEH data in the Fortran object file. Feel free to close this MR until a fix is found. I will reopen it as soon as I can present an acceptable solution. @ras0219 Do you have any suggestion how I should incorporate the changes of #13019 into this MR? I noticed that the packages in the |
is it possible to add a flag to vcpkg_find_fortran to force GFORTRAN? |
A flag in vcpkg_find_fortran to force GFORTRAN would be reasonable to me, however depending on how this exactly interacts I think it may be better to not force gfortran. If it is critical that this library uses the exact same fortran compiler as every other fortran port in your tree, then this port should NOT force gfortran. It should call If the fortran compiler used by this port is completely decoupled from every other port in the tree, then it's reasonable for this port to hardcode a specific fortran compiler so that changes to other ports or the core infrastructure has no chance of breaking it. |
Pinging @albertziegenhagel for response. Is work still being done for this PR? |
@JackBoosY Sorry for the very late answer... I am not currently working on this PR, so I will close it for the time being and might reopen it as soon as I have time to continue working on this. |
This MR changes the MSMPI port to build the library from source instead of unpacking the binary installers.
This has multiple benefits:
mpiexec.exe
). This allowsmsmpi.dll
to be picked up by the app-local deployment mechanisms of vcpkg.Open questions for the port:
vcpkg_get_windows_sdk
as far as I understand it does not really check whether it is installed. I could not find anything for the WDK.Maybe it would be possible to build MSMPI without the WDK being installed. I have opened an issue in the MSMPI repository about that here: microsoft/Microsoft-MPI#48.
Additionally the port will install the static libraries
msmpifec.lib
,msmpifmc.lib
,msmpifes.lib
andmsmpifms.lib
again, that have been removed from the port in #6945. Those libraries are actually required when consuming MSMPI from Fortran. A good explanation can be found in the CMakeFindMPI.cmake
module: https://gitlab.kitware.com/cmake/cmake/-/blob/670672f10e8b720d42b44fad80472805efa9ec00/Modules/FindMPI.cmake#L898-918MRs to upstream the patches applied in the port can be found here: