ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: "Ivan A. Melnikov" <iv@altlinux.org>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] [devel-ports] renoarch: noarch.rpm -> src.rpm
Date: Mon, 15 Nov 2021 17:21:09 +0400
Message-ID: <20211115132109.bq5t2jhg4lzveeox@titan.localdomain> (raw)
In-Reply-To: <29fa8faf-cc8c-67ea-d6bb-6fb9cbd0dfd1@basealt.ru>

On Mon, Nov 15, 2021 at 03:15:18PM +0300, Anton Farygin wrote:
> On 15.11.2021 14:14, Ivan A. Melnikov wrote:
> > К тому же, как тут пишет рядом rider@, эту задачу сложно
> > формализовать. Зависимости могут быть неточными (когда
> > написано BR: foo, а на самом деле требуется foo > 2.0),
> > специфичными для платформы и так далее. Циклы надо как-то
> > разрывать опять же.
> 
> На самом деле нужно написать solver, который будет разделять бинарные
> жёсткие зависимости и сборочные зависимости.
> 
> unmet'ы при сборке вылезают из-за бинарых (библиотечных) зависимостей и
> именно по ним исходные пакеты надо упорядочивать.
> 
> Мы сделали попытку написать такой solver (oneandhalf опция в rdb), но циклы
> оно всё равно рвать не умеет.
> 
> По идее можно попробовать добавить параметр к запросу, который позволит
> порвать циклы вручную. Или опцию, которая будет искать и рвать все
> циклические зависимости и сортировать без их учёта).
> 
> Последнее мне нравится больше всего, т.к. всё равно приходится с этими
> пакетами что-то делать для сборки.

У меня тоже сделана подобная штука. Сначала определяется множество
пакетов исходного репозитория (скажем, Sisyphus x86_64), такое, что
их совместная сборка в целевой репозиторий
(скажем, sisyphus_riscv64) не порождает новых
анметов ни по сборочным, ни по бинарным зависимостям, ну и естественно
содержащее нужные пакеты. Потом происходит попытка упорядочить эти
для задачи пакеты по принципу "пакет А собирается
раншье пакета Б, если результаты сборки пакета А попадают в сборочный
chroot пакета Б". Сборочный chroot обсчитывается нагло замыканием
сборочных зависимостей через обход в ширину графа зависимостей
в исходном репозитории, совсем не так, как
это делает apt, но для моих целей примерного сходства достаточно.

Циклы при упорядочивании рвутся где придётся, но записываются
и показываются отдельно от списка пакетов, чтобы можно было
оценить ужас происходящего и что-то с этим сделать.

Есть опции вида "игнорировать зависимость foo от bar" (чтобы
порвать какой-то цикл в конкретном месте) и "игнорировать
все зависимости на foo". Последняя более полезна и спользуется
почти всё время.

Чаще всего это даже работает.

-- 
  wbr,
    iv m.


  reply	other threads:[~2021-11-15 13:21 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-13 21:26 [devel] " Michael Shigorin
2021-11-13 21:38 ` Dmitry V. Levin
2022-07-19 11:26   ` Michael Shigorin
2021-11-13 22:37 ` Anton Farygin
2021-11-16 10:09   ` Michael Shigorin
2021-11-15 11:14 ` [devel] [devel-ports] " Ivan A. Melnikov
2021-11-15 12:15   ` Anton Farygin
2021-11-15 13:21     ` Ivan A. Melnikov [this message]
2021-11-15 15:02       ` Anton Farygin
2021-11-16 10:29       ` Michael Shigorin
2021-11-16  9:50 ` [devel] renoarch: noarch.rpm -> src.rpm (собственно скрипт) Michael Shigorin

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=20211115132109.bq5t2jhg4lzveeox@titan.localdomain \
    --to=iv@altlinux.org \
    --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