I've noticed that BinaryBuilder fails when we have a case like:
platforms = [
Dependency("Foo_jll", compat="X"; platforms=pA),
Dependency("Foo_jll", compat="Y"; platforms=pB)
]
Notice that we're trying to use the same dependency with different versions for some platforms.
In this case, the Project.toml of the generated JLL only retains one compat bound (the last one processed), creating a JJL that builds fine, but may fail at runtime depending on the platform.
If this is too hard to fix, I suggest that at least an error (or warning) message shown if someone tries to build like this.
How I found this problem
I encountered this problem trying to set a dependency as:
- MKL_jll v2025.2 for x86_64-w64 and x86_64-linux-gnu;
- MKL_jll v2023.2 for x86_64-apple
That's because oneMKL dropped Apple support after v2023.2.
I've noticed that BinaryBuilder fails when we have a case like:
Notice that we're trying to use the same dependency with different versions for some platforms.
In this case, the Project.toml of the generated JLL only retains one compat bound (the last one processed), creating a JJL that builds fine, but may fail at runtime depending on the platform.
If this is too hard to fix, I suggest that at least an error (or warning) message shown if someone tries to build like this.
How I found this problem
I encountered this problem trying to set a dependency as:
That's because oneMKL dropped Apple support after v2023.2.