python / python/cpython

python3-config folder dependent result

Offen
#101,735 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

build type-bug
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
36k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug report

Python is build into a manylinux_2_28 docker image with following commands (image is py3.11-latest from my dockerhub repo, created with this Dockerfile):

./configure --enable-shared --enable-optimizations --disable-test-modules --prefix=/opt/build_python/installed
make altinstall

the process ends correctly, at the end I found the content into expected folder

/opt/build_python/installed/lib
├── [lrwxrwxrwx root     root    ]  libpython3.11.so -> libpython3.11.so.1.0
├── [-rwxr-xr-x root     root    ]  libpython3.11.so.1.0
├── [-rwxr-xr-x root     root    ]  libpython3.so
/opt/build_python/installed/bin
├── [-rwxr-xr-x root     root    ]  2to3-3.11
├── [-rwxr-xr-x root     root    ]  idle3.11
├── [-rwxr-xr-x root     root    ]  pip3.11
├── [-rwxr-xr-x root     root    ]  pydoc3.11
├── [-rwxr-xr-x root     root    ]  python3.11
└── [-rwxr-xr-x root     root    ]  python3.11-config

and if I run python3.11-config FROM INSIDE that folder I obtain the expected result (look at the -L part)

[root@919ee1a66e62 opt]# /opt/build_python/installed/bin/python3.11-config --embed --ldflags
 -L/opt/build_python/installed/lib -lpython3.11 -lpthread -ldl  -lutil -lm

If I do link that executable into /usr/local/bin and then run the same command, the output at -L flag part is different:

[root@919ee1a66e62 opt]# ln -s /opt/build_python/installed/bin/python3.11-config /usr/local/bin/python3-config

[root@919ee1a66e62 opt]# file /usr/local/bin/python3-config
/usr/local/bin/python3-config: symbolic link to /opt/build_python/installed/bin/python3.11-config

[root@919ee1a66e62 opt]# ls -l /usr/local/bin/python3-config
lrwxrwxrwx 1 root root 49 Feb  9 10:05 /usr/local/bin/python3-config -> /opt/build_python/installed/bin/python3.11-config

[root@919ee1a66e62 opt]# /usr/local/bin/python3-config --embed --ldflags
 -L/usr/local/lib -lpython3.11 -lpthread -ldl  -lutil -lm

this difference, when building C extension, led to have an error on dl phase cannot find -lpython3.11: No such file or directory because of wrong lib folder used.

I expected that python3-config's output, even if executed via symlink, should be the same.

Please let me know if my expectation is not correct, thanks.

Your environment

A manylinux_2_28_86_x64 docker image used to build python 3.11.1 into.
Then doing the steps above into the docker container.

  • CPython versions tested on: 3.11.1
  • Operating system and architecture: manylinux (CentOS) , x64

Thanks for this awesome programming language.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit den gemeldeten configure- und make altinstall-Befehlen und untersuche anschließend die generierte /opt/build_python/installed/bin/python3.11-config und Dockerfile_2_28_x64_py311. Führe dessen --embed --ldflags-Form direkt und über den symbolischen Link /usr/local/bin/python3-config aus und ermittle, ob beide Aufrufe denselben Bibliothekspfad liefern sollten.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python, shell
Bereich
build-system
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.