Чтобы создать отчет о покрытии (code coverage) по коду на C/C++, необходимо вызывать компилятор gcc или clang с флагом --coverage
. Рассмотрим, как сделать так, чтобы при сборке RPM получался пригодный для создания отчета исполняемый файл.
Читать далее Пересборка RPM с созданием отчета о покрытии кода в Росе
Рубрика: Сборка пакетов
Выступление на OSDAY-2023. Как сделать дистрибутивоуниверсальный пакет
Разработка прикладного программного обеспечения (ПО) для операционных систем и формирование «экосистемы» имеет большое значение для удовлетворения растущих потребности на российском рынке. Это позволит не только уменьшить зависимость от иностранных технологий, но и обеспечить большую суверенность в области информационных технологий, предоставляя государственным организациям и различным предприятиям надежные и безопасные решения.
Использование прикладного программного обеспечения невозможно без операционной системы, на которой оно будет функционировать. С другой стороны, ОС сама по себе не имеет большой полезности без установленного в ней прикладного ПО. Поэтому для обеспечения эффективной работы необходимо развивать готовые «экосистемы», где операционная система и прикладное ПО взаимодействуют синергетически и обеспечивают полную функциональность и производительность.
Важной составляющей развития «экосистемы» является технически правильная упаковка стороннего программного обеспечения. Большинство представленных на российском рынке операционных систем являются дистрибутивами GNU/Linux и используют пакетные менеджеры для управления программным обеспечением, поэтому стороннее ПО обычно упаковывают в пакеты, обычно в формате RPM и DEB. Дистрибутивы ROSA используют формат RPM. По сравнению с операционными системами без пакетного менеджера, например, Windows, в построенных с использованием пакетного менеджера операционных системах можно выделить следующие преимущества:
Читать далее Выступление на OSDAY-2023. Как сделать дистрибутивоуниверсальный пакет
debootstrap LoongNix 20
Разворачиваем rootfs (контейнер) c дистрибутивом Loongnix (под архитектуру loongarch) из-под этого же самого loongnix:
Читать далее debootstrap LoongNix 20
Ошибка при обновлении glibc: error: format not a string literal and no format arguments [-Werror=format-security]
В платформе rosa2021.1 была версия glibc 2.33, а в новой платформе rosa2023.1, разработку которой начали в самом конце декабря 2022 года, версия glibc 2.36. Компилятор пока что по-прежнему gcc 11. При пересборке некоторых пакетов возникла ошибка:
error: format not a string literal and no format arguments [-Werror=format-security]
Читать далее Ошибка при обновлении glibc: error: format not a string literal and no format arguments [-Werror=format-security]
Сборка бутылок
Вы, говорят, пакеты собираете? А бутылки не пробовали? Больше же платят.
Зависимости в RPM. Автоматически и вручную проставляемые Requires и Provides. Общая концепция
В системе зависимостей RPM-пакетов есть 2 основные сущности:
- Provides — предоставляемые пакетом «возможности»,
- Requires — зависимости пакета — какие «возможности» нужны для работы этого пакета.
В этой статье рассмотрим их общую концепцию. Это актуально и для пользователей, и для сборщиков пакетов. Рассматривать будем на примере дистрибутива ROSA 12 (rosa2021.1).
Читать далее Зависимости в RPM. Автоматически и вручную проставляемые Requires и Provides. Общая концепция
Цвета файлов RPM в мета-пакетах
Переделал пакет task-x11 в rosa2019.1:
Читать далее Цвета файлов RPM в мета-пакетах
Как работает генератор зависимостей и провайдов devel() RPM
Записал видео, в котором попытался показать, как работает генератор зависимостей (Requires) и Provides для RPM, автоматизирующий их проставление в RPM-пакетах. devel() зависимости и провайды в дистрибутиве ROSA были в rpm5, для rpm4 в ходе перехода на rpm4 написал работающий по похожей логике генератор на bash.
Рассматривается генератор: https://abf.io/import/devel-rpm-generators
Также показано, как запускать генератор вручную для его отладки.
Документация по генераторам: https://rpm.org/user_doc/dependency_generators
Читать далее Как работает генератор зависимостей и провайдов devel() RPM
Выступление на OSDAY-2020. Переход ROSA на RPM 4, задачи пакетной системы и ее улучшение.
Более восьми лет в дистрибутивах ROSA использовался пакетный менеджер RPM5 — форк RPM4, созданный Джеффом Джонсоном, автором RPM. Долгое время RPM5 развивался гораздо активнее своего родителя, что и обусловило его выбор для ROSA. Однако, постепенно активность по разработке RPM5 угасла, а RPM4 наоборот возродился и постепенно не только вобрал большинство интересных свойств RPM5, но и получил множество новых. В докладе рассмотрены задачи пакетной системы дистрибутива GNU/Linux, накопившиеся проблемы, пути их решения и новые улучшения, сделанные в ходе перехода на RPM 4.
PDF: osday-2020-mikhailnov.pdf
Читать далее Выступление на OSDAY-2020. Переход ROSA на RPM 4, задачи пакетной системы и ее улучшение.
Автоматический статический анализ с помощью PVS Studio при сборке RPM-пакетов
Возникла задача автоматизировать статический анализ пакетов в составе дистрибутива. Наилучший инструмент для этого — PVS Studio, потому что умеет перехватывать вызовы компилятора с помощью strace, таким образом, не требуя никаких изменений в сборочных скриптах. Сначала под наблюдением pvs-studio-analyzer
запускается сборка, собирает лог, затем запускается анализатор этого лога и формируется отчет. Рассмотрим, как такое настроить, избежав внесения правок в каждый пакет.
Читать далее Автоматический статический анализ с помощью PVS Studio при сборке RPM-пакетов