conda-forge / rust-activation-feedstock

A conda-smithy repository for rust-activation.
BSD 3-Clause "New" or "Revised" License
0 stars 18 forks source link

Overlinking errors with all `linux-ppc64le` builds #58

Open xhochy opened 4 months ago

xhochy commented 4 months ago

With the recent update to c_stdlib_version: 2.17 on linux-64, all cross-compiles from linux-64 to linux-ppc64le are failing with an overlinking error:

 ERROR (pydantic-core,lib/python3.9/site-packages/pydantic_core/_pydantic_core.cpython-39-powerpc64le-linux-gnu.so): $RPATH/ld64.so.2 not found in packages, sysroot(s) nor the missing_dso_whitelist.
.. is this binary repackaging?

This did previously not happen as sysroot_linux-64 2.12 had less files than sysroot_linux-ppc64le 2.17. With the update to sysroot_linux-64 2.17, the order is now different and thus in https://github.com/conda/conda-build/blob/c7a1e9bd9c6f65e3a634a6534b70c1204a713f8f/conda_build/post.py#L837 the linux-64 sysroot is selected. This doesn't contain ld64.so.2 and thus cannot resolve it correctly as a sysroot dependency:

{'libgcc_s.so.1': {'orig': '$RPATH/libgcc_s.so.1', 'resolved': '/home/uwe/conda-bld/pydantic-core_1719490396881/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/lib/libgcc_s.so.1', 'rpaths': ['$SELFDIR/../../..']}, 'libpthread.so.0': {'orig': '$RPATH/libpthread.so.0', 'resolved': '/home/uwe/conda-bld/pydantic-core_1719490396881/_build_env/x86_64-conda-linux-gnu/sysroot/lib64/libpthread.so.0', 'rpaths': ['$SELFDIR/../../..']}, 'libm.so.6': {'orig': '$RPATH/libm.so.6', 'resolved': '/home/uwe/conda-bld/pydantic-core_1719490396881/_build_env/x86_64-conda-linux-gnu/sysroot/lib64/libm.so.6', 'rpaths': ['$SELFDIR/../../..']}, 'libc.so.6': {'orig': '$RPATH/libc.so.6', 'resolved': '/home/uwe/conda-bld/pydantic-core_1719490396881/_build_env/x86_64-conda-linux-gnu/sysroot/lib64/libc.so.6', 'rpaths': ['$SELFDIR/../../..']}, 'ld64.so.2': {'orig': '$RPATH/ld64.so.2', 'resolved': '$RPATH/ld64.so.2', 'rpaths': ['$SELFDIR/../../..']}}
xhochy commented 4 months ago

A nasty workaround would be to place a large number of files into the correct sysroot :(