ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] rpm 4.0.4-alt87
@ 2008-02-24 18:01 Alexey Tourbin
  2008-02-24 19:29 ` [devel] [JT] subjunctive mode (rpm 4.0.4-alt87) Alexey Tourbin
                   ` (3 more replies)
  0 siblings, 4 replies; 54+ messages in thread
From: Alexey Tourbin @ 2008-02-24 18:01 UTC (permalink / raw)
  To: devel

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

После некоторых колебаний я подготовил новую сборку rpm.

    4.0.4-alt87
    
    - implemented automatic dependencies for %%pre, %%preun, %%post,
      and %%postun scriptlets (#7409)
    - find-package: when possible, keep file-level dependencies as is,
      without mapping them to package names
    - find-package: relax file-level dependencies on unpackaged directories
    - find-package: optimize out bulk dependencies on sh, cat, rm, mv etc.
    - build/parseScript.c: optimize out RPMSENSE_INTERP dependencies on /bin/sh
    - lib.req: enabled ELF_INTERP dependencies except for standard /lib/ld-linux.so.2
    - functions (ValidateBuildRoot): require RPM_BUILD_ROOT path be canonical

Прокомментирую основные изменения:

1) Поиск зависимостей в %post-скритпах.  Теперь зависимости 
%post-скриптов вида Requires(post): ... можно не писать вручную (и лучше
вообще не писать без особой нужды).  Реализация мне не очень нравится,
но на практике это не должно повлиять на конечный результат (реализацию
можно будет переделать, если станет понятно, как это можно сделать
лучше).

Ранее я уже писал, что нужно понимать некоторые особенности работы
shell.req, чтобы зависимости в шелл-коде %post-скриптов генерировались
наиболее приемлемым образом.  В частности, если зависимости быть не
должно (если она не строгая), то команды в шелл-коде нужно заворачивать
в переменные:

	x=/usr/bin/x
	if [ -x "$x" ]; then
		"$x"
	fi

В отличие от реализации jbj@ (в апстриме rpm), поиск зависимостей
работает не только для shell-кода (например, если %post-скрипт написан
на перле -- "%post -p /usr/bin/perl" -- то будет работать поиск перловых
зависимостей).

2) Когда путь к файлу указан явно, rpm теперь будет стараться сохранить
зависимость на этот файл as is, без поиска соответствующего пакета,
который содержит этот файл.  Это пока возможно не для всех путей (для
некоторых путей это может дать "полу-анметы"), но для многих -- возможно.

Идея в том, что когда где-то требуется путь к файлу, то наиболее точный
способ указать зависимость -- это просто вставить этот путь в
зависимости.  Вот пример, когда это желательно.  Пусть в пакете
используется /usr/bin/tclsh8.4.  Тогда старый rpm разрешал эту
зависимость в пакет tcl (версии 8.4).  Новый пакет tcl (версии 8.5)
уже не содержит файла /usr/bin/tclsh8.4, но зависимость на пакет tcl
остаётся, естественно, удовлетворенной (то есть получаем нерабочий
пакет).  После же пересборки старый rpm изменил бы зависимость
s/tcl/tcl8.4/.  Всего этого можно избежать, если не делать "производных"
зависимостей, а стараться указывать зависимости в их наиболее
"первоначальном" виде.  Здесь имеется полная аналогия с виртуальными
зависимостями -- они как раз предназначены для того, чтобы указывать
зависимости в наиболее точном "первичном" виде.

Чтобы не появилось слишком много bulk зависимостей, я реализовал
оптимизацию, которая удаляет следующие зависимости (как "команды"
в шелл-скриптах, так и соответствующие им /bin/ пути):
	sh cat rm mv cp mkdir ln

(список можно будет немного увеличить, если кто-нибудь захочет
составить более точную статистику, чем у меня получилось с ходу).

Поскольку сам rpm требует coreutils и /bin/sh, то в любой
не окончательно поломанной среде эти зависимости должны быть
заведомо удовлетворены.

