ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] rpm-build для сборки пакетов
@ 2021-09-07  8:44 Vitaly Lipatov
  2021-09-07  8:54 ` Dmitry V. Levin
  0 siblings, 1 reply; 15+ messages in thread
From: Vitaly Lipatov @ 2021-09-07  8:44 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Всем добрый день!

Как известно, для сборки rpm-пакетов нужна команда rpmbuild, находящаяся 
в пакете rpm-build. Так в прошлом веке придумали в RedHat. При этом 
пакет rpm-build у них вытягивает всё необходимое для сборки пакета (ну 
если посмотреть, что в зависимостях есть, например, patch и pkgconfig, 
то немного больше).

У нас же пакету rpm-build придана роль создателя базовой сборочной 
среды.
Причём базовая сборочная среда это не только gcc, autotools и make, это 
набор пакетов, который часто присутствует в сборочной среде:
«Плюс присутствия пакета в базовой сборочной среде один, но он большой:
поскольку образ базовой сборочной среды закэширован, установка пакета в 
составе базовой сборочной среды на порядки эффективнее как по времени, 
так и по сетевому трафику.»
https://bugzilla.altlinux.org/show_bug.cgi?id=34308#c13

Но среда для сборки rpm-пакета и сборочная среда это вещи несвязанные.

Сборочная среда нужна для тех команд, которые выполняются согласно спеку 
(обычно там configure && make, собирающий программу на C). У нас она 
формируется так: к базовой сборочной среде добавляются пакеты, указанные 
в BuildRequires.

А среды для сборки rpm-пакета по сути нет: это просто команда rpmbuild, 
которая умеет читать спек, раскрывать макросы, делить спек на части и 
выполнять их в шелле, класть получившиеся файлы в cpio и формировать 
файл в форме rpm.

Поскольку за 4 года мне не удалось пока найти понимания в предложении 
отделить формирование сборочной среды от пакета rpm-build, пока 
предлагаю такое решение в виде сборки дополнительных пакетов 
rpm-build-gcc и rpm-build-slim.

Всё, что требует сборки программ, то есть проектов с компиляцией, 
вписано в зависимости метапакета rpm-build-gcc. Возможно, стоит его 
назвать формирователем базовой сборочной среды, но пока конкурс на 
название никто не выиграл.

rpm-build-slim — это бинарная перепаковка пакета rpm-build, с 
исправлением зависимостей (убрано то, что перешло в rpm-build-gcc). 
Предполагается, что содержимое пакетов rpm-build и rpm-build-slim всегда 
идентично и они не могут расходиться по версиям.

Основная цель всего этого — не вносить в систему gcc и glibc-devel, 
когда нужно только собрать rpm-пакет. Например, для сборки 
rpm-build-slim не нужен компилятор, потому что он ничего не компилирует. 
Так же и для rpmrebuild из пакета rpmrebuild не нужен компилятор — он 
упаковывает файлы из системы. Также и для epm rebuild не нужен 
компилятор — он просто перепаковывает готовые пакеты (архивы).

Другими словами, пакеты собирают не только в сборочнице.

Ключевые моменты:
- и rpm-build и rpm-build-slim предоставляют /usr/bin/rpmbuild
- rpm-build-slim имеет BuildRequires: rpm-build = %version%release

Задание для проверки:
284378 TESTED #2 [test-only] sisyphus rpm-build-gcc.git=10.0-alt1 
rpm-build-slim.git=4.0.4-alt177

Основная бага по теме:
https://bugzilla.altlinux.org/34308

-- 
С уважением,
Виталий Липатов,
ALT Linux Team


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2021-09-08 21:23 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-07  8:44 [devel] rpm-build для сборки пакетов Vitaly Lipatov
2021-09-07  8:54 ` Dmitry V. Levin
2021-09-07  9:34   ` Alexey V. Vissarionov
2021-09-07 11:39   ` Vitaly Lipatov
2021-09-07 12:31     ` Dmitry V. Levin
2021-09-07 13:09       ` Dmitry V. Levin
2021-09-07 13:38         ` Vitaly Lipatov
2021-09-07 13:49       ` Alexey V. Vissarionov
2021-09-07 13:52         ` Dmitry V. Levin
2021-09-08  8:50           ` Vitaly Lipatov
2021-09-08  8:58             ` Dmitry V. Levin
2021-09-08 10:27               ` Dmitry V. Levin
2021-09-08 10:33                 ` Anton Farygin
2021-09-08 21:23                 ` Vladimir D. Seleznev
2021-09-08 11:52               ` Vitaly Lipatov

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git