Bug 42552

Summary: Add option --keep-going to continue build even with errors
Product: Infrastructure Reporter: Vitaly Chikunov <vt>
Component: girarAssignee: placeholder <placeholder>
Status: NEW --- QA Contact: Andrey Cherepanov <cas>
Severity: normal    
Priority: P5 CC: glebfm, grenka, iv, ldv, rider, zerg
Version: unspecified   
Hardware: x86_64   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=42608

Description Vitaly Chikunov 2022-04-22 16:33:09 MSK
Currently --fail-late stops build on architecture where previously build failure occurred.

Please add option, like --keep-going, to continue build all subtasks even if other tasks are failed.

This will be useful to build new major kernel versions with many external modules (for example, we have 42 packages for std-def)
- Failed tasks not need to be deleted to continue build - thus, their build logs can be inspected later (when we announce build of new kernel);
- There will be no need to delete sub-task and re-run task to continue test build multiple times after each failure (I think I did this >10 times and this took whole day of real time).
Comment 1 Sergey V Turchin 2022-04-22 16:38:23 MSK
Есть же --swift
Comment 2 Sergey V Turchin 2022-04-22 16:39:41 MSK
Точнее, уже --hurry
Comment 3 Vitaly Chikunov 2022-04-22 16:54:48 MSK
"Hurry включает режим swift, в котором сборочница считает, что если пакет был хоть раз собран, то no need to rebuild." На сколько я понял из с Глебом сейчас другого варианта продолжения сборки кроме удаления failed subtasks нет.
Comment 4 Grigory Ustinov 2022-04-22 17:26:08 MSK
Поддерживаю.

Я когда-то себе написал скрипт, который каждые n секунд рсинкает events.M.1.log, грепает ключевую фразу task #****** for sisyphus FAILED и если получилось, грепает какой сабтаск свалился, удаляет его, повышает счётчик M и запускает таск снова. Можно заодно рсинкать и логи фейлов.
Comment 5 Anton Farygin 2022-04-22 17:31:36 MSK
да, я бы тоже не отказался от такой опции.

Потом было бы удобно удалить из задания упавшие подзадания, добавить их в конец и запустить заново.
Comment 6 Sergey V Turchin 2022-04-25 10:39:53 MSK
А я бы ещё при этом делал репозиторий независимо от результатов сборки, чтобы можно было сразу же работать над оставшимися пакетами.

Ведь те, что собрались, зачастую нужны для сборки остальных.
Comment 7 Ivan A. Melnikov 2023-11-23 12:56:40 MSK
keep_going это очень круто; когда-то я сделал такой флаг для sisyphus_mipsel и sisyphus_riscv64. Для sisyphus_loongarch64 реализация выглядит так:

https://git.altlinux.org/people/iv/packages/girar.git?a=commitdiff;h=af466d56756672c15a13e8da0a2392a923cc363c

(в этом коммите нет интерфейса для пользователей).

Очень помогает при массовых пересборках и приезжающих из основного Сизифа огромных таксках.
Comment 8 Ivan A. Melnikov 2023-11-23 12:58:09 MSK
(In reply to Sergey V Turchin from comment #6)
> А я бы ещё при этом делал репозиторий независимо от результатов сборки,
> чтобы можно было сразу же работать над оставшимися пакетами.

+1, можно было бы подключить таску к хешеру и чинить то, что там не собралось. Но это кажется темой отдельной баги. Такая есть?