ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <at@altlinux.ru>
To: ALT Devel discussion list <devel@lists.altlinux.org>
Subject: Re: [devel] проблемы с поиском зависимостей [2]
Date: Wed, 14 Mar 2007 01:12:39 +0300
Message-ID: <20070313221239.GE6039@solemn.turbinal> (raw)
In-Reply-To: <20070312214952.GB7878@basalt.office.altlinux.org>

[-- Attachment #1: Type: text/plain, Size: 3949 bytes --]

On Tue, Mar 13, 2007 at 12:49:52AM +0300, Dmitry V. Levin wrote:
> > Кроме того, пакет git не собирается, потому что там в некоторых
> > шелл-скриптах после `exit 0' идет некомментированный plain text.
> 
> Тогда почему до изменения пакет git собирается?

Речь идет о файле /usr/share/git-core/templates/hooks/pre-rebase.
Раньше зависимости искались только в исполняемых shell файлах,
а этот файл не исполняемый, и поэтому пакет собирался.

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

Кстати, например, в пакете service используется хак.
/etc/rc.d/init.d/functions находится в билдруте в исполняемом состоянии,
и поэтому зависимости в нём ищутся, а в cpio заворачивается уже в
неисполняемом состоянии через %attr.

Посмотрим на эту проблему с другой стороны: в чем в данном случае её
суть?  Суть в том, что обнаружились некие *настоящие* шелл-скрипты,
которые не проходят стандартной проверки `sh -n'.  С этой точки зрения
никакой специальной проблемы с поиском зависимостей как бы и нет.
Просто мы узнали то, на что раньше не обращали внимания.

В общем, я думаю, что в случае необходимости нужно явно отключать поиск
зависимостей в конкретных файлах, а не полагаться на исполняемость.
И сомнительно, чтобы в случае с git эта необходимость была.

А как решить эту проблему я подумаю, проще всего наверное будет добавить
проверку на ещё один частный случай в shell.req, наравне с exec в первой
строчке.

> > Кроме того, будут проблемы с питоном, потому что `#!/usr/bin/env python'
> > теперь отыскиваются слишком хорошо.
> 
> Что значит "слишком хорошо" и что значит "будут проблемы с питоном"?

Слишком хорошо означает что для #!/usr/bin/env python будет вызван
FindPackage "$f" /usr/bin/env python.

$ /usr/lib/rpm/shebang.req -v /usr/lib/rpm/python.req.py 
shebang.req: /usr/lib/rpm/python.req.py: /usr/bin/env -> coreutils (via rpmdb)
coreutils
shebang.req: /usr/lib/rpm/python.req.py: python -> /usr/bin/python -> ... (via which)
shebang.req: /usr/lib/rpm/python.req.py: /usr/bin/python -> python-strict (via rpmdb)
python-strict
$

А пакет python-strict, грубо говоря, требует все остальные пакеты, на
которые распилен питон.  Последнее явно неприемлемо для базовой
сборочной системы (тогда как внесение python-base в базовую систему
кажется мне приемлемым).

У пакета rpm-build-python вообще никакой зависимости на python нету,
т.е. это такой дохляк, который прямо начиная с #! может не запуститься
и отвалить, а это противоречит нашему принципу что всё более-менее
должно работать из коробки без всяких там грубых посыланий и доустановок.

Хуже того, если я правильно понимаю, то скрипты из rpm-build-python
всячески скрывают свои зависимости, и если им чего-то не хватает, то они
отваливают абсолютно тихо, по-подлому.

python.req:
    35  try :
    36      import sys, os
    37      import parser, symbol, token, types
    38  except :
    39      pass    
    40  else :    

После else идет весь реальный код.  Такая же история с python.prov.py.
Т.е. мы можем не только недосчитаться requires зависимостей, но и
пропустить provides зависимости, а это уже чревато анметами в
репозитарии.  И, как известно, в репозитарии больше всего именно
питоновских анметов.  В общем, такой лажи быть не должно.

Резюмирую, что мне кажется рационально нужно сделать с питоном.

1) пересмотреть как питон распилен.  python-base должен давать работающий
/usr/bin/python и достаточно модулей для работы rpm-build-python.  Тогда
можно раскрыть зависимости в rpm-build-python и внести python-base в
базовую сборочную систему.

2) Изменить rpm-build-python чтобы если там чево-то отваливает то чтобы
хотя бы сообщал, что, мол, отваливаю, и чево не хватает.  А ещё лучше
чтобы просто отваливал, как следует.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

  reply	other threads:[~2007-03-13 22:12 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-12 12:36 Alexey Tourbin
2007-03-12 21:49 ` Dmitry V. Levin
2007-03-13 22:12   ` Alexey Tourbin [this message]
2007-03-14 10:13     ` [devel] python problems Alexey Tourbin
2007-03-14 10:34       ` Alexey I. Froloff
2007-03-14 10:42         ` Alexey Tourbin
2007-03-14 18:11           ` Alexey Tourbin
2007-03-15 10:07     ` [devel] проблемы с поиском зависимостей [2] Ivan Fedorov
2007-03-15 10:27       ` Alexey I. Froloff
2007-03-15 10:46         ` Aleksey Avdeev
2007-03-15 11:04           ` Alexey I. Froloff
2007-03-15 11:00         ` Ivan Fedorov
2007-03-15 11:04           ` Alexey I. Froloff
2007-03-15 11:02         ` Igor Vlasenko
2007-03-15 11:40           ` Ivan Fedorov
2007-03-15 12:17             ` [devel] [JT] " Igor Vlasenko
2007-03-15 13:04               ` Ivan Fedorov
2007-03-15 12:22             ` [devel] " Alexey Tourbin
2007-03-15 12:56       ` [devel] Administrativia Dmitry V. Levin
2007-03-15 15:49       ` [devel] проблемы с поиском зависимостей [2] Денис Смирнов
2007-03-12 23:05 ` Michael Shigorin
2007-03-13 22:32   ` Alexey Tourbin
2007-03-14  9:42     ` [devel] [buildreq] " Michael Shigorin
2007-03-14  9:48       ` [devel] " 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=20070313221239.GE6039@solemn.turbinal \
    --to=at@altlinux.ru \
    --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