[devel] Исправления для догоняющих архитектур
Evgeny Sinelnikov
sin на altlinux.org
Вс Дек 24 19:53:29 MSK 2023
Доброй ночи,
Некоторое время назад мы обсудили планы по "Статусу архитектур после
бранчевания":
https://lists.altlinux.org/pipermail/devel/2023-November/218067.html
По общему обсуждению в отдельных ветках хочу сделать некоторое резюме
так, как я его понял:
* возможность перевода догоняющих архитектур в основные определяется
двумя параметрами - готовностью сопровождающих (мейнтейнеров)
участвовать исправлении ошибок под эти архитектуры и наличием у них
оборудования при необходимости такой отладки;
* усилия, необходимые для такого сопровождения, в частности,
определяются готовностью апстримов принимать соответствующие
наработки;
* постепенный подход по сопровождению догоняющих архитектур предложен
в формате: "пусть они и дальше там сами догоняют, пока не созреют".
Последний вывод в резюме, в целом, разумен хотя и не выглядит
дружественным к наработкам коллег. Тем не менее, это вполне нормальное
пожелание - не создавать блокеры, когда и так проблем хватает.
Собственно, "проблема для всех" выглядит так, что если вчера
портированием занималась в сильной загрузке пара человек, то "подарок"
в виде уже портированных пакетов сопровождающим в основной сборочнице
не выглядит интересным, поскольку нагрузка по дальнейшей поддержке
этих исправлений перераспределяется теперь и на них.
С одной стороны это немного странно, конечно - бросать эту пару
человек в этом процессе, с другой - таков текущий выбор сообщества,
включая его готовность и возможности. Поэтому "проблема для этой пары
человек" выглядит, как необходимость отслеживать всю пакетную базу,
исправления для которой не вошли в основной Сизиф.
В связи с этим прошу, как минимум, принять участие в той части
пакетной базы, которая уже портирована и не требует особого участия в
реальном сопровождении. Догоняющая сборочница устроена так, что
src.rpm-пакеты используются для пересборки, как есть. И,
соответственно, если исправления в уже сделаны, то гораздо проще, если
эти исправления будут в основном пакете в Сизифе.
Таким образом я предлагаю следующий компромисс, для догоняющих сторочниц:
* все исправления в пакетах, по мере возможности, переносить в
основную пакетную базу сизифа;
* в случае проблем откатывать эти исправления или обращаться к
сопровождающим догоняющие сборочницы.
При таком подходе можно рассчитывать, что проблемы для догоняющих
сборочниц, не будут блокировать обновления пакетов в основном сизифе.
А "пара человек" будет хоть как-то разгружена. В результате практика
покажет насколько велики риски по сопровождению новых аппаратных
платформ.
На самом деле, на текущий момент всё ровно так и происходит, только не
все сопровождающие об этом извещены. На часть необходимых исправлений
заведены задачи в багзиле:
- https://bugzilla.altlinux.org/buglist.cgi?quicksearch=loongarch&list_id=83112
- https://bugzilla.altlinux.org/buglist.cgi?quicksearch=riscv&list_id=83115
А для loongarch64 часть таких исправлений уже подготовлена и требует
подтверждения со стороны основной команды сопровождающих:
$ ssh girar task ls --user=asheplyakov | grep EPERM
#336188 EPERM #2 sisyphus rpm-build.git=4.0.4.195-alt1
#336024 EPERM #2 sisyphus libopenh264.git=2.4.0-alt2
#336021 EPERM #2 sisyphus srpm=pcre2-10.42-alt3.src.rpm
#336013 EPERM #2 sisyphus srpm=libgda6-6.0.0-alt2.src.rpm
#336000 EPERM #2 sisyphus zfs.git=2.1.13-alt2
#335994 EPERM #2 sisyphus jq.git=1.7-alt2
#335992 EPERM #2 sisyphus MySQL.git=8.0.35-alt2
#335874 EPERM #2 sisyphus fossil.git=2.18-alt2
#335796 EPERM #2 sisyphus srpm=gengetopt-2.23-alt2.src.rpm
#335782 EPERM #2 sisyphus lua5.4.git=5.4.4-alt2
#335734 EPERM #2 sisyphus lua5.3.git=5.3.6-alt4
#335395 EPERM #2 sisyphus efibootmgr.git=18-alt2
#335287 EPERM #2 sisyphus gcc13.git=13.2.1-alt3
#335252 EPERM #2 sisyphus libvpx6.git=1.11.0-alt4
#335251 EPERM #2 sisyphus libuserspace-rcu.git=0.14.0-alt2
#335250 EPERM #3 sisyphus xorg-cf-files.git=1.0.7-alt5
#334550 EPERM #2 sisyphus rpm-macros-qt5-webengine.git=0.5-alt1
#334101 EPERM #2 sisyphus libclc.git=17.0.4-alt2
#333974 EPERM #2 sisyphus libjpeg-turbo.git=2.1.5.1-alt2
#333258 EPERM #2 sisyphus proxmox-websocket-tunnel.git=0.1.0-alt3
#333219 EPERM #2 sisyphus arm-none-eabi-gcc.git=12.3.1-alt2
#331076 EPERM #2 sisyphus glibc.git=2.38.0.27.750a45a783-alt2
#331016 EPERM #2 sisyphus binutils.git=2.41-alt2
#322967 EPERM #5 p10 unfs3.git=0.10.0-alt1
#320242 EPERM #2 sisyphus libffi.git=3.4.4-alt1
#317936 EPERM #3 sisyphus fakeroot.git=1.29-alt4
#305993 EPERM #2 sisyphus notmuch.git=0.31.4-alt2
"Полный" список для loongarch64 можно сейчас получить так:
$ curl -s http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/loongarch64/Sisyphus/loongarch64/SRPMS.classic/
| grep 'href=".*-alt.*\.port.*\.src\.rpm"' | sed 's,.*<a
href="\(.*\)".*,\1,'
Всего их для loongarch64 сейчас 130:
$ curl -s http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/loongarch64/Sisyphus/loongarch64/SRPMS.classic/
| grep 'href=".*-alt.*\.port.*\.src\.rpm"' | sed 's,.*<a
href="\(.*\)".*,\1,' | wc -l
130
"Полный" список для riscv64 можно сейчас получить так:
$ curl -s http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/riscv64/SRPMS.classic/
| grep 'href=".*-alt.*\.port.*\.src\.rpm"' | sed 's,.*<a
href="\(.*\)".*,\1,' | wc -l
15
Всего их для riscv64 сейчас 15:
$ curl -s http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/riscv64/SRPMS.classic/
| grep 'href=".*-alt.*\.port.*\.src\.rpm"' | sed 's,.*<a
href="\(.*\)".*,\1,' | wc -l
15
Степень этой "полноты" разная, поскольку объем портированной пакетной
базы разный:
$ curl -s http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/riscv64/Sisyphus/riscv64/SRPMS.classic/
| grep 'href=".*-alt.*\.src\.rpm"' | sed 's,.*<a href="\(.*\)".*,\1,'
| wc -l
5625
$ curl -s http://ftp.altlinux.org/pub/distributions/ALTLinux/ports/loongarch64/Sisyphus/loongarch64/SRPMS.classic/
| grep 'href=".*-alt.*\.src\.rpm"' | sed 's,.*<a href="\(.*\)".*,\1,'
| wc -l
8513
В то время как для основного Сизифа цифры такие:
$ curl -s http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/aarch64/SRPMS.classic/
| grep 'href=".*-alt.*\.src\.rpm"' | sed 's,.*<a href="\(.*\)".*,\1,'
| wc -l
9185
$ curl -s http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_64/SRPMS.classic/
| grep 'href=".*-alt.*\.src\.rpm"' | sed 's,.*<a href="\(.*\)".*,\1,'
| wc -l
9513
$ curl -s http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/ppc64le/SRPMS.classic/
| grep 'href=".*-alt.*\.src\.rpm"' | sed 's,.*<a href="\(.*\)".*,\1,'
| wc -l
9002
Ну, то есть, если критерий "наличие '.port' в релизе" верный, и нет
портированных пакетов без такой подстроки в релизе, то получаем, что:
- для loongarch64 портировано 92.68% пакетной базы (по сравнению с
aarch64) и 89.48% пакетной базы (по сравнению с x86_64), а также
94.56% пакетной базы (по сравнению с ppc64le), из которой 130 пакетов
требуют внесения патчей в основной Сизиф;
- для riscv64 портировано 61.24% (по сравнению с aarch64) и 59.12%
пакетной базы (по сравнению с x86_64), а также 62.48% пакетной базы
(по сравнению с ppc64le), из которой 15 пакетов требуют внесения
патчей в основной Сизиф;
Итого, предлагаю обратить внимание, что усилиям по портированию в
догоняющих архитектур можно посодействовать, забрав соответствующие
исправления. В некоторых случаях даже таски необходимые подготовлены и
всегда можно сделать "по-своему", поскольку в догоняющем режиме оно
так и происходит для сопровождающих догоняющие сборочницы, если они
сами соответствующие пакеты не сопровождают.
--
Sin (Sinelnikov Evgeny)
Подробная информация о списке рассылки Devel