* [devel] Сборка приложений с libpython @ 2017-12-18 17:35 Alexei Mezin 2017-12-18 18:18 ` Vitaly Lipatov 0 siblings, 1 reply; 11+ messages in thread From: Alexei Mezin @ 2017-12-18 17:35 UTC (permalink / raw) To: Devel У нас python-config выдает флаги компиляции без -lpython2.7 $ python2.7-config --ldflags --cflags -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -I/usr/include/python2.7 В результате некоторые configure-скрипты обламываются в сборке тестовой программы configure:18076: gcc -o conftest -g -O2 -I/usr/include/python2.7 conftest.c -lpthread -ldl -lutil -lm -Xlinker -export-dynamic >&5 /tmp/.private/alexei/ccQ4nLqA.o: In function `main': /tmp/gwyddion-2.49/conftest.c:35: undefined reference to `Py_Initialize' ...skip... #include <Python.h> int main () { Py_Initialize(); ; return 0; } Программа-то из одной строчки. И попытка ее собрать вроде как идеологически правильная -- параметры компиляции и линковки взяты из выхлопа python-config. Это так и должно быть? Или у нас какой-то совершенно особенный подход к питону? Потому что в других дистрибутивах на этот configure не жалуются, значит там все работает. В Убунте точно есть нужная библиотека в списке. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [devel] Сборка приложений с libpython 2017-12-18 17:35 [devel] Сборка приложений с libpython Alexei Mezin @ 2017-12-18 18:18 ` Vitaly Lipatov 2017-12-18 19:01 ` Alexei Mezin 0 siblings, 1 reply; 11+ messages in thread From: Vitaly Lipatov @ 2017-12-18 18:18 UTC (permalink / raw) To: ALT Linux Team development discussions Alexei Mezin писал 18.12.17 20:35: > У нас python-config выдает флаги компиляции без -lpython2.7 > > $ python2.7-config --ldflags --cflags > -lpthread -ldl -lutil -lm -Xlinker -export-dynamic > -I/usr/include/python2.7 > > В результате некоторые configure-скрипты обламываются в сборке > тестовой программы ... > Это так и должно быть? Или у нас какой-то совершенно особенный подход > к питону? Потому что в других дистрибутивах на этот configure не > жалуются, значит там все работает. В Убунте точно есть нужная > библиотека в списке. Так багу? Fedora: [lav@fedora64 ~]$ python-config --ldflags --cflags -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -I/usr/include/python2.7 -I/usr/include/python2.7 -fno-strict-aliasing -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -- С уважением, Виталий Липатов, Etersoft ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [devel] Сборка приложений с libpython 2017-12-18 18:18 ` Vitaly Lipatov @ 2017-12-18 19:01 ` Alexei Mezin 2017-12-19 4:35 ` Vladimir D. Seleznev 0 siblings, 1 reply; 11+ messages in thread From: Alexei Mezin @ 2017-12-18 19:01 UTC (permalink / raw) To: Devel 18.12.2017 21:18, Vitaly Lipatov пишет: > > Так багу? Так проверил, например, на P7. И там точно так же. То есть у нас это довольно давно. И код в скрипте python2.7-config как будто намеренно так сделано. Или это бага, которую несколько лет никто не замечает, что странно. Или что-то имеется ввиду, и хотелось бы узнать, как объехать заботливо разложенные грабли. Потому что https://docs.python.org/2/extending/embedding.html#compiling-and-linking-under-unix-like-systems и в других дистрибутивах не выдумывают, а делают "как и инструкции". И апстримы, конечно, ориентируются не на АЛьТ. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [devel] Сборка приложений с libpython 2017-12-18 19:01 ` Alexei Mezin @ 2017-12-19 4:35 ` Vladimir D. Seleznev 2017-12-19 5:20 ` Dmitry V. Levin 2017-12-19 13:38 ` Alexei V. Mezin 0 siblings, 2 replies; 11+ messages in thread From: Vladimir D. Seleznev @ 2017-12-19 4:35 UTC (permalink / raw) To: ALT Linux Team development discussions On Mon, Dec 18, 2017 at 10:01:11PM +0300, Alexei Mezin wrote: > 18.12.2017 21:18, Vitaly Lipatov пишет: > > > > Так багу? > > > Так проверил, например, на P7. И там точно так же. То есть у нас это > довольно давно. И код в скрипте python2.7-config как будто намеренно так > сделано. > > Или это бага, которую несколько лет никто не замечает, что странно. Или > что-то имеется ввиду, и хотелось бы узнать, как объехать заботливо > разложенные грабли. Потому что > > https://docs.python.org/2/extending/embedding.html#compiling-and-linking-under-unix-like-systems > > и в других дистрибутивах не выдумывают, а делают "как и инструкции". И > апстримы, конечно, ориентируются не на АЛьТ. Это не бага. Это было сделано с целью, чтобы модули питона не линковались с libpython: при загрузке модуля интерпретатор питона или другая программа, использующая питон в качестве своего скриптового языка, уже имеют все необходимые символы; в добавок, такое решение позволяет не беспокоиться, если библиотека обновилась и символы немного разъехались, а также держать несколько реализаций библиотеки в репозитории. Это изменение присутствует начиная с этого коммита [1], однако в commit message зафиксировано решение, а причина того, что было сделано. Просьба к мейнтейнерам: документировать зачем было сделано то, что было сделано. -- [1] http://git.altlinux.org/gears/p/python.git?p=python.git;a=commitdiff;h=712242dac26472fd0d1ceb0c6f46a7d120a10df8;hp=9f5cde76081f8713e77c7fdabcab6869191cd4d0 -- С уважением, Владимир Селезнев ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [devel] Сборка приложений с libpython 2017-12-19 4:35 ` Vladimir D. Seleznev @ 2017-12-19 5:20 ` Dmitry V. Levin 2017-12-19 13:38 ` Alexei V. Mezin 1 sibling, 0 replies; 11+ messages in thread From: Dmitry V. Levin @ 2017-12-19 5:20 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 2014 bytes --] On Tue, Dec 19, 2017 at 07:35:43AM +0300, Vladimir D. Seleznev wrote: > On Mon, Dec 18, 2017 at 10:01:11PM +0300, Alexei Mezin wrote: > > 18.12.2017 21:18, Vitaly Lipatov пишет: > > > > > > Так багу? > > > > Так проверил, например, на P7. И там точно так же. То есть у нас это > > довольно давно. И код в скрипте python2.7-config как будто намеренно так > > сделано. > > > > Или это бага, которую несколько лет никто не замечает, что странно. Или > > что-то имеется ввиду, и хотелось бы узнать, как объехать заботливо > > разложенные грабли. Потому что > > > > https://docs.python.org/2/extending/embedding.html#compiling-and-linking-under-unix-like-systems > > > > и в других дистрибутивах не выдумывают, а делают "как и инструкции". И > > апстримы, конечно, ориентируются не на АЛьТ. > > Это не бага. Это было сделано с целью, чтобы модули питона не > линковались с libpython: при загрузке модуля интерпретатор питона или > другая программа, использующая питон в качестве своего скриптового > языка, уже имеют все необходимые символы; в добавок, такое решение > позволяет не беспокоиться, если библиотека обновилась и символы немного > разъехались, а также держать несколько реализаций библиотеки в > репозитории. > > Это изменение присутствует начиная с этого коммита [1], однако в commit > message зафиксировано решение, а причина того, что было сделано. Просьба > к мейнтейнерам: документировать зачем было сделано то, что было сделано. > > -- > [1] http://git.altlinux.org/gears/p/python.git?p=python.git;a=commitdiff;h=712242dac26472fd0d1ceb0c6f46a7d120a10df8;hp=9f5cde76081f8713e77c7fdabcab6869191cd4d0 История эта давняя, вы просто не застали или забыли. Вот начало треда: https://lists.altlinux.org/pipermail/devel/2012-March/193611.html Вот начало другого треда на тему: https://lists.altlinux.org/pipermail/devel/2012-April/193962.html Это не значит, конечно, что схему, реализованную весной 2012 года, не сломали нечаянно потом. -- ldv [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 801 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [devel] Сборка приложений с libpython 2017-12-19 4:35 ` Vladimir D. Seleznev 2017-12-19 5:20 ` Dmitry V. Levin @ 2017-12-19 13:38 ` Alexei V. Mezin 2017-12-19 14:08 ` Dmitry V. Levin 1 sibling, 1 reply; 11+ messages in thread From: Alexei V. Mezin @ 2017-12-19 13:38 UTC (permalink / raw) To: Devel 19.12.2017 7:35, Vladimir D. Seleznev пишет: > Это не бага. Это было сделано с целью, чтобы модули питона не > линковались с libpython А в результате проблемы с программами, которые пытаются использовать питон :) Причем именно в моем случае (обновление Gwyddion) программе реально не нужен libpython, но конфигурационные скрипты такие какие они есть. И с точки зрения апстрима, во всех дистрибутивах все хорошо, а в АЛьТ мы там ССЗБ. Есть какие-то рекомендованные пути объезда кроме творчески пропатчить configure, добавив туда библиотеку, или оторвав проверку на результат компиляции тестового примера? ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [devel] Сборка приложений с libpython 2017-12-19 13:38 ` Alexei V. Mezin @ 2017-12-19 14:08 ` Dmitry V. Levin 2017-12-19 14:13 ` Alexei V. Mezin 0 siblings, 1 reply; 11+ messages in thread From: Dmitry V. Levin @ 2017-12-19 14:08 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 724 bytes --] On Tue, Dec 19, 2017 at 04:38:33PM +0300, Alexei V. Mezin wrote: > 19.12.2017 7:35, Vladimir D. Seleznev пишет: > > > Это не бага. Это было сделано с целью, чтобы модули питона не > > линковались с libpython > > А в результате проблемы с программами, которые пытаются использовать > питон :) > > Причем именно в моем случае (обновление Gwyddion) программе реально не > нужен libpython, но конфигурационные скрипты такие какие они есть. И с > точки зрения апстрима, во всех дистрибутивах все хорошо, а в АЛьТ мы там > ССЗБ. $ python2.7-config --libs -lpthread -ldl -lutil -lm -lpython2.7 Т.е. схему 5-летней давности, видимо, кто-то сломал. Тогда что у вас не работает, и почему? -- ldv [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 801 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [devel] Сборка приложений с libpython 2017-12-19 14:08 ` Dmitry V. Levin @ 2017-12-19 14:13 ` Alexei V. Mezin 2017-12-19 14:47 ` Dmitry V. Levin 0 siblings, 1 reply; 11+ messages in thread From: Alexei V. Mezin @ 2017-12-19 14:13 UTC (permalink / raw) To: Devel 19.12.2017 17:08, Dmitry V. Levin пишет: > > $ python2.7-config --libs > -lpthread -ldl -lutil -lm -lpython2.7 > > Т.е. схему 5-летней давности, видимо, кто-то сломал. > Тогда что у вас не работает, и почему? Апстрим ткнул меня в https://docs.python.org/2/extending/embedding.html#compiling-and-linking-under-unix-like-systems где написано про --ldflags, а вовсе не про --libs. И Fedora/Debian, например, именно так и работают. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [devel] Сборка приложений с libpython 2017-12-19 14:13 ` Alexei V. Mezin @ 2017-12-19 14:47 ` Dmitry V. Levin 2017-12-20 6:21 ` Alexei Mezin 0 siblings, 1 reply; 11+ messages in thread From: Dmitry V. Levin @ 2017-12-19 14:47 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 643 bytes --] On Tue, Dec 19, 2017 at 05:13:35PM +0300, Alexei V. Mezin wrote: > 19.12.2017 17:08, Dmitry V. Levin пишет: > > > > $ python2.7-config --libs > > -lpthread -ldl -lutil -lm -lpython2.7 > > > > Т.е. схему 5-летней давности, видимо, кто-то сломал. > > Тогда что у вас не работает, и почему? > > Апстрим ткнул меня в > https://docs.python.org/2/extending/embedding.html#compiling-and-linking-under-unix-like-systems > > где написано про --ldflags, а вовсе не про --libs. И Fedora/Debian, > например, именно так и работают. Это неправильно, в --ldflags не должно быть никаких -l, только -L. Для -l есть --libs. -- ldv [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 801 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [devel] Сборка приложений с libpython 2017-12-19 14:47 ` Dmitry V. Levin @ 2017-12-20 6:21 ` Alexei Mezin 2017-12-20 11:17 ` Dmitry V. Levin 0 siblings, 1 reply; 11+ messages in thread From: Alexei Mezin @ 2017-12-20 6:21 UTC (permalink / raw) To: Devel 19.12.2017 17:47, Dmitry V. Levin пишет: > Это неправильно, в --ldflags не должно быть никаких -l, только -L. > Для -l есть --libs. > Однако в python-config --ldflags есть аж 4 штуки -l и ни одной -L. Верно ли я понял, что правильным путем выхода из ситуации будет объяснение сборочным скриптам, что опции линковки для приложений, которым действительно нужна libpython, надо брать из python-config --libs? В данный момент это окажется всего одна опция -lpython2.7. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [devel] Сборка приложений с libpython 2017-12-20 6:21 ` Alexei Mezin @ 2017-12-20 11:17 ` Dmitry V. Levin 0 siblings, 0 replies; 11+ messages in thread From: Dmitry V. Levin @ 2017-12-20 11:17 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 1168 bytes --] On Wed, Dec 20, 2017 at 09:21:23AM +0300, Alexei Mezin wrote: > 19.12.2017 17:47, Dmitry V. Levin пишет: > > > Это неправильно, в --ldflags не должно быть никаких -l, только -L. > > Для -l есть --libs. > > Однако в python-config --ldflags есть аж 4 штуки -l и ни одной -L. > > Верно ли я понял, что правильным путем выхода из ситуации будет > объяснение сборочным скриптам, что опции линковки для приложений, > которым действительно нужна libpython, надо брать из python-config > --libs? В данный момент это окажется всего одна опция -lpython2.7. $ python2.7-config --ldflags -lpthread -ldl -lutil -lm -Xlinker -export-dynamic $ python2.7-config --libs -lpthread -ldl -lutil -lm -lpython2.7 В нормальной ситуации --ldflags должен выводить опции, --libs библиотеки, использовать надо обе так, как это принято. Но python2.7-config не следует этим правилам, там всё перепутано. python3.5-config немного лучше в этом плане: $ python3.5-config --ldflags -L/usr/lib64/python3.5/config-3.5m -lpython3.5m -lpthread -ldl -lutil -lm -Xlinker -export-dynamic $ python3.5-config --libs -lpython3.5m -lpthread -ldl -lutil -lm -- ldv [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 801 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2017-12-20 11:17 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-12-18 17:35 [devel] Сборка приложений с libpython Alexei Mezin 2017-12-18 18:18 ` Vitaly Lipatov 2017-12-18 19:01 ` Alexei Mezin 2017-12-19 4:35 ` Vladimir D. Seleznev 2017-12-19 5:20 ` Dmitry V. Levin 2017-12-19 13:38 ` Alexei V. Mezin 2017-12-19 14:08 ` Dmitry V. Levin 2017-12-19 14:13 ` Alexei V. Mezin 2017-12-19 14:47 ` Dmitry V. Levin 2017-12-20 6:21 ` Alexei Mezin 2017-12-20 11:17 ` Dmitry V. Levin
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git