From: Alexey Tourbin <at@altlinux.ru> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Subject: [devel] giter-factory idea Date: Mon, 17 Sep 2007 02:15:47 +0400 Message-ID: <20070916221547.GZ5297@solemn.turbinal> (raw) In-Reply-To: <46EDA0FE.7020003@solin.spb.ru> [-- Attachment #1: Type: text/plain, Size: 6071 bytes --] On Mon, Sep 17, 2007 at 01:32:46AM +0400, Aleksey Avdeev wrote: > > В общем, у меня есть некоторый набор "правильных идей", он касается > > первичного тестирования пакетов при сборке из gear. Большая часть этих > > идей была озвучена здесь (в списке devel@), некоторые принципиально > > важные пояснения были в частной переписке. Я могу продублировать > > пояснения здесь, хотя вряд ли это что-то даст, потому что нужно очень > > хорошо понимать, о чем идет речь. > > Хотелось бы услышать. (Для возможности подумать идею в фоновом режиме.) Ваш стиль коммитов в git.alt не слишком обнадеживает насчет продуктивности обдумывания. Тем не менее. Есть прямая аналогия между коммитами в git и прохождением пакетов в репозитарий. Существует "хед" репозитария. Хед сдвигается, когда пакет проходит в сизиф. Перед сдвигом хеда выполняется ряд проверок. Если проверки отваливают, то "сдвиг хеда" невозможен, а формируется отдельный "бранч репозитария" (который замораживается на некоторое время, пока не станет ясно, насколько там серьезные ошибки). В дальнейшем этот бранч либо удаляется (если ошибки серьезные), либо происходит мёрж этого бранча в хед (если все специфические ошибки удалось разрулить). Короче, начать с самого примитива и закончить самым заумным мне сейчас будет сложно. Я приведу несколько кусков текста, которые я написал в частной переписке. Типа кому надо тот поймёт. -- > > В схеме с подтверждением вручную очень желательно иметь идентификатор [задания] > Что это "подтверждение вручную" ? Это моя идея внедрения первичного тестирования в giter-factory. Сразу публиковать пакеты на автомате нельзя. Сейчас вроде как подразумевается квалифицированная проверка перед подписью и публикацией, а если пакет автоматически опубликовался, то "отозвать" его задним числом уже нельзя. Значит, в автоматической системе перед публикацией будет выполняться ряд проверок. Минимально что должно проверяться -- это целостность репозитария при внедрении в него новых пакетов. В частности это unmet'ы и возможность инициализации нового билдрута. Представляешь что будет если пакет опубликовался и --initroot перестал работать?! Дальше надо будет внедрять "полную пересборку сизифа", чтобы выяснить ломают новые пакеты что-нибудь по возможности сборки или нет. Соответственно, если обнаружена "подозрительная ситуация", то пакет (точнее, весь task) ставится "на подтверждение вручную". Думаю что можно будет обнаруживать разные классы атак на целостность репозитария. В зависимости от классификации атаки подтверждения со стороны самого maintainer'а может быть достаточно или не достаточно (во втором случае требуется подтверждение со стороны "авторитета", т.е. грубо говоря ldv|legion). Подтверждение вручную ломает всю идею сериализации. Если task встал на подтверждение вручную, то этот task не должен задерживать продвижение очереди. Соответственно, могут возникать очень нетривиальные ситуации: что делать с подтверждением вручную, если оно пришло слишком поздно, и фигурально выражаясь, погода изменилась и ветер дует теперь дует в другую сторону? Но и тут можно кое-что придумать. В простейшем случае можно просто перекладывать "старые" пакеты в "новый" репозитарий, но на самом деле это никуда не годится. Здесь помогает аналогия мёржа. Нужно "смёржить" старые пакеты из "бранча" (таска), который встал на подтверждение вручную, в текущий бранч master (новый репозитарий). Стратегии мёржа могут быть разные. Простейшая стратегия это как раз нормальная формализация "перекладывания пакетов". В бранче сидит "операция мёржа", которая активизируется при подтверждении вручную: rm pkg1-subpkg1-v1.i586.rpm rm pkg1-subpkg2-v1.i586.rpm rm pkg1-v1.src.rpm add pkg1-subpkg1-v2.i586.rpm add pkg1-subpkg2-v2.i586.rpm add pkg1-v2.src.rpm Если все команды rm могут быть выполнены на master'е, то данный мёрж всё ещё возможен. Если же мёрж невозможен, то таск отменяется. Можно будет делать что-то типа авто-ребейса. Потом можно будет сделать более продвинутые стратегии мёржа, в части уточнение возможности пересборки пакетов и т.д. -- На самом деле rm и add должны выполняться с большей гранулярностью. rm name SVR filename add name SVR filename Гранулярность в rm страхует от удаления новой сборки в которой добавился serial. А гранулярность add страхует от того, что пакет с именем name но другим SVR/filename был уже добавлен. Но это детали. Суть в том, что в принципе "аналогия операции мёржа" позволяет справляться с нарушением сериализации. Очень живительная аналогия, я когда её понял то прямо обрадовался. То есть можно точно определить, изменилась погода или нет. По крайней мере на уровне возможности "перекладывания пакетов". -- > Я хочу сократить вмешательство человека до минимума. > [...] Я попытался раскрыть идею в соседнем письме. Смысл как раз в том, чтобы формализовать весь набор действий, который выполняет квалифицированный специалист при проверке и подписи репозитария. То есть работы на самом деле должно сократиться. То что <...делается...> вручную или полу-автоматически при помощи каких-то скриптов, будет преподнесено на блюдечке с голубой каёмочкой. Более того, большую часть "подтверждений вручную" можно будет отдать на откуп самим maintainer'ам. Пускай сами подтверждают или отменяют, чево они там насобирали. Подтверждение со стороны авторитета явно требуется только при "конфликтах". Например я добавил в пакет perl подпакет coreutils. То есть может быть конфликт между двумя maintainer'ами. Проверка acl по src.rpm проходит, а при попытке преложить пакеты в репозитарий ничего не получается. Тут-то и может потребоваться "авторитетное" подтверждение. Если же я запаковал в perl подпакет perl-libwww, который в свою очередь тоже висит на мне, то авторитетам вмешиваться ни к чему. Плюс аналогичная проверка, конечно же, нужна на provides/obsolets, чтобы не было конфликта претензий. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2007-09-16 22:15 UTC|newest] Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-08-28 17:11 [devel] pkgconfiglib.req Alexey M. Tourbin 2007-08-28 19:55 ` Alexey Tourbin 2007-08-28 20:12 ` [devel] /usr/lib/pkgconfig vs noarch Dmitry V. Levin 2007-08-28 20:47 ` Alexey Tourbin 2007-08-28 21:07 ` Alexey Tourbin 2007-08-28 21:32 ` [devel] sisyphus_check noarch Alexey Tourbin 2007-09-01 13:12 ` [devel] /usr/lib/pkgconfig vs noarch Денис Смирнов 2007-08-29 15:56 ` Dmitry V. Levin 2007-08-29 17:05 ` [devel] giter-factory Alexey Tourbin 2007-08-29 19:29 ` Dmitry V. Levin 2007-08-29 19:37 ` Alexey Tourbin 2007-08-29 21:02 ` Alexey Tourbin 2007-08-29 21:11 ` Dmitry V. Levin 2007-08-29 21:47 ` Alexey Tourbin 2007-08-29 21:55 ` Dmitry V. Levin 2007-08-29 22:26 ` Alexey Tourbin 2007-08-30 8:40 ` Kirill A. Shutemov 2007-09-01 23:47 ` Alexey Tourbin 2007-08-30 8:53 ` Kirill A. Shutemov 2007-09-16 21:13 ` Michael Shigorin 2007-09-16 21:36 ` Alexey Tourbin 2007-09-16 21:32 ` Aleksey Avdeev 2007-09-16 22:15 ` Alexey Tourbin [this message] 2007-09-16 23:01 ` [devel] giter-factory idea Aleksey Avdeev 2007-09-17 5:42 ` Alexey Tourbin 2007-09-17 10:41 ` Aleksey Avdeev 2007-09-18 9:32 ` [devel] giter-factory Michael Shigorin 2007-08-28 20:29 ` [devel] pkgconfiglib.req Alexey I. Froloff 2007-08-28 20:46 ` Alexey Rusakov 2007-08-29 13:51 ` Igor Zubkov 2007-09-16 21:17 ` Michael Shigorin 2007-09-16 22:50 ` Alexey Rusakov 2007-09-17 5:36 ` Alexey Tourbin 2007-09-18 10:09 ` [devel] UQ: git-clone git.alt: unable to chdir or not a git archive Michael Shigorin 2007-09-18 10:09 ` Pavlov Konstantin 2007-09-18 10:15 ` [devel] отбой, спасибо, сам дурак Michael Shigorin 2007-09-18 11:44 ` [devel] pkgconfiglib.req Michael Shigorin 2007-09-18 11:49 ` Alexey Rusakov 2007-09-19 22:22 ` [devel] *.pc -devel Alexey Tourbin
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=20070916221547.GZ5297@solemn.turbinal \ --to=at@altlinux.ru \ --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