Bug 57639 - раскладка buildroot для упаковки как "флатпак-приложение"
Summary: раскладка buildroot для упаковки как "флатпак-приложение"
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: rpm-build (show other bugs)
Version: unstable
Hardware: all Linux
: P5 normal
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on: 57706
Blocks:
  Show dependency tree
 
Reported: 2026-01-25 16:39 MSK by Arseny Maslennikov
Modified: 2026-01-29 14:13 MSK (History)
11 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Arseny Maslennikov 2026-01-25 16:39:59 MSK
Ряд участников (и кандидатов в) ALT Linux Team взяли на себя инициативу организовать упаковку избранных пакетов из Сизифа и их публикацию в виде "флатпак-приложений".

Вот одна из причин этим заниматься: сообщество сможет предоставить пользователям ОС на бранч-платформах возможность одной командой (или одним кликом) на свой страх и риск установить себе пакет из Сизифа в изолированное окружение вместе с его зависимостями из Сизифа, не нарушая консистентность ОС и пакетов из платформы.

Как известно, флатпак-артефакты для распространения пользователям делятся на два типа: "приложение" (app) и "среда исполнения" (runtime). Первые могут содержать зависимости на вторые.
Файлы внутри артефактов первого и второго типов расположены по-разному; в частности, в "приложениях" присущие им файлы упакованы в каталог `/app`. (Исполняющая среда при помощи bind mount и других программных средств добивается, чтобы программы внутри видели FHS-дерево.) В "средах исполнения" файлы расположены как обычно; туда кладут, например, согласованный набор библиотек.
В этой баге мы говорим только о "флатпак-приложениях".

Будет целесообразно сделать так, чтобы спек от пакета из Сизифа, который уместно собрать не только в виде пакета, но и в виде флатпака, можно было собрать при помощи нашего rpmbuild, передав ему --define "_prefix /app". В такой сборке будет задействован немного другой макронабор, тот же набор brp (некоторые из них будут no-op, напр. brp-dupe-bin); а sisyphus-check будет неактуален.
Comment 1 Arseny Maslennikov 2026-01-25 16:43:27 MSK
Поступало предложение оформить, выражаясь образно, "точку входа в мир флатпаков" иначе: не переопределять префикс, а ввести режим:
  rpmbuild --define "_rootlayout fhs" "$@"
  rpmbuild --define "_rootlayout flatpak-app" "$@"
