On Sat, Jan 26, 2013 at 11:05:54PM +0400, Aleksey Avdeev wrote: > 26.01.2013 20:19, Sergey Vlasov пишет: > > On Sat, Jan 26, 2013 at 06:17:00PM +0400, Dmitry V. Levin wrote: > ... > >> Другими словами, предлагается модифицировать алгоритм, чтобы он работал > >> следующим образом: подпакет A исходного пакета S автоматически получает > >> строгую зависимость от подпакета B исходного пакета S, если выполнено любое > >> из следующих условий: > >> - у A есть зависимость от B; > >> - у A есть такая зависимость X с атрибутом RPMSENSE_FIND_REQUIRES, что B > >> является единственным подпакетом S, удовлетворяющим эту зависимость X. > > > > Это уже похоже на правильный вариант (в случае, если мантейнер по > > каким-то причинам хочет разрешить смешивать подпакеты разных версий, > > ему достаточно сделать для этих подпакетов виртуальные пакеты с > > зависимостями нужной строгости - например, с чем-то типа %abi_version > > в версии таких виртуальных пакетов). > > Т. е. требуемой мной ручкой будут зависимости на виртуальные пакеты? > Если её расширить и на файловые зависимости -- может быть вполне > приемлемо для меня. На мой взгляд, файловая зависимость в этом смысле ничем не отличается от Provides с именем - она не указывает на конкретный пакет и теоретически может предоставляться любым другим пакетом, поэтому такая зависимость, найденная в spec-файле, не должна заменяться на строгую зависимость на конкретный подпакет. А вот аналогичная зависимость, возвращённая find-requires, будет заменяться, если предоставляется одним подпакетом, и такую замену не сделал сам find-requires. Хотя тут возникает вопрос, правильно ли это, поскольку find-requires в подобных ситуациях обычно возвращает имя файла только в случае, если этот файл предоставляется более чем одним пакетом в репозитории, и жёсткая привязка к конкретному подпакету будет противоречить этой логике.