ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <alexey.tourbin@gmail.com>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] pythonegg requires; was: Re: Вопросы по развитию python.
Date: Sun, 29 May 2016 22:15:48 +0300
Message-ID: <CA+qzenmBNuef-2Hg6RsT7m6MgHBbg3we+E-9M71eTOdYJ5pZmQ@mail.gmail.com> (raw)
In-Reply-To: <alpine.LFD.2.20.1605291415500.1850@imap.altlinux.org>

2016-05-29 20:41 GMT+03:00 Ivan Zakharyaschev <imz@altlinux.org>:
>>>> А для чего требуются зависимости .egg-info? Влияет ли их формальное
>>>> нарушение на работоспособность кода, как в случае pkg-config?
>
>> Я сначала вас не понял. Вы пишете слишком специфически и по делу. Как
>
> Тогда я написал не по делу, хотя на похожие темы, и то, что я собирался
> отметить в какой-то записке.
>
> Ведь речь-то шла про работоспособность и egg-info, и стоит ли её отражать в
> Requires. А то, про что я стал рассказывать, было про отказ работать во
> время сборки из-за несоответствия формально записанного в setup.py и
> фактически установленного в сборочной среде. (Т.е. и не про egg-info
> непосредственно. Про поведение setuptools.)

Здравствуйте. Хорошо, что продолжили эту тему. А чем отличаются
setup-tools и egg-info? Это какие-то совсем разные вещи из разных
опер? (Я не специалист по питону, правда-правда! Хотя может и смогу
написать несложный list comprehension в квадратных скобках.) Мне не
понятно, какие вещи там с какой горы берутся. Поэтому я и написал, что
у вас всё слишком специфически и по делу; а я, к сожалению, плохо
понимаю в более общем плане, как эта экосистема устроена.

В общем, если можете, и если это займет у вас не очень много рабочего
времени (допустим, не больше двух часов), то напишите, пожалуйста,
короткий обзор, как собираются питоновские модули, с учетом всяких
сторонних прибамбасов. Думаю, это будет интересно не только мне.

> Из области поведения setuptools была, кстати, и проблема run-time (когда
> сообщили и bugzilla, что gnome-music не запускался). Там в пакетах прописана
> информация о зависимостях, которую воспринимают setuptools (в setup.py). И,
> совершая установку пакета, setuptools создают "точки входа" в виде
> исполняемых файлов, в которых питоновский код использует pkg_resources, а
> там происходит проверка того, что все зависимости из информации о пакете
> установлены. Эта проверка работает в runtime. Информация о зависимостях
> читается, записанная в каких-то pkginfo или egg-info.

Вы тут пишете, что gnome-music мог бы запуститься, но не запускается
из-за формальных требований. То есть формальные требования из setup.py
(грубо говоря, со стадии configure) каким-то образом переносятся на
стадию запуска. Я не совсем понимаю, как это делается, а главное,
зачем это делается?

Идеология традиционной сборки rpm-пакетов состоит в том, что: 1)
стадия configure определяет, можно собрать или нельзя; если собрать
нельзя, то rpm бессилен; 2) если собрать удалось, то в конце rpm
определяет зависимости и другие существенные особенности среды сборки,
так чтобы запуск был вполне возможен и после "переноса"; 3)
соответственно, после "переноса" в рантайме никаких проверок не
происходит; запуск более-менее гарантирован статическими
rpm-зависимостями.

Эта fine model рушится, если любой дурак будет проверять при запуске,
хочет он запускаться или не хочет. Например, перловый модуль DB_File
(Berkeley DB) может встать в позу и поверять при запуске, слинкован ли
он с той же самой версией Berkeley DB, которую видел при компиляции.
Это реальный случай.

--- a/ext/DB_File/version.c
+++ b/ext/DB_File/version.c
...
-    if (Major != DB_VERSION_MAJOR || Minor != DB_VERSION_MINOR
-               || Patch != DB_VERSION_PATCH)
+    if (Major != DB_VERSION_MAJOR || Minor != DB_VERSION_MINOR )
+               /* || Patch != DB_VERSION_PATCH) */
                       croak("\nDB_File needs compatible versions of libdb...");

http://search.cpan.org/diff/DB_File-1.815-DB_File-1.816.diff

Мне кажется, что все эти доморощенные подзаборные варианты domestic
package management нужно бить по носу.

Здесь есть еще одно соображение: если код не сможет нормально
отработать, то он не отработает нормально в любом случае, так или
иначе, рано или поздно. Поэтому в рантайме нам не нужен циничный
прорицатель. Если балерина выбежала на сцену, то уже нет смысла
проверять, в форме она или нет. Пусть уж спляшет хоть как нибудь.

Есть еще соображения насчет доказуемых и недоказуемых зависимостей. Я
писал об этом подробнее где-то рядом. Я всегда занимался только
доказуемыми зависимостями. Доказуемые зависимости довольно
реалистичны. Например, set-версии реалистичны: не нужно запускать
программу, если ей не хватает функций в библиотеках. Такая программа
упадет во время вызова недостающей функции, к бабке не ходи. И есть
еще авторитетные зависимости, например, требуется версия foo >= 666.
Это, по-моему, вообще не зависимости в понятном мне смысле, а какие-то
чревовещания.

Вы еще интересно упомянули про buildreq. Наверное подумаю и еще
отвечу. Хотя кому сейчас нужен buildreq.

  reply	other threads:[~2016-05-29 19:15 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-17 18:44 [devel] " Igor Vlasenko
2016-05-18 16:07 ` Alexey Tourbin
2016-05-18 16:40   ` Igor Vlasenko
2016-05-18 17:25     ` Alexey Tourbin
2016-05-18 18:02       ` Igor Vlasenko
2016-05-18 20:31         ` Alexey Tourbin
2016-05-19 19:32           ` Igor Vlasenko
2016-05-18 17:32   ` [devel] pythonegg requires; was: " Ivan Zakharyaschev
2016-05-19 17:19     ` Alexey Tourbin
2016-05-29 17:41       ` Ivan Zakharyaschev
2016-05-29 19:15         ` Alexey Tourbin [this message]
2016-05-29 19:25           ` Michael Shigorin
2016-05-29 20:59           ` Alexey Tourbin
2016-05-30  6:11             ` Alexey Tourbin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CA+qzenmBNuef-2Hg6RsT7m6MgHBbg3we+E-9M71eTOdYJ5pZmQ@mail.gmail.com \
    --to=alexey.tourbin@gmail.com \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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