Devel rosa2023.1

From Rosalab Wiki
Jump to: navigation, search

Development of platform rosa2023.1

Description

English: This page describes plans, problems and solutions about development of the platform rosa2023.1. This page tries to be understandable for both Russian and non-Russian speaking contributors of ROSA Linux.

Russian: Эта страница описывает планы, проблемы и их решения по разработке новой платформы rosa2023.1. Страница пытается быть понятной и русско, и нерусскоговорящим контрибьюторам Росы.

rootfs & ISO of rosa2023.1

Built on 17.01.2023, 15:45-19:00 MSK, glibc 2.36-5.git93967a.1, Linux kernel 5.15.79 (in ISOs).

Developemnt ISOs! Образы для разработчиков!

rootfs x86_64

rootfs aarch64

rootfs i686

ISO server (no DE) x86_64

ISO server (no DE) i686

ISO LXQt x86_64

ISO LXQt i686

ISO XFCE x86_64

ISO XFCE x86_64 minimal

ISO KDE Plasma5 x86_64

ISO GNOME x86_64

ISO MATE x86_64

ISO Cinnamon x86_64

Updating libraries

How to update a library package in rosa2023.1? / Как обновить пакет с библиотекой в платформе rosa2023.1?

  • Make a list of library consumers / Составьте список потребителей библиотеки:
 sudo dnf repoquery --qf '%{sourcerpm}' --whatrequires lib64foo0 |  rev | cut -d '-' -f 3- | rev | sort -u

or:

 sudo dnf repoquery --qf '%{sourcerpm}' --whatrequires 'libfoo.so.0()(64bit)' |  rev | cut -d '-' -f 3- | rev | sort -u
  • Update the library / Обновите библиотеку
  • Rebuild consumers. Raising the Release tag is not obligatory (but, if you raise it, write a commit message like: "Rebuild with libfoo version N") / Пересоберите потребителей. Поднимать тег Release необязательно (но, если поднимаете его, напишите сообщение коммита вида: "Rebuild with libfoo version N", где libfoo — название библиотеки, N — новая версия)

Work

Work in progress

This section contains things that are currently being done / В этом разделе перечислено то, над чем идет работа прямо сейчас.

Python 3.11

Update python3 from 3.8 to 3.11 (ilfat@).

На python3 завязано очень многое, в т.ч. даже пакетный менеджер, поэтому обновлять его нужно очень аккуратно.

Рекомендуется приблизительно следующая методика обновления Python / The following methodology of updating Python is recommended:

  • Обновить сам пакет python3, закоммитить в git, сделать сборки для всех архитектура БЕЗ публикации, но с контейнерами
  • По описанной в пункте 1.3 "Updating libraries" методике выявить имена SRPM (проектов) всех зависящих от libpython3.8.so.1.0 пакетов
  • Выявить все пакеты, содержащие python-модули (с файлами по путям /usr/lib64/python3.8/ и /usr/lib/python3.8/)
  • Составить отсортированный по алфавиту список из всех этих пакетов (sort -u) (сортировка по алфавиту удобна тем, что по тому, какие пакеты собираются в масс-билде, примерно понятно, сколько процентов прошло и осталось)
  • Обновить и/или пересобрать с Python 3.11 присутствующие в сборке большинства python-пакетов пакеты, например, python3-setuptools
  • Запустить масс-билд (https://abf.io/platforms/rosa2023.1/mass_builds/new), в котором:
    • сделать человекопонятное название с номером 1 или 1.0 (пример: "python3 3.11 1.0")
    • вставить список пакетов
    • подключить дополнительные сборки (контейнеры) с python3 3.11, python3-setuptools и др. пакетами
    • автоматическая публикация в testing
    • галку "Использовать кешированный chroot" поставить (не снимать)
    • галку "Поднимать тег Release" поставить (иначе будет путаница)
    • другие галки, в т.ч. про запуск автотестов, не ставить
    • галку про подключение testing-репозитория при первом запуске, наверное, лучше тоже не ставить, т.к. иначе часто будет ошибка загрузки метаданных из-за установки сборочных зависимостей во время публикации соседней сборки)
  • возникнет ситуация, что многие пакеты не соберутся из-за того, что требуемые им зависимости еще не собраны с python 3.11
  • дожидаемся окончания масс-билда (как быть с медленно собирающимися архитектурами — riscv64, e2kv4 — на усмотрение собирающего; наверное, проще сначала все сделать на основных, а потом на них)
  • публикуем масс-билд (но все сборки должны и так оказаться уже опубликованными в testing, если что, обращаемся к hisshadow@) (в НЕ testing, т.е. в release, ВАЖНО пока что не публиковать!)
  • внизу страницы масс-билда на ABF скачиваем csv с результатами сборки
  • с помощью awk -F';;' '{print $номер_колонки}' и/или импортирования в LibreOffice Calc (кодировка UTF-8, разделитель ";", галка "Объединять разделители") составляем отсортированный по алфавиту список не собравшихся проектов
  • запускаем новый масс-билд по составленному списку с человекопонятным названием:
    • в названии тот же текст, но увеличена нумерация, например: "python3 3.11 1.1"
    • поставить галку про подключение testing-репозитория
  • повторить итерацию сколько-то раз
  • собрать ISO-образ с параметром ENABLE_TESTING_REPOS=1
  • проверить, что в нем:
    • работает пакетный менеджер dnf (сборка образа будет производиться средствами rosa2021.1, а не rosa2023.1, поэтому сам факт собираемости образа не будет говорить о работсопособности пакетной системы)
    • работает установщик Anaconda
    • работает rpmbuild и может собрать какой-либо python3-пакет
    • проверить еще что-нибудь
  • если будут проблемы, то опубликовать исправления в testing и повторить итерацию
  • дать собранный с testing образ кому-нибудь (например, mikhailnov) на изучение, как второй паре глаз
  • если все будет хорошо, то попросить hisshadow@ опубликовать все пакеты из testing в release