Это изменение не затрагивает случая, когда известна только "команда"
(из шелл-срипта) и поиск зависимости на эту команду идёт через перебор
каталогов по default PATH.  Здесь осталось всё по-старому (как правило,
генерируется зависимость на имя пакета, содержащего "команду").


2ldv: лучше собрать его два раза, второй раз --with-stuff.

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

^ permalink raw reply	[flat|nested] 54+ messages in thread

end of thread, other threads:[~2008-03-09 19:07 UTC | newest]

Thread overview: 54+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-24 18:01 [devel] rpm 4.0.4-alt87 Alexey Tourbin
2008-02-24 19:29 ` [devel] [JT] subjunctive mode (rpm 4.0.4-alt87) Alexey Tourbin
2008-02-24 22:53   ` Alexey Rusakov
2008-02-25  3:33     ` Alexey Tourbin
2008-02-25  7:49       ` Alexey Rusakov
2008-03-09 16:12         ` Alexey Tourbin
2008-03-09 17:03           ` Alexey Rusakov
2008-03-09 18:08             ` Alexey Tourbin
2008-03-09 18:13               ` [devel] libgtk+2-common-2.12.8-alt1 Dmitry V. Levin
2008-03-09 19:07               ` [devel] [JT] subjunctive mode (rpm 4.0.4-alt87) Alexey Rusakov
2008-02-25 10:36 ` [devel] rpm 4.0.4-alt87 Stanislav Ievlev
2008-02-25 11:11   ` Mikhail Gusarov
2008-02-25 11:18   ` Dmitry V. Levin
2008-02-25 20:48 ` Dmitry V. Levin
2008-02-28 17:38   ` Alexey Tourbin
2008-02-27 16:46 ` Dmitry V. Levin
2008-02-28 18:00   ` Alexey Tourbin
2008-02-28 18:34     ` Dmitry V. Levin
2008-02-28 19:05       ` Alexey Tourbin
2008-02-28 20:52         ` [devel] Q: rpmi --chroot Dmitry V. Levin
2008-02-28 21:09           ` Alexey Gladkov
2008-02-28 21:15             ` Dmitry V. Levin
2008-02-28 21:52               ` Alexey Gladkov
2008-02-28 22:49                 ` Sergey Bolshakov
2008-02-28 23:08                   ` Sergey Bolshakov
2008-02-29  5:47                     ` Alexey Tourbin
2008-02-28 21:27             ` Alexey Tourbin
2008-02-28 21:38               ` Alexey Gladkov
2008-02-28 22:16                 ` Alexey Tourbin
2008-02-28 23:06                   ` Alexey Gladkov
2008-02-29  5:12                     ` Alexey Tourbin
2008-02-29  6:39                       ` Alexey Gladkov
2008-02-29 10:34       ` [devel] rpm 4.0.4-alt87 Kirill A. Shutemov
2008-03-01  9:45         ` Alexey Tourbin
2008-03-01 15:35           ` Mikhail Gusarov
2008-03-01 21:02             ` Alexander Bokovoy
2008-03-01 21:06               ` Mikhail Gusarov
2008-03-01 21:25               ` Alexey Tourbin
2008-03-01 21:45                 ` Alexey Gladkov
2008-03-01 22:02                   ` Alexey Tourbin
2008-03-01 22:09                     ` Alexey Gladkov
2008-03-01 22:25                       ` Led
2008-03-01 22:29                         ` Pavlov Konstantin
2008-03-02  7:30                         ` Alexander Bokovoy
2008-03-02  7:54                           ` Alexey Tourbin
2008-03-02  7:58                             ` Alexey Tourbin
2008-03-02  8:12                             ` Alexey Tourbin
2008-03-02  8:54                             ` Alexander Bokovoy
2008-03-02 13:30                             ` Led
2008-03-03 15:01                             ` [devel] embedded package (non-)management Michael Shigorin
2008-03-03 17:05                               ` Alexey Shabalin
2008-02-28 18:40   ` [devel] rpm 4.0.4-alt87 Alexey Tourbin
2008-02-28 18:44     ` Dmitry V. Levin
2008-02-28 19:11       ` Alexey Tourbin

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