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.
next prev parent 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