duplicate rpath in LDSHARED sysconfig
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Ambito
- build-system
Direzione di ricerca
La issue indica sysconfig.get_config_var("LDSHARED"), LDSHARED e LDFLAGS invece di un file del repository; inizia riproducendo l’esempio CFFI su macOS 15.4 e analizza come vengono assemblati questi valori. Il lavoro è completato quando l’estensione generata non contiene più voci LC_RPATH duplicate e viene importata correttamente senza sovrascrivere LDSHARED.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Solution to issue cannot be found in the documentation.
- I checked the documentation.
Issue
Related to duplicate LC_RPATH problems on macOS 15.4 showing up elsewhere, the current setup results in Python extensions guaranteeing the prefix rpath is set at least 3 times for Python extensions, which produces unloadable executables by default starting with 15.4 if built with a recent SDK (e.g. runtime compilation in user environments, as opposed to conda-forge infrastructure). This is coming up in e.g. dolfinx users which use runtime compilation via cffi.
The default sysconfig.get_config_var("LDSHARED") gives:
clang -bundle -undefined dynamic_lookup -Wl,-rpath,$PREFIX/lib -L$PREFIX/lib -Wl,-rpath,$PREFIX/lib -L$PREFIX/lib
while LDFLAGS also sets some of the same args:
-Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-rpath,$PREFIX/lib -L$PREFIX/lib
As a result, -Wl,-rpath,$PREFIX/lib -L$PREFIX/lib shows up by default 3 times when linking Python extensions. For a simple CFFI example:
import cffi
import logging
logging.basicConfig(level=logging.DEBUG)
ffibuilder = cffi.FFI()
src = """
int test_func() {
return 1;
}
"""
ffibuilder.set_source(
"_test_ffi",
src,
include_dirs=["include-dir"],
extra_compile_args=["-g"],
libraries=[],
)
ffibuilder.cdef("int test_func();")
ffibuilder.compile(verbose=True)
import _test_ffi
print(_test_ffi.lib.test_func())
Run in an env with c-compiler python cffi. With the default environment variables, this produces a module which fails to load with:
Traceback (most recent call last):
File "/Users/minrk/dev/simula/fenics/dolfinx/python/demo/test_ffi.py", line 21, in <module>
import _test_ffi # noqa
^^^^^^^^^^^^^^^^
ImportError: dlopen(/Users/minrk/dev/simula/fenics/dolfinx/python/demo/_test_ffi.cpython-312-darwin.so, 0x0002): tried: '/Users/minrk/dev/simula/fenics/dolfinx/python/demo/_test_ffi.cpython-312-darwin.so' (duplicate LC_RPATH '/Users/minrk/dev/simula/fenics/dolfinx/python/demo/.pixi/envs/default/lib'), '/System/Volumes/Preboot/Cryptexes/OS/Users/minrk/dev/simula/fenics/dolfinx/python/demo/_test_ffi.cpython-312-darwin.so' (no such file), '/Users/minrk/dev/simula/fenics/dolfinx/python/demo/_test_ffi.cpython-312-darwin.so' (duplicate LC_RPATH '/Users/minrk/dev/simula/fenics/dolfinx/python/demo/.pixi/envs/default/lib')
Running with
export LDSHARED="$CC -bundle -undefined dynamic_lookup"
results in success.
Suggestion: remove linker flags like rpath (and -L$PREFIX/lib?) from LDSHARED, relying on their presence in LDFLAGS.
Related reports:
- https://github.com/conda/conda-build/issues/5671
- https://github.com/prefix-dev/pixi/issues/3479
- https://github.com/conda-forge/numpy-feedstock/issues/347
Installed packages
python 3.12.8 hc22306f_1_cpython conda-forge
python_abi 3.12 5_cp312 conda-forge
Environment info
libmamba version : 2.0.8
mamba version : 2.0.8
curl version : libcurl/8.13.0 OpenSSL/3.4.1 (SecureTransport) zlib/1.3.1 zstd/1.5.7 libssh2/1.11.1 nghttp2/1.64.0
libarchive version : libarchive 3.7.7 zlib/1.3.1 liblzma/5.2.6 bz2lib/1.0.8 liblz4/1.9.3 libzstd/1.5.6
envs directories : /Users/minrk/conda/envs
package cache : /Users/minrk/conda/pkgs
/Users/minrk/.mamba/pkgs
environment : hypre (active)
env location : /Users/minrk/conda/envs/hypre
user config files : /Users/minrk/.mambarc
populated config files : /Users/minrk/.condarc
/Users/minrk/conda/.condarc
virtual packages : __unix=0=0
__osx=15.4=0
__archspec=1=arm64
channels : https://conda.anaconda.org/conda-forge/noarch
https://conda.anaconda.org/conda-forge/osx-arm64
base environment : /Users/minrk/conda
platform : osx-arm64
- Lingua principale
- Shell
- Stelle
- 47
- Fork
- 114
- Merge medio
- 7g 1h
- PR unite (30g)
- 12
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di conda-forge/python-feedstock
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 42/100
conda-forge/python-feedstock#945 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
conda-forge/python-feedstock#929 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
conda-forge/python-feedstock#903 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
conda-forge/python-feedstock#880 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
conda-forge/python-feedstock#879 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di conda-forge/python-feedstock
Issue simili
-
agent: ready area: submission priority: high type: docs
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
dkritarth/scopewatch#213 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
petry-projects/.github-private#2162 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug good first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
farcasterxyz/snapchain#1033 ·
-
Do not leave the distro Suricata service enabled after make installForse già presa @himanishpuri l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Ergane-Foundation/vajra#49 · 2 commenti ·
-
Package for AUR (Arch Linux)Apertagood first issue need help packaging
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
phonology024/babelscribe#23 ·