python-foo packages

Starting from rosa2021.1, packages with python modules must be naed either python3-foo or python2-foo, not python-foo. There are some python2 packages named python-foo, we should either rename or drop them. / Начиная с платформы rosa2021.1, пакеты с python-модулями должны называться либо python2-foo, либо python3-foo, не python-foo. Есть некоторое количество пакетов с названием python-foo, их надо либо переименовать, либо удалить.

When renaming a subpackage from python-foo to python2-foo, use the following macro / при переименовании пакета из python-foo в python2-foo используйте макрос:

%py2_migration_meta python2-foo

which will add / который добавит:

Provides: python-foo = %{EVRD} 
Conflicts: python-foo < %{EVRD}
Obsoletes: python-foo < %{EVRD}

When renaming a subpackage from python-foo to python3-foo, add / при переименовании пакета из python-foo в python3-foo добавьте:

Provides: python-foo = %{EVRD} 
Conflicts: python-foo < version-release
Obsoletes: python-foo < version-release

where version-release is the last version-release when it was named python-foo / где version-release — это последняя версия-релиз, когда подпакет назывался python-foo.

icu 72

Update icu from 71 to 72 (abondrov@)

icu71 will be a separate package untill full upgrade is not finished.

Finished tasks

This section contains things that have already been done / В этом разделе перечислено то, работа над чем уже завершена.

glibc 2.36 and 2.37

glibc has been updated to v2.36. A mass rebuild of packages depending from libc.so.6 has been done, failed packages have been fixed: https://disk.yandex.ru/i/mUs0im6SNSTmFQ

Then glibc was updated from 2.36 to recently released 2.37, but it is a minor update, hope that there won't be new build fails because of this.

LLVM

Update llvm to 15 (done). Merge libcxx, lld etc. into one project — llvm.

Working ISO and rootfs

Installable systems with new glibc and working Anaconda installer have been made / Были сделаны установочные образы с новой glibc.

rootfs are also available (for containers and chroots) / roootfs (для контейнеров и чрутов) также доступны.

Links are above / Ссылки выше.

binutils 2.40

binutils package has been updated from v2.38 to v2.40 / Пакет binutils был обновлен с 2.38 до 2.40.

Plans

This section contains plans for future work / В этом разделе перечислены планы по дальнейшей работе над платформой rosa2023.1.

openssl 3.0

Update openssl from 1.1 to 3.0 (after python!)

KDE 5

Update KDE 5 stack (Victorr@)

/usr merge

Make /bin, /sbin, /lib, /lib64 be symlinks.

glibc is already prepared for it. Probably remove https://abf.io/import/glibc/commit/bcda4c102691515afde452b4076b038281d495fd when /usr is fully merged.

perl

Update Perl

Ruby

Update Ruby