ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Vitaly Lipatov <lav@altlinux.ru>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: [devel] rpm-build для сборки пакетов
Date: Tue, 07 Sep 2021 11:44:29 +0300
Message-ID: <b1d5e82556a3c6ebb05ca568f3c5dc7c@altlinux.ru> (raw)

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

Как известно, для сборки 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


             reply	other threads:[~2021-09-07  8:44 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-07  8:44 Vitaly Lipatov [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b1d5e82556a3c6ebb05ca568f3c5dc7c@altlinux.ru \
    --to=lav@altlinux.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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