conda-forge / cfep

conda-forge's Enhancement Proposal
BSD 3-Clause "New" or "Revised" License
18 stars 24 forks source link

ABI pinning via SONAME in build string #48

Open carterbox opened 2 years ago

carterbox commented 2 years ago

Checklist

NOTES:

https://www.debian.org/doc/debian-policy/ch-sharedlibs.html https://github.com/conda-forge/conda-forge.github.io/issues/157

hmaarrfk commented 2 years ago

I'm not sure where I should report this bug but it seems related https://github.com/conda-forge/hdf5-feedstock/pull/177#issuecomment-1196273311

carterbox commented 2 years ago

@hmaarrfk, that lint error has a patch in PR already (but it has not been merged). After the patch the lint will be unaffected by wider use of pinnings with build string matches.

isuruf commented 2 years ago

Why not go with the prior art, which is to have a libgfortran5 output? This is what every other binary distro does.

carterbox commented 2 years ago

https://github.com/conda-forge/libidn11-feedstock/blob/main/recipe/meta.yaml

(Another package that uses SONAME in an new output)

hmaarrfk commented 2 years ago

I think i would like to see https://github.com/conda-forge/abseil-cpp-feedstock/issues/46 resolved before moving more pinnings to conda build strings. It seems that this would exacerbate the issue

carterbox commented 2 years ago

I think i would like to see conda-forge/abseil-cpp-feedstock#46 resolved before moving more pinnings to conda build strings. It seems that this would exacerbate the issue

I didn't anticipate that conda was unprepared to do complex matching in the build string. We could end up with some very long build strings:

v{{ so_name_major }}so_{{ mpi_prefix }}_{{ cuda_prefix }}_h{{ PKG_HASH }}_{{ build }}

which various packages in the same environment could try to match in different ways:

foo 1.*     v{{ so_name_major }}so*
foo >=1.1   v{{ so_name_major }}so*{{ mpi_prefix }}*
foo =1.1.*  v{{ so_name_major }}so*{{ cuda_prefix }}*

And apparently the conda solver is not equipped to resolve these patterns right now.

h-vetinari commented 2 years ago

And apparently the conda solver is not equipped to resolve these patterns right now.

It will be, as soon https://github.com/conda/conda/pull/11612 is merged (and then percolates into the ecosystem).