ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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