и при первом из указанных значений (оно же по умолчанию) упаковывать файлы для традиционных пакетов, как обычно, а при втором упаковывать файлы для flatpak. Надо подумать, лучше ли это, чем решить, что '_prefix /app' — это всегда наш случай. Но есть и подзадачи более высокого приоритета.
Comment 2 Vitaly Chikunov 2026-01-25 17:08:41 MSK
Почему это должен решать rpmbuild?
Comment 3 Arseny Maslennikov 2026-01-25 17:29:43 MSK
(In reply to Vitaly Chikunov from comment #2)
> Почему это должен решать rpmbuild?

В сизифе есть много успешно, по мере сил воспроизводимо собирающихся спеков с программами в духе [1][2][3].

[1] https://packages.altlinux.org/en/sisyphus/srpms/hieroglyphic/
[2] https://packages.altlinux.org/en/sisyphus/srpms/lemma/
[3] https://packages.altlinux.org/en/sisyphus/srpms/picplanner/

Макродвижок rpmbuild, как пока представляется, позволяет малыми усилиями, собрав наш спек с немного другим значением парочки макросов, получить пакет, дерево файлов которого будет пригодно для перекладывания в F-артефакт. Станет не нужно мейнтейнить два разных build definition: одно на базе rpmspec, другое на синтаксисе YAML (yikes).

А вот зависимости будут устроены по-другому; нужно будет конвертировать граф rpm-ных зависимостей в такой, что приличествует коллекции "приложений" и "рантаймов" под рабочим кодовым названием, допустим, "альтхаб", которая естественно возникнет. И мне теоретически кажется, что rpmbuild здесь ничем не поможет и не помешает, но, полагаю, прямые участники проекта смогут прокомментировать яснее.
Comment 4 Arseny Maslennikov 2026-01-25 17:32:45 MSK
(In reply to Arseny Maslennikov from comment #0)
> В этой баге мы говорим только о "флатпак-приложениях".
> 
> ...В такой сборке будет задействован немного другой макронабор, тот же набор
> brp (некоторые из них будут no-op, напр. brp-dupe-bin); а sisyphus-check будет
> неактуален.
...в неизменном виде. Некоторые проверки станут не нужны, появятся новые; это будет форк sisyphus-check.
Comment 5 Arseny Maslennikov 2026-01-25 17:50:20 MSK
(In reply to Arseny Maslennikov from comment #3)
> (In reply to Vitaly Chikunov from comment #2)
> > Почему это должен решать rpmbuild?
> В сизифе есть много успешно, по мере сил воспроизводимо собирающихся спеков
> с программами в духе [1][2][3].
> 
> [1] https://packages.altlinux.org/en/sisyphus/srpms/hieroglyphic/
> [2] https://packages.altlinux.org/en/sisyphus/srpms/lemma/
> [3] https://packages.altlinux.org/en/sisyphus/srpms/picplanner/
> 
> Макродвижок rpmbuild, как пока представляется, позволяет малыми усилиями,
> собрав наш спек с немного другим значением парочки макросов, получить пакет,
> дерево файлов которого будет пригодно для перекладывания в F-артефакт.
> Станет не нужно мейнтейнить два разных build definition: одно на базе
> rpmspec, другое на синтаксисе YAML (yikes).
Если разница будет слишком большой и потребует сопровождения, то мы унесём макроопределения для "ф-приложений" в отдельный пакет rpmb-config-что-то, чтобы не мозолили глаза в репозитории rpm-build. (Вообще, держать macros.in, platform.in, etc. в другом пакете — это в целом хорошая идея.)
Comment 6 Vladimir Romanov 2026-01-25 18:31:46 MSK
(Ответ для Arseny Maslennikov на комментарий #3)
> (In reply to Vitaly Chikunov from comment #2)
> > Почему это должен решать rpmbuild?
> 
> В сизифе есть много успешно, по мере сил воспроизводимо собирающихся спеков
> с программами в духе [1][2][3].
> 
> [1] https://packages.altlinux.org/en/sisyphus/srpms/hieroglyphic/
> [2] https://packages.altlinux.org/en/sisyphus/srpms/lemma/
> [3] https://packages.altlinux.org/en/sisyphus/srpms/picplanner/
> 
> Макродвижок rpmbuild, как пока представляется, позволяет малыми усилиями,
> собрав наш спек с немного другим значением парочки макросов, получить пакет,
> дерево файлов которого будет пригодно для перекладывания в F-артефакт.
> Станет не нужно мейнтейнить два разных build definition: одно на базе
> rpmspec, другое на синтаксисе YAML (yikes).
> 
> А вот зависимости будут устроены по-другому; нужно будет конвертировать граф
> rpm-ных зависимостей в такой, что приличествует коллекции "приложений" и
> "рантаймов" под рабочим кодовым названием, допустим, "альтхаб", которая
> естественно возникнет. И мне теоретически кажется, что rpmbuild здесь ничем
> не поможет и не помешает, но, полагаю, прямые участники проекта смогут
> прокомментировать яснее.

То есть есть желание перевести yaml манифесты в формат rpm спеков?
Comment 7 Arseny Maslennikov 2026-01-25 18:57:16 MSK
(In reply to Vladimir Romanov from comment #6)
> (Ответ для Arseny Maslennikov на комментарий #3)
> > (In reply to Vitaly Chikunov from comment #2)
> > > Почему это должен решать rpmbuild?
> > 
> > В сизифе есть много успешно, по мере сил воспроизводимо собирающихся спеков
> > с программами в духе [1][2][3].
> > 
> > [1] https://packages.altlinux.org/en/sisyphus/srpms/hieroglyphic/
> > [2] https://packages.altlinux.org/en/sisyphus/srpms/lemma/
> > [3] https://packages.altlinux.org/en/sisyphus/srpms/picplanner/
> > 
> > Макродвижок rpmbuild, как пока представляется, позволяет малыми усилиями,
> > собрав наш спек с немного другим значением парочки макросов, получить пакет,
> > дерево файлов которого будет пригодно для перекладывания в F-артефакт.
> > Станет не нужно мейнтейнить два разных build definition: одно на базе
> > rpmspec, другое на синтаксисе YAML (yikes).
> > 
> > А вот зависимости будут устроены по-другому; нужно будет конвертировать граф
> > rpm-ных зависимостей в такой, что приличествует коллекции "приложений" и
> > "рантаймов" под рабочим кодовым названием, допустим, "альтхаб", которая
> > естественно возникнет. И мне теоретически кажется, что rpmbuild здесь ничем
> > не поможет и не помешает, но, полагаю, прямые участники проекта смогут
> > прокомментировать яснее.
> 
> То есть есть желание перевести yaml манифесты в формат rpm спеков?
Наша team накопила большой опыт (преимущественно негативный) машинного анализа и обработки rpm-спеков; в общем случае они ему без eval не поддаются, а частичный анализ по принципу "надежда умирает последней", как в проекте gear, хрупок. Так что у меня такого желания нет, и я никому этот тернистый путь не рекомендовал бы.

YAML тоже страдает от подобных проблем[1][2][3], только он ещё и с трудом человекопознаваемый, склонен мешать человеку по принципу револьвера с одним патроном: почти всегда щелчок, а иногда [ДАННЫЕ УДАЛЕНЫ]. Это чуть ли не худший тип стохастических явлений с т. з. человеческой психики.

  [ Можно в теории (выходим за пределы онтопика, конечно) захотеть построить подмножество yaml, которое однозначно и очевидно парсится без исполнения произвольного кода, сохранив те свойства, которым этот синтаксис удобен и вообще в рамках сизифа уезжать туда (генерировать из него и rpm-спеки, и флатпак-спеки). Но за эту high toll, high reward метазадачу никто не брался, а когда предварительно обсуждали, тяготели скорее к debian control. ]

[1] https://www.ohyaml.wtf/
[2] https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell
[3] https://github.com/ghuntley/noyaml/blob/db7b929f99c42e0f792c7322438297ec9ee6331d/index.html

В рамках сабжа этой баги точно ничего переводить никуда не надо. :)
Comment 8 Arseny Maslennikov 2026-01-25 19:12:55 MSK
(In reply to Arseny Maslennikov from comment #7)
> (In reply to Vladimir Romanov from comment #6)
> > (Ответ для Arseny Maslennikov на комментарий #3)
> > > Макродвижок rpmbuild, как пока представляется, позволяет малыми усилиями,
> > > собрав наш спек с немного другим значением парочки макросов, получить пакет,
> > > дерево файлов которого будет пригодно для перекладывания в F-артефакт.
> > > Станет не нужно мейнтейнить два разных build definition: одно на базе
> > > rpmspec, другое на синтаксисе YAML (yikes).
> > > 
> > > А вот зависимости будут устроены по-другому; нужно будет конвертировать граф
> > > rpm-ных зависимостей в такой, что приличествует коллекции "приложений" и
> > > "рантаймов" под рабочим кодовым названием, допустим, "альтхаб", которая
> > > естественно возникнет. И мне теоретически кажется, что rpmbuild здесь ничем
> > > не поможет и не помешает, но, полагаю, прямые участники проекта смогут
> > > прокомментировать яснее.
> > 
> > То есть есть желание перевести yaml манифесты в формат rpm спеков?
> 
> В рамках сабжа этой баги точно ничего переводить никуда не надо. :)
Сабж связан с тем, что (по условию) у нас уже написаны спеки, и мы надеемся их переиспользовать, чтобы пакеты из сизифа появились в коллекции флатпаков.