[devel] Q: jpp FTBFS packages in Sisyphus
Igor Vlasenko
vlasenko на imath.kiev.ua
Ср Апр 7 10:35:11 MSK 2021
On Sat, Apr 03, 2021 at 05:01:42PM +0300, Dmitry V. Levin wrote:
> Скажите, пожалуйста, что вы планируете делать с многочисленными jpp-пакетами
> в Sisyphus, которые были массово удалены из Федоры в позапрошлом году
> из-за несобираемости?
Прошу прощения за задержку с ответом.
Признаюсь, был в ступоре, и не мог найти слов,
особенно, читая некоторые комментарии.
Сам по себе мне этот вопрос напомнил классический вопрос с подковыркой
"Вы уже бросили пить/курить/другими непотребствами заниматься или еще нет?"
в котором содержится как истинное утверждение, что собеседник
пьет/курит/другими непотребствами занимается, вопрос лишь в том,
бросит это дело или нет.
В вопросе выше тоже может показаться,
что с Сизифом происходит что-то нехорошее.
Поэтому понимая, что парой слов не отделаться,
долго обдумывал, как правильно написать ответ
и решил написать 2 письма, и первое конкретно по java.
Сразу напомню, что сначала проект JPackage, а теперь Федора -
это стандарт де-факто для полноценной сборки java кода из исходников
в практически всех дистрибутивах на основе rpm.
Теперь по вопросу выше.
Хочу пояснить вопрос на примере поискового движка lucene.
В Сизифе lucene представлен аж в 4-х пакетах lucene{3,4,5,7} разных
версий по сравнению с двумя версиями (3 и 7) в fc31.
Почему бы по этой логике не выкинуть из Сизифа хотя бы версии 4 и 5?
Ответ - нельзя, пока они используются, как сборочные зависимости.
Если их выкинуть, какие-то пакеты перестанут собираться.
Почему же их нет в Федоре? Потому что там требования по
собираемости ниже. К примеру, сломанный в fc29 пакет будут удалять,
как помню, не ранее бранчевания на fc33.
В принципе, из-за гарантии WORA (Write Once Run Anywhere) в Java
не такая уж и плохая политика именно для Java.
Соответственно, какие-то пакеты в Федоре сломались при обновлении
lucene 4 -> 5, какие-то при обновлении lucene 5 -> 6,7.
Но у нас Сизиф, и для обеспечения собираемости пакетов я дополнительно
собирал в сизиф свои костыли-пакеты lucene 4 и 5, после чего
дополнительно патчил сломанные в Федоре пакеты,
чтобы они нормально собирались в Сизифе.
Теперь о пакетах, которые были массово удалены из Федоры в позапрошлом году
из-за несобираемости. Это была не просто несобираемость,
а несобираемость из-за перехода в Федоре на java11 как основной JDK.
Это было прогрессивное политическое решение, наподобие перехода на
systemd. Но на время адаптации страдают пользователи.
В Сизифе этот переход тоже происходит, но он смягчен тем,
что в Сизифе у нас есть механизмы выбора JDK
и эти пакеты прекрасно собираются с помощью java8.
Теперь о FTBFS.
Надеюсь, понятно, что для возможности собирать как можно больше
пакетов полностью из исходников, без привлечения сторонних бинарных
сборок, в java репозитории приходится держать большое количество
пакетов, единственное достоинство которых - быть чьей-то сборочной
зависимостью.
И вот когда такой пакет попадает в FTBFS,
то иногда возникнуть дилемма: чинить или не чинить?
Хороший пример - пакет sbt. Я его за время его жизни чинил 7 раз.
И сейчас в #264657 у меня подготовлена сборка
sbt-0.13.1-alt7_9.1jpp8.src.rpm
которая собирается везде, кроме armh, где присходит
какой-то подземный стук (не лечится armh хаком от zerg@).
[i586]: build OK
[aarch64]: build OK
[x86_64]: build OK
[ppc64le]: build OK
[armh] build FAILED
task #264657 for sisyphus FAILED
И здесь уже при починке малой кровью не обойтись.
С другой стороны, в Федоре сейчас обошлись без sbt.
Поэтому следующее большое обновление просто приведет
к тому, что sbt станет не нужен, и я его просто удалю.
Поэтому нужные пакеты нужно чинить, а такие пакеты, как sbt чиню без
фанатизма, когда это не так сложно, ведь в запущенных случаях
лучше вложить свое время в большое обновление.
Здесь главное, чтобы вы не помогали роботу руками,
чтобы пройдя по цепочке зависимостей, не удалить нужный для большого
обновления пакет.
--
I V
Подробная информация о списке рассылки Devel