[devel] Java ABI-хеши в Provides/Requires для автоматического выявления пакетов, требующих пересборки
Ivan Khanas
xeno на altlinux.org
Чт Май 21 18:41:50 MSK 2026
Коллеги, сейчас у нас для Java-зависимостей в основном используется
координатная схема: пакет продолжает предоставлять
mvn(groupId:artifactId), пока сохраняются Maven-координаты артефакта.
Но такая схема не позволяет понять, сохранился ли фактический публичный
API внутри jar. В результате библиотека может формально оставаться тем
же самым провайдером mvn(...), хотя её бинарно значимый Java API уже
изменился, и проблема обнаруживается только позже, когда начинают
ломаться зависимые пакеты.
Предлагаю для Java-библиотек сделать механизм совместимости на уровне
RPM-зависимостей, аналогичный тому, как для so используется стабильный
ABI-контракт.
Для каждого пакета, который экспортирует mvn(groupId:artifactId), можно
дополнительно генерировать Provides от канонического снимка его
публичного/protected Java API, например java-abi(groupId:artifactId) =
<hash>.
Тогда зависимые Java-пакеты при сборке будут получать не только обычный
Requires: mvn(groupId:artifactId), но и точный Requires:
java-abi(groupId:artifactId) = <hash>, соответствующий ABI провайдера на
момент сборки.
После изменения API у библиотеки поменяется и java-abi(...)-хеш, и
зависимые пакеты автоматически окажутся несогласованными уже на уровне
RPM-зависимостей. Это даст формальный механизм для выявления случаев,
когда после обновления Java-артефакта требуется пересборка зависимых
пакетов.
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20260521/f9504be3/attachment.html>
Подробная информация о списке рассылки Devel