conda-forge / openmpi-feedstock

A conda-smithy repository for openmpi.
BSD 3-Clause "New" or "Revised" License
9 stars 22 forks source link

add sysroot lower bound to run_constrained #160

Open minrk opened 3 weeks ago

minrk commented 3 weeks ago

prevents downstream packages from building with older sysroot (#143)

draft because:

conda-forge-webservices[bot] commented 3 weeks ago

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

h-vetinari commented 3 weeks ago

it's unclear if this is an openmpi-specific issue or should be done in sysroot's run_exports

Given the discussion in https://github.com/conda-forge/linux-sysroot-feedstock/issues/63, I'd suggest you add this to openmpi for now; if at any point it becomes added as a sysroot constraint itself, you can always remove it later.

minrk commented 3 weeks ago

Thanks! That's useful. If I've read that discussion correctly, it won't have the desired effect when openmpi is just in host, right? That limits the usefulness a bit, I suppose, since that's all linux-64 builds, which are the main ones affected by the current issue.

minrk commented 3 weeks ago

I think adding -Wl,--allow-shlib-undefined to the wrapper ldflags as done in #159 is the fix for our situation (the tests do exercise building with 2.12), so we don't appear to actually have this transitive requirement. I think it remains unclear if/whether/how this transitive requirement may actually come up and how it should be expressed (seems impossible for host dependencies), but at least openmpi doesn't seem to have it.

I think it's worth adding -Wl,--allow-shlib-undefined as the solution to undefined reference to symbol@GLIBC_2.17, and mentioning that it's in $LDFLAGS to the conda-forge knowledge base somewhere.

minrk commented 3 weeks ago

I changed my mind, on re-reading various situations from #143, adding this constraint will make it more likely for compilation to succeed in user environments, since building with compiler wrappers is something that's normal to occur for users at runtime, not just building packages in conda-build.