[devel] уже давно не о документации
Dmitry V. Levin
ldv на altlinux.org
Вс Фев 6 21:57:44 UTC 2011
On Sun, Feb 06, 2011 at 07:30:35AM +0300, Alexey Tourbin wrote:
> On Sat, Feb 05, 2011 at 11:03:30PM +0300, Dmitry V. Levin wrote:
> > Это зависит от постановки задачи. Например, от того, сколько карманов в
> > единицу времени требуется обрабатывать одновременно (в среднем и
> > максимально).
>
> Мне всё ещё не нравится термин "карманы", которому не дано определения,
> и который, скорее, выражает смутные чаяния менее образованной части нашей
> интеллигенции. Что такой карманы? Чем карман отличается от задания?
Карманы -- это собирательный образ, под которым понимают разные сущности
со следующими крайними характеристиками:
- короткоживущие бранчи, порождаемые людьми на основе существующих бранчей
для того, чтобы с помощью цепочки заданий, формируемых постепенно,
готовить новое состояние исходных бранчей. Например, хочется иметь
возможность порождать карманы такого рода при подготовке обновления
тулчейна, перла, питона и других больших изменений, которые невозможно
или очень неудобно сразу провести одним заданием. Подразумевается, что
набором проверок целостности репозитория управляет автор кармана.
- долгоживущие бэкпорты, порождаемые людьми на основе существующих бранчей
для того, чтобы с помощью одного задания готовить сборки пакетов на базе
существующих бранчей, но возможно и не предназначенных для попадания в эти
бранчи. Например, хочется иметь возможность порождать карманы такого рода
для публикации личной сборки какого-нибудь софта для какого-нибудь бранча.
Подразумевается, что по мере изменения базового репозитория пакеты в
карманах этого рода могут (полу)автоматически пересобираться.
> Задание (в широком смысле) - это намерение модифицировать репозиторий
> методом сборки, замещения и/или удаления пакетов; намерение порождает
> процесс, который идёт по определенным правилам. Правила нужны для
> поддержки целостности репозитория. А именно, вычисляется характеристики
> репозитория до и после модификаии. Модификация применяется, если после
> модификации характеристики не ухудшаются. Намерение может быть
> отложенным: мейтенер вправе просмотреть результат, прежде чем окончательно
> подтвердить модификацию, т.к. некоторые характеристики сложно учесть
> формально.
>
> Если про карманы говорят именно в этом смысле, то карманы - это всего
> лишь более навороченные задания. Кирилл написал, что карманы нужны
> для тестовой пересборки репозитория с новым gcc. Вообще-то задания
> должны предоставлять именно такую возможность: должна выполняться тестовая
> пересборка всех зависимых пакетов (как часть вычисления характеристик
> репозитория). То, что тестовая пересборка зависимых пакетов до сих
> пор не реализована, не оправдывает новой терминологии.
Подготовка нового gcc -- это итеративный процесс. Карманы первого рода
(см. выше) нужны для того, чтобы инициатор этого процесса (мейнтейнер gcc)
и его коллеги могли проводить полноценные эксперименты над репозиторием, в
котором gcc по умолчанию уже обновлен.
> С другой стороны, есть те, кто понимает под карманами что-то ещё более
> неопределенное - возможность что-то "бутстрапить", собирать пакеты с
> многократным замещением и в неопределенном порядке - экспериментировать
> до тех пор, пока там что-то не "сварится"... варить пакеты в кармане!
> Я считаю, что тут просто нет ясного намерения модифицировать репозиторий.
> Поэтому, кроме всего прочего, системы такого рода могут быть реализованы
> особенно эффективно вследстие того, что они могут находиться где-то
> в другом месте и минимально пересекаться со сборочной системой git.alt.
Наивно полагать, что системы типа git.alt могут быть реализованы каждым
мейнтейнером у себя под боком. Для того git.alt и нужен, чтобы сделать
эту технологию доступной и удобной для коллективной разработки.
> > Реализация параллельной обработки показала, что большой
> > объем вычислительных мощностей требуется не только для сборки самих
> > пакетов на вычислительных узлах, но также и для вычисления нового
> > состояния репозитория с последующими проверками целостности. Сейчас все
> > такие вычисления централизованы, и мне очевидно, что система начинает
> > заметно проседать уже при параллельном вычислении двух состояний разных
> > репозиториев.
>
> Это можно подробнее обсудить, но тут был заметный прогресс, и это не
> главная проблема. Более заметная проблема (или, лучше сказать, белое
> пятно) - это вычисление замыканий. Грубо говоря, как узнать, какие пакеты
> пересобирать, даже если есть мощности для тестовой пересборки? Апт
> довольно медленно вычисляет замыкания BuildRequires. При наивной
> реализации замыкания BuildRequires для всех исходных пакетов будут
> вычиляться аптом минут 20 - даже если в результате не придется
> пересобирать ни одного пакета.
Значит, нужна менее наивная реализация.
--
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : отсутствует
Тип : application/pgp-signature
Размер : 198 байтов
Описание: отсутствует
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20110207/1f9074df/attachment.bin>
Подробная информация о списке рассылки Devel