ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: "Dmitry V. Levin" <ldv@altlinux.org>
To: ALT Devel discussion list <devel@lists.altlinux.org>
Subject: Re: [devel] I: gyle --test-only by default
Date: Thu, 21 Mar 2019 03:18:16 +0300
Message-ID: <20190321001815.GA5675@altlinux.org> (raw)
In-Reply-To: <20190321025047.ae935f21dec1f51f429e72e6@altlinux.org>

[-- Attachment #1: Type: text/plain, Size: 4793 bytes --]

On Thu, Mar 21, 2019 at 02:50:47AM +0300, Andrey Savchenko wrote:
> On Wed, 20 Mar 2019 18:39:37 +0300 Dmitry V. Levin wrote:
> > On Wed, Mar 20, 2019 at 04:09:44PM +0300, Andrey Savchenko wrote:
> > > On Wed, 20 Mar 2019 16:04:22 +0300 Dmitry V. Levin wrote:
> > > > On Wed, Mar 20, 2019 at 03:56:23PM +0300, Andrey Savchenko wrote:
> > > > > On Wed, 20 Mar 2019 15:51:00 +0300 Dmitry V. Levin wrote:
> > > > > > On Wed, Mar 20, 2019 at 03:47:13PM +0300, Andrey Savchenko wrote:
> > > > > > [...]
> > > > > > > Наша система зависимостей на порядок проще, поэтому при надлежащей
> > > > > > > реализации проблем с временем быть не должно.
> > > > > > 
> > > > > > У меня есть основания полагать, что это, к сожалению, не так.
> > > > >  
> > > > > Прошу озвучить эти основания. У нас есть только BuildRequires
> > > > > и Requires. С точки зрения обсуждаемой задачи BuildPreReq можно
> > > > > приравнять к BuildRequires.
> > > > 
> > > > У нас есть Provides, Requires, Conflicts, BuildRequires.
> > > > 
> > > > (ещё существует BuildConflicts, но для вычисления сборочной среды
> > > > BuildConflicts не участвует и про него можно забыть).
> > > > 
> > > > Все эти 4 вида зависимостей бывают версионированными с диапазоном версий.
> > > > У виртуальных пакетов (тех сущностей, которые фигурируют в Provides)
> > > > бывают альтернативные провайдеры, и выбор провайдера из множества
> > > > не является произвольным.
> > > 
> > > Все эти виды зависимостей есть и в portage, все они могут быть
> > > версионированными, вирутальными, с диапазонами значений, вида A или
> > > B или C. Но кроме этого есть зависимости по флагам, со своими
> > > пересечениями, объединениями и условными зависимостями. И всё это
> > > работает за разумное время.
> > 
> > Ну я же сильно упростил.
> 
> Я тоже сильно упростил, умолчав про слоты, профили, попакетную
> настройку USE-флагов, сильные и слабые зависимости, сборочные хост
> зависимости для кросс-компилирования, логические ограничения на
> комбинации флагов и многое другое.
> 
> И со всей этой неимоверной сложностью обсуждаемая задача решена
> и работает за разумное время (да, бывают баги, да, не всегда
> идеально, но работает), поэтому у меня волосы встают дыбом, когда
> мне говорят, что в Альте, на существенно более простой системе
> зависимостей, это якобы невозможно.

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

> > BuildRequires являются некоей функцией исходного
> > кода и сборочной среды, они вычисляются путём выполнения произвольного
> > кода внутри hasher chroot.
> 
> Замечательно. Но ведь наша сборочница гарантирует
> воспроизводимость; значит, это не произвольный код, а вполне
> детерминированное состояние по входным параметрам; значит, это всё
> выстраивается в виде графа зависимостей между атомарными элементами
> и задача вполне разрешима.

К сожалению, именно произвольный код, выполняющийся внутри hasher chroot.
Это часть наследия, которое нам досталось вместе с rpm.
Максимум, что мы можем себе позволить, не отказываясь от этого наследия,
это постулировать, что сборочная среда определяется только репозиторием и
сборочницей, и на этом основании использовать кэшированный результат,
если исходный код и репозиторий не поменялись.
> 
> > Т.е. у нас зависимости гораздо более гибкие, но за эту гибкость приходится
> > платить.
> > 
> > > Поэтому вполне возможна реализация решения подобной задачи за
> > > разумное время и в Альте.
> > 
> > Для того, чтобы эта задача имела решение за разумное время, нам нужно
> > отказаться от избыточной гибкости и перейти на декларативные сборочные
> > зависимости.
> 
> Не вижу такой необходимости. Любой гибкой зависимости в конечном
> счёте отвечает конкретный пакет, поэтому можно выстроить
> отображение гибких зависимостей на конкретные пакеты, их
> предоставляющие, поэтому задача сводится к задаче поиска на
> попакетных зависимостях с операторами AND, OR, NOT.

Из-за этой гибкости сведение к логической задаче имеет гораздо большую
вычислительную сложность, чем решение этой логической задачи.

Сейчас самый быстрый метод решения задачи упорядочивания сборки основан на
информации о том, какие пакеты попали в сборочную среду пакетов во время
последней тестовой пересборки.  Этот метод, как и всякий эвристический
метод, по своей природе неточный, но в первом приближении он работает
неплохо и очень быстро.

> Разумеется, решение этой задачи не пишется на коленке за полчаса
> и для её выполнения за разумное время наверняка понадобится более
> производительный язык, чем шелл.

Шелл - это прокладка между вызываемыми программами.


-- 
ldv

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

  reply	other threads:[~2019-03-21  0:18 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-17 12:03 [devel] I: gyle: --fail-early " Dmitry V. Levin
2019-03-17 12:30 ` Yuri Sedunov
2019-03-17 12:36   ` Dmitry V. Levin
2019-03-18  6:36 ` Ivan A. Melnikov
2019-03-18 11:56   ` Dmitry V. Levin
2019-03-18  2:03     ` [devel] I: gyle --test-only " Dmitry V. Levin
2019-03-18  5:10       ` Anton Farygin
2019-03-18  7:55       ` Sergey V Turchin
2019-03-19  9:22       ` Andrey Cherepanov
2019-03-19  9:42         ` Paul Wolneykien
2019-03-19  9:51           ` Andrey Cherepanov
2019-03-19  9:59             ` Anton Farygin
2019-03-19 10:03               ` Grigory Ustinov
2019-03-19 10:06                 ` Michael Shigorin
2019-03-19 10:15                   ` Alexey V. Vissarionov
2019-03-19 10:36                     ` Andrey Cherepanov
2019-03-19 10:43                       ` Anton Farygin
2019-03-19 19:14                       ` Alexey V. Vissarionov
2019-03-19 21:05                         ` Igor Vlasenko
2019-03-19 21:25                           ` Anton Farygin
2019-03-19 21:36                             ` Alexey V. Vissarionov
2019-03-20  7:22                               ` Sergey V Turchin
2019-03-20  7:32                                 ` Sergey V Turchin
2019-03-20 10:07                                   ` Igor Vlasenko
2019-03-20 10:20                                     ` Sergey V Turchin
2019-03-20 10:34                                     ` Sergey Afonin
2019-03-20 10:55                                       ` Igor Vlasenko
2019-03-20 12:08                                         ` Sergey Afonin
2019-03-20 13:14                                           ` Igor Vlasenko
2019-03-21  4:50                                             ` Anton Farygin
2019-03-21  7:59                                               ` Andrey Savchenko
2019-03-21  8:14                                                 ` Anton Farygin
2019-03-21  3:37                                         ` Alexey Tourbin
2019-03-19 21:43                             ` Igor Vlasenko
2019-03-20  4:22                               ` Anton Farygin
2019-03-20 10:09                                 ` Igor Vlasenko
2019-03-20 10:22                                   ` Sergey V Turchin
2019-03-20 12:28                                   ` Dmitry V. Levin
2019-03-20 13:01                                     ` Igor Vlasenko
2019-03-20 13:05                                       ` Dmitry V. Levin
2019-03-21  0:31                                         ` Dmitry V. Levin
2019-03-21  4:36                                           ` [devel] железо на сборочнице Anton Farygin
2019-03-21  5:55                                             ` Sergey Afonin
2019-03-19 21:42                         ` [devel] I: gyle --test-only by default Dmitry V. Levin
2019-03-20  9:18                           ` Alexey V. Vissarionov
2019-03-20  9:42                             ` Anton Farygin
2019-03-20  9:46                               ` Anton Farygin
2019-03-20 10:06                             ` Sergey V Turchin
2019-03-20 10:38                             ` Ivan Zakharyaschev
2019-03-20 11:08                               ` Igor Vlasenko
2019-03-20 11:21                               ` Alexey V. Vissarionov
2019-03-20 11:51                               ` Andrey Savchenko
2019-03-20 12:03                                 ` Aleksey Novodvorsky
2019-03-20 12:33                                   ` Andrey Savchenko
2019-03-20 12:48                                     ` Dmitry V. Levin
2019-03-20 13:01                                       ` Andrey Savchenko
2019-03-20 13:09                                         ` Dmitry V. Levin
2019-03-20 13:16                                           ` Andrey Savchenko
2019-03-20 13:24                                             ` [devel] предлагаю продолжить летом (was: I: gyle --test-only by default) Michael Shigorin
2019-03-20 13:29                                               ` Andrey Savchenko
2019-03-20 13:31                                               ` Igor Vlasenko
2019-03-20 13:34                                           ` [devel] I: gyle --test-only by default Alexey V. Vissarionov
2019-03-20 12:33                                   ` Alexey V. Vissarionov
2019-03-20 12:37                                 ` Ivan Zakharyaschev
2019-03-20 12:39                                 ` Dmitry V. Levin
2019-03-20 12:47                                   ` Andrey Savchenko
2019-03-20 12:51                                     ` Dmitry V. Levin
2019-03-20 12:56                                       ` Andrey Savchenko
2019-03-20 13:04                                         ` Dmitry V. Levin
2019-03-20 13:09                                           ` Andrey Savchenko
2019-03-20 13:16                                             ` Anton Farygin
2019-03-20 15:39                                             ` Dmitry V. Levin
2019-03-20 23:50                                               ` Andrey Savchenko
2019-03-21  0:18                                                 ` Dmitry V. Levin [this message]
2019-03-20 13:56                                         ` Sergey V Turchin
2019-03-20 13:12                                   ` Alexey V. Vissarionov
2019-03-21  3:58                                   ` Alexey Tourbin
2019-03-21  4:24                                     ` Alexey V. Vissarionov
2019-03-23 23:17                                     ` Dmitry V. Levin
2019-03-20 12:57                             ` Dmitry V. Levin
2019-03-20 13:33                               ` Alexey V. Vissarionov
2019-03-20 13:52                                 ` Sergey V Turchin
2019-03-19 10:15                   ` Grigory Ustinov
2019-03-19 11:37                     ` Anton V. Boyarshinov
2019-03-19 12:12                       ` Grigory Ustinov
2019-03-19 17:40                     ` Ivan Zakharyaschev
2019-03-19 10:09                 ` Anton Farygin
2019-03-19 10:59                 ` Andrey Savchenko
2019-03-19 11:03                   ` Anton Farygin
2019-03-19 11:05                     ` Andrey Savchenko
2019-03-19 11:11                       ` Anton Farygin
2019-03-19 11:15                         ` Andrey Cherepanov
2019-03-19 11:20                           ` Anton Farygin
2019-03-19 11:28                             ` Andrey Cherepanov
2019-03-19 11:38                               ` Anton Farygin
2019-03-19 12:00                                 ` Andrey Cherepanov
2019-03-19 12:01                                   ` Anton Farygin
2019-03-19 12:05                                     ` Anton Farygin
2019-03-18 12:31     ` [devel] I: gyle: --fail-early " Anton Farygin
2019-03-18 13:28 ` [devel] I: gyle: --test-early, --fail-only " 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=20190321001815.GA5675@altlinux.org \
    --to=ldv@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