[devel] I: gyle --test-only by default

Andrey Savchenko bircoph на altlinux.org
Чт Мар 21 02:50:47 MSK 2019


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.

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

> Т.е. у нас зависимости гораздо более гибкие, но за эту гибкость приходится
> платить.
> 
> > Поэтому вполне возможна реализация решения подобной задачи за
> > разумное время и в Альте.
> 
> Для того, чтобы эта задача имела решение за разумное время, нам нужно
> отказаться от избыточной гибкости и перейти на декларативные сборочные
> зависимости.

Не вижу такой необходимости. Любой гибкой зависимости в конечном
счёте отвечает конкретный пакет, поэтому можно выстроить
отображение гибких зависимостей на конкретные пакеты, их
предоставляющие, поэтому задача сводится к задаче поиска на
попакетных зависимостях с операторами AND, OR, NOT.

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

Best regards,
Andrew Savchenko
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 833 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20190321/9ed27162/attachment.bin>


Подробная информация о списке рассылки Devel