[devel] Java autoreq/autoprov draft

Igor Vlasenko =?iso-8859-1?q?vlasenko_=CE=C1_imath=2Ekiev=2Eua?=
Чт Фев 15 17:36:58 MSK 2007


On Thu, 15 Feb 2007, Alexey Tourbin wrote:
> Откуда заключение, что если некий пакет требует /asdf/zxcv, то после
> перегенерации хешей apt автоматически увидит Provides: /asdf/zxcv,
> (если существует пакет с файлом /asdf/zxcv)?
> 
> Как раз таки никакой Provides не появится, насколько я знаю, будет
> unmet.  Впрочем, идея интересная.

Жаль, что apt так себя ведет :(

В любом случае, думаю, стоит внедрять автоматизированные 
java-requires/provides уже после релиза.

Считаю, что гораздо важнее сейчас добиться совместимости с 
JPackage, чтобы пользователь мог просто добавить в 
/etc/apt/sources.list
rpm     [JPackage] MIRROR VERSION/generic free
rpm-src [JPackage] MIRROR VERSION/generic free non-free
и мог свободно обновляться прямо с JPackage.

Обоснование:
-0------------------------------------------
Сейчас в ALT только 2 человека (я и Дамир) занимаются java,
и 2-м человекам просто не под силу *качественно* поддерживать 
те же 150 альтовских пакетов (тем более те же 550 пакетов 
Jpackage). 
Я вижу разумный выход в достижении такого уровня совместимости с 
JPackage, когда разработчик мог бы сосредоточиться на небольшом числе 
ключевых пакетов, а остальные пакеты механически импортировались бы 
(например, скриптом) из JPackage, добавляя в спек любые Альтовские 
фенечки, которые захотим добавить. 
Так все (RH,Fedora,Mandriva,...) и делают.
-0------------------------------------------

Примером служит хорошая сборка jpackage-utils от Дамира, 
там пакет причесан по-альтовски,
(тот же macros.jpackage в /etc/rpm/macros.d/jpackage)
но если кто-то захочет поставить пакет jpackage-utils 
из JPackage (например, поддержка новой JVM), 
то ничего в системе не сломается, те же макросы 
будут браться и из /etc/rpm/macros.jpackage.

кстати, думаю, ей пора уже в Сизиф.
{пересесение с rpm-build-java по
%_javadir       %_datadir/java                                
%_javadocdir    %_datadir/javadoc
не есть конфликтом, 
пересечение со старым java-common 
по директориям тоже есть конфликтом.
В перспективе завистмости на java-common 
и сам пакет java-common надо булет выбросить в
obsolete, и использовать только jpackage-utils.}
(Дамир: ?)

Генерирование Provides: специального вида java(xalan-j)
(в отличие от Requires:) такую совместимость сломают,
почему я и предлагал генерировать зависимости на файлы
вида
Requires: /usr/share/java/xalan-j.jar
Теперь предлагаю (из-за проблем с apt) пойти еще дальше и
генерировать тогда уже зависимости на имя пакета:
вида
Requires: xalan-j
(но только после релиза 3.1)
:) 

при этом зависимость на интерфейс, а не на конкретный пакет 
придется наверно разруливать 
/etc/buildreqs/packages/substitute.d
либо встроить в rpm-build-java аналогичный механизм.

Кстати. В текущем подходе есть некоторые грабли с зависимостями,
связанные с тем, что зависимости ищутся только в установленных
пакетах.
Надежннее было бы лезть чем-то вроде дизассемблера 
в собранные классы, и вытягивать зависимости прямо из них.
Например,
http://linux.softpedia.com/get/Programming/Disassemblers/jclassinfo-1156.shtml 
Пока пытаюсь понять, чем это можно сделать проще всего.

-- 

Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine









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