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. Но кроме этого есть зависимости по флагам, со своими > пересечениями, объединениями и условными зависимостями. И всё это > работает за разумное время. Ну я же сильно упростил. BuildRequires являются некоей функцией исходного кода и сборочной среды, они вычисляются путём выполнения произвольного кода внутри hasher chroot. Т.е. у нас зависимости гораздо более гибкие, но за эту гибкость приходится платить. > Поэтому вполне возможна реализация решения подобной задачи за > разумное время и в Альте. Для того, чтобы эта задача имела решение за разумное время, нам нужно отказаться от избыточной гибкости и перейти на декларативные сборочные зависимости. -- ldv