[devel] [PATCH] apt virtual packages

Alexey Tourbin at на altlinux.ru
Ср Дек 20 20:25:09 MSK 2006


On Sun, Dec 17, 2006 at 04:43:40PM +0300, Alexey Tourbin wrote:
> Этот патч был неправильным, потому что версии в ProvidesList на самом
> деле не отсортированы.  Вот правильный вариант патча (прицеплен).

В принципе этот патч почти хороший.  То есть его можно брать в очередную
сборку.

Есть другая идея.  В TryToChangeVer можно теперь вызывать не Find(),
который вернет наилучшую версию, а новый FindAll(), и применять к нему
технику &(Fix.ScoreSort).

Ну в общем это техника не совсем родная для апта, она содержится
в apt-0.5.15cnc6-alt-virtual-scores.patch.  Что-то я уже не понимаю что
у апта родное а что кто-то из нас добавил года три назад.

В общем смысл в чем.  Сейчас как происходит: когда просим ставить пакет
без версии, тогда вызывается Fix.ScoreSort.  А когда просим ставить
пакет с версией, тогда уже никакого ScoreSort нет.  Простейший вариант --
при попытке ставить виртуальный или реальный пакет с версией ставить
всегда реальный пакет с наибольшей реальной версией, удовлетворяющей
зависимость по требуемой версиеи.  Это то что сделано в [PATCH].  Второй
вариант -- ввести ScoreSort в TryToChangeVer.

В общем-то по идее НЕ надо делать различия между виртуальными и
реальными пакетам.  Одна и та же зависимость может разрешаться в N
реальных пактов и M виртуальных пакетов.  Тогда что делать?

Я тут думал о теории графов но на самом деле графа-то как такового нет.
Если нельзя однозначно сконструировать матрицу инциденций тогда это уже
не граф.
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: отсутствует
Url     : http://lists.altlinux.org/pipermail/devel/attachments/20061220/ebe1733d/attachment-0001.bin 


Подробная информация о списке рассылки Devel