ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] kde4games & dep optimizations
@ 2011-02-06  3:31 Alexey Tourbin
  2011-02-06 21:27 ` Dmitry V. Levin
  0 siblings, 1 reply; 7+ messages in thread
From: Alexey Tourbin @ 2011-02-06  3:31 UTC (permalink / raw)
  To: devel

Новый rpm выполняет оптимизацию зависимостей между подпакетами: если
пакет A содержит строгую зависимость на libA (Requires: libA =
%version-%release), то все остальные зависимости пакета A,
которые разрешаются в libA, - например Requires: libA.so.0, -
удаляются.

В этом примере названия пакетов A и libA условны, оптимизация работает
для пакетов с любыми именами (я выбрал имена A и libA, чтобы пример
был интуитивно понятнее).

Оптимизация в том числе выстраивает цепочки строгих зависимостей:
A -> libA0 -> libA1 -> ... libAN,
чтобы удалить лишние зависимости пакета A, разрешающиеся в libAN
(в случае, если пакет A требует только libA0, но libA0 в свою очередь
требует libA1 и т.д.)

К сожалению, для некоторых пакетов эта оптимизация не сработает,
потому что у этих пакетов нет строгих зависимостей между подпакетами.
Как ни странно, одним из первых пакетов такого рода мне попался kde4games
(в то время как kde4 у нас собирается с очень жесткими зависимостями).

$ hsh-install kde4games-bovo
...
$ hsh-run -- rpm -e --test libkdegames4
error: removing these packages would break dependencies:
	libkdegames.so.5()(64bit) >= set:okXdnAZtmOhWJfrPk02zqtrC0apKQoS0 is needed by kde4games-bovo-4.5.5-alt1
$ hsh-run -- rpm -q --qf '%{SOURCERPM}\n' kde4games-bovo libkdegames4
kde4games-4.5.5-alt1.src.rpm
kde4games-4.5.5-alt1.src.rpm
$

Отсюда видно, что подпакеты kde4games-bovo и libkdegames4 собираются из
одного исходного пакета, и между ними существует soname-зависимость с
set-версией; но в тоже время нет ни одной строгой зависимости на имя
пакета с библиотекой - ни прямой, ни по цепочке.

Таким образом, во всех kde4games-* подпакетах не удастся соптимизировать
дорогостоящую зависимость с set-версией (которая занимает больше места,
и для проверки которой будет выполняться rpmsetcmp) на более строгую
и дешевую зависимость - имя пакета с версией (для проверки такой версии
обычно будет достаточно strcmp).

Получается, что мои усилия по оптимизации зависимостей во многом
бесполезны, потому что некоторые толстые пакеты собраны не по понятиям.

Интересно, что тогда дальше делать?  С одной стороны, следовало бы
исправить такие пакеты (для этого нужно сначала научиться их
диагностировать).  С другой стороны, если мейнтейнерам это в голову не
приходит, то может лучше научить rpm автоматически вставлять строгие
зависимости туда, где они будут иметь смысл?


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

end of thread, other threads:[~2011-02-14 14:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-06  3:31 [devel] kde4games & dep optimizations Alexey Tourbin
2011-02-06 21:27 ` Dmitry V. Levin
2011-02-06 23:55   ` Alexey Tourbin
2011-02-07  0:07     ` Dmitry V. Levin
2011-02-08  5:13   ` Alexey Tourbin
2011-02-12 13:13   ` Alexey Tourbin
2011-02-14 14:15     ` Sergey V Turchin

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