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] Requires optimization/pruning
Date: Wed, 9 Mar 2011 14:24:13 +0300
Message-ID: <20110309112413.GH25716@altlinux.org> (raw)
In-Reply-To: <20110309112041.GA26140@osdn.org.ua>

On Wed, Mar 09, 2011 at 01:20:41PM +0200, Michael Shigorin wrote:
> On Sat, Feb 05, 2011 at 08:41:03AM +0300, Alexey Tourbin wrote:
> > Насчет оптимизации зависимостей между подпакетами.  Мне совсем недавно
> > пришло в голову, что зависимости можно оптимизировать ещё сильнее:
> > а именно, оптимизировать можно не только зависимости, удовлетворённые
> > через Provides, но и зависимости, удовлетворенные через Requires! Ж-)
> > 
> > Пусть например пакет rpm требует две зависимости
> > librpm = 4.0.4-alt16
> > libc.so.6()(64bit)
> > а пакет librpm в свою очередь требует среди прочих зависимость
> > libc.so.6()(64bit)
> > 
> > Тогда из пакета rpm можно удалить зависимость на libc.so.6()(64bit).
> > То есть некоторые зависимости подпакетов иногда "отоваривать", как говорит
> > лидер нации, через базовый подпакет.  Что в принципе имеет смысл.
> > 
> > Но там сложнее сделать, поскольку две Requires зависимости нельзя
> > сравнивать напрямую.  И это не будет хорошо работать с set-версиями,
> > потому что обычно будут разные/несравнимые подможества.  А оптимизация
> > зависимостей делается прежде всего, чтобы снизить нагрузку на
> > pkglist/pkgcache и apt, которая подскочила из-за set-версий.
> 
> Может, всё-таки обрезать в pkglist, а не в самих пакетах?
> 
> Тогда пакеты будут нести достаточную индивидуальную информацию,
> а pkglist-ы -- отражать достаточную совокупную на момент генерации.
> (мысль высказана led@ и мне кажется разумной)

Если рассматривать подпакеты как индивидуальные сущности, то обрезать
зависимости не следовало бы.  С другой стороны, пакеты с жесткой
зависимостью на на свои базовые подпакеты уже не являются "достаточно
индвивидуальным" сущностями - они строго привязаны к базовым подпакетам.

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

А то можно договориться до того, что, например, в gcc нельзя инлайнировать
функции.  Потому что функции несут индвивидуальную информацию.

А выгоды от оптимизации довольно-таки ощутимы.

$ rpm -qR gcc4.5-c++
gcc4.5 = 4.5.1-alt8
libstdc++4.5-devel = 4.5.1-alt8
rpmlib(PayloadIsLzma)
$

> Если вырезать из самих пакетов -- очень большой шанс напороться
> на ещё более неприятные грабли с разрывом цепочки, чем уже
> предсказанные и происшедшие с BuildRequires (см. тж. buildreq -u):
> http://lists.altlinux.org/pipermail/devel/2007-March/137289.html

Если пакет A строго требует пакеты B и C, а пакет B строго требует пакет C,
то удаление из пакета A зависимости на пакет С логически ничего не меняет:
а именно, сохраняется гарантия, что при установке или обновлении пакета A
будет установлен пакет C, как если бы он был напрямую указан в
зависимостях пакета A.

Другими словами, rpm работает правильно, а грабли в других местах -
это грабли в других местах.


  reply	other threads:[~2011-03-09 11:24 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-09 11:20 Michael Shigorin
2011-03-09 11:24 ` Alexey Tourbin [this message]
2011-03-09 14:01   ` Денис Смирнов
2011-03-09 15:31     ` Dmitry V. Levin
2011-03-11 19:29   ` [devel] Requires optimization/pruning seems broken Michael Shigorin
2011-03-11 20:20     ` [devel] Requires optimization/pruning is broken Dmitry V. Levin
2011-03-11 20:27       ` Michael Shigorin
2011-03-11 20:39         ` [devel] Requires optimization/pruning is severely broken Dmitry V. Levin
2011-03-11 20:53           ` REAL
2011-03-11 20:55             ` Dmitry V. Levin
2011-03-11 21:17               ` REAL
2011-03-11 20:37       ` [devel] Requires optimization/pruning is broken Yuri N. Sedunov

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=20110309112413.GH25716@altlinux.org \
    --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