* [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