-
Notifications
You must be signed in to change notification settings - Fork 31
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
Building with mpi+mpitrampoline
still uses MPICH
#245
Comments
@staticfloat @vchuravy ideas? |
So, the environment used for the target platform is [deps]
ADIOS2_jll = "44b1415a-b224-5c99-9168-ff4febb5f37f"
CompilerSupportLibraries_jll = "e66e0078-7015-5450-92f7-15fbd957f2ae"
LibUV_jll = "183b4373-6708-53ba-ad28-60e28bb38547"
LibUnwind_jll = "745a5e78-f969-53e9-954f-d19f2f74f4e3"
MPIPreferences = "3da0fdf6-3ccc-4f1b-acd9-58baa6c99267"
MPItrampoline_jll = "f1f71cc9-e9ae-5b93-9b94-4fe0e1ad3748"
Zlib_jll = "83775a58-1f1d-513f-b197-d71354ab007a"
libcxxwrap_julia_jll = "3eaa8342-bff7-56a5-9981-c04077f7cee7"
libjulia_jll = "5ad3ddd2-0711-543a-b040-befd59781bbf" My understanding is that the file I believe we need a mechanism to properly filter the dependencies. This is the first time we're venturing into this zone with the augmented platforms, it's a new territory for everyone. |
I think the fundamental issue is that in BinaryBuilderBase.jl/src/Prefix.jl Lines 605 to 622 in 574320e
platform keyword argument to the *Dependency structs we can remove dependencies from the project on a per-platform basis, which is great, but these per-platform relations aren't propagated through (this is also noted with a big warning box in the documentation), so if even if they don't appear at top level of the project, they may still be indirect dependencies of other dependencies.
To try and address this issue, I had a terrible idea: define a new |
That sounds like an awkward approach. In principle, I think there shouldn't be a single, overall "set of dependencies", but rather each to-be-installed package specification should have its own set of dependencies. Another approach would be to mimic the way in which architectures (such as To avoid the "installing MPICH and OpenMPI at the same time" problem, we can further require that the settings |
Another observation: Using Is there a way to see how the |
I think @staticfloat can answer that, the artifact resolution happens in Pkg and I don't follow very well the code there. Also, my feeling is that the |
Alright, so I looked into this, and unfortunately what you're running up against is Pkg's inability for conditional dependencies. When you build ADIOS2_jll, you conditionally add dependencies on a per-platform basis, but unfortunately, when installing things via Why isn't this a problem with other per-platform dependencies like the MPICH has artifacts without an MPI tag though, which means that when building for |
... @staticfloat we really need to get t-shirts with: "If at first it doesn't work, try again harder" But yes I agree that's the solution here. |
@staticfloat Thanks. Is this something we can do right now, modifying |
Yes, you can do it right now. I don’t THINK you need to do anything complicated; you don’t even need to add a platform augmentation hook I don’t think, as if the host platform lacks one, it should match the only valid platform in the artifacts toml file. |
I'm a bit concerned though: does it mean that we need to add extra platform tags to all dependencies of such builds? That doesn't look very sustainable. |
I thought the whole point of |
Couldn't the platform tags be added automatically? |
My hope is that these platform tags are necessary now to ensure a smooth transition from the current state to MPItrampoline. After some time, everything in Yggdrasil would be MPItrampoline. (So my hope.) |
I am trying to build
openPMD_api
with this command:Although I am using
mpi+mpitrampoline
, I find that$prefix/include/mpi.h
is from MPICH, not from MPItrampoline.This is my
build_tarballs.jl
.Is there a mistake in my script?
The same setup is working fine for the package
ADIOS2
. The main difference is that ADIOS2 does not depend on any other package that also depends on MPI. Maybe BinaryBuilder installs a wrong version of ADIOS2, one which depends on MPICH instead of MPItrampoline?The text was updated successfully, but these errors were encountered: