[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