From: "Dmitry V. Levin" <ldv@altlinux.org> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Subject: Re: [devel] Метарепозиторий Сизифа Date: Thu, 8 Nov 2007 20:42:25 +0300 Message-ID: <20071108174225.GA31673@basalt.office.altlinux.org> (raw) In-Reply-To: <20071106213530.GN24160@solemn.turbinal> [-- Attachment #1: Type: text/plain, Size: 4826 bytes --] Hi, On Wed, Nov 07, 2007 at 12:35:30AM +0300, Alexey Tourbin wrote: [...] > Короче, идея в следущем. Есть git-репозитарий сизифа. В нём существуют > подкаталоги по имени каждого src.rpm пакета. Прохождение любого > пакета автоматически "влияет" на всё остальные (зависимые) пакеты по > крайней мере в смысле возможности пересборки. [...] > Я предлагаю сделать метарепозитарий сизифа, в котором содержится > необходимя и достаточная информация для поддержки "новой системы сборки > пакетов". На каждый src.rpm пакет имеется соответствующий подкаталог > метарепозитария. > > Вопрос по части мозгового штурма у меня к вам простой -- ЧТО ДОЛЖНО > ЛЕЖАТЬ В ПОДКАТАЛОГАХ ЭТОГО РЕПОЗИТАРИЯ? Мы обдумали этот вопрос в узком кругу (avm и ldv). Резюме для тех, кто не будет читать дальше: - для сборки транзакции нужен снапшот всего Сизифа; - сделать снапшот всего Сизифа стоит недорого; - не стоит для реализации fast forward и rebase использовать git. Теперь более подробно. Публикуемый Сизиф развивается линейно и последовательно, т.е. множество опубликованных Сизифов можно пронумеровать натуральными числами. Определённые таким образом номера можно использовать в качестве уникальных идентификаторов публикаций Сизифа. Сборка транзакции (A) происходит следующим образом: - создаётся репозиторий - снапшот текущего опубликованного Сизифа (Ra); использование ссылок делает эту операцию дешевой; - на этом снапшоте выполняется сборка --with-stuff исходных пакетов транзакции; если хотя бы один не собрался, то транзакция отменяется (в первой реализации сборочной системы не вижу смысла оптимизировать эту часть); - на основе Ra и свежесобранных пакетов формируется новый Сизиф (Ra'); - сравниваются анметы Ra и Ra'; в случае появления новых анметов транзакция откладывается; - вычисляется множество (Sa') исходных пакетов в Ra', для сборки которых требуются свежесобранные пакеты транзакции A (точнее говоря, в сборочной среде которых присутствует хотя бы один из свежесобранных пакетов); - на Ra' выполняется тестовая сборка всех пакетов из Sa'; - если хотя бы один пакет перестал собираться (по сравнению со статистикой сборки на Ra), то транзакция откладывается; - (*) предпринимается попытка применить успешно собранную транзакцию к Сизифу; если опубликованный на этот момент Сизиф совпадает с тем Сизифом, на основе которого был создан снапшот Ra, то происходит fast forward: Ra' становится Сизифом, которому присваивается очередной номер; в противном случае предпринимается попытка выполнить rebase: - создаётся репозиторий - снапшот текущего опубликованного Сизифа (Rb); - вычисляется множество (Nab) пакетов, которое появилось/обновилось в Rb по сравнению с Ra; здесь предполагается, что один и тот же исходный пакет не может попасть в более чем одну незавершённую транзакцию; - если в транзакции есть пакеты более старой сборки, чем одноимённые пакеты в Nab, то транзакция отменяется (в первой реализации сборочной системы не вижу смысла оптимизировать эту часть); - на Rb заново собираются --with-stuff те пакеты из A, в сборочной среде которых присутствуют пакеты из Nab; - на основе Rb и собранных пакетов A формируется новый Сизиф (Rb'); - сравниваются анметы Rb и Rb'; в случае появления новых анметов транзакция откладывается; - вычисляется множество (Sb') исходных пакетов в Rb', для сборки которых требуется хотя бы один из свежесобранных пакетов; - на Rb' выполняется тестовая сборка всех пакетов из Sb'; если хотя бы один пакет перестал собираться (по сравнению со статистикой сборки на Rb), то транзакция откладывается; - предпринимается попытка применить успешно собранную транзакцию к Сизифу по вышеописанному алгоритму, см. (*). Из этого описания можно сделать выводы о том, что нужно для обработки транзакции: - бинарный репозиторий Сизиф для сборки пакетов; - быстрое формирование нового бинарного репозитория Сизифа на основе предыдущего и новых пакетов (есть ли у нас необходимые средства?); - корректное вычисление анметов (действующий алгоритм apt-cache unmet, по всей видимости, игнорирует конфликты); - быстрое вычисление подмножества исходных пакетов Сизифа, для сборки которых требуется пакеты из указанного подмножества бинарных пакетов Сизифа (у нас сейчас нет такого алгоритма); - статистика сборки исходных пакетов Сизифа должна быть частью Сизифа. Формулировка "транзакция откладывается" означает, что дальнейшая обработка транзакции невозможна без вмешательства извне. На практике это может означать отмену транзакции, дополнение транзакции новыми исходными пакетами (фактически формирование новой транзакции на основе отложенной), или действия уполномоченных лиц по преодолению причин, из-за которых транзакция была отложена. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2007-11-08 17:42 UTC|newest] Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-11-06 21:35 Alexey Tourbin 2007-11-07 5:23 ` Alexey Tourbin 2007-11-07 5:50 ` Хихин Руслан 2007-11-07 7:01 ` Alexey Tourbin 2007-11-07 21:37 ` Kirill A. Shutemov 2007-11-07 10:16 ` Alexey I. Froloff 2007-11-07 10:38 ` Alexey Gladkov 2007-11-07 10:39 ` Alexey Gladkov 2007-11-07 10:43 ` Alexey Gladkov 2007-11-07 10:49 ` Alexey Gladkov 2007-11-08 17:42 ` Dmitry V. Levin [this message] 2007-11-08 18:38 ` Sergey Vlasov 2007-11-08 20:17 ` Dmitry V. Levin 2007-11-08 19:03 ` Alexey Tourbin 2007-11-08 19:20 ` Kirill A. Shutemov 2007-11-08 19:46 ` Alexey Tourbin 2007-11-08 19:23 ` [devel] bootstrap транзакции Alexey Tourbin 2007-11-08 21:20 ` [devel] Метарепозиторий Сизифа Dmitry V. Levin 2007-11-08 22:08 ` Alexey Tourbin 2007-11-08 22:30 ` [devel] git-репозитарий для логов сборки Alexey Tourbin 2007-11-08 22:48 ` Dmitry V. Levin 2007-11-08 23:28 ` Alexey Tourbin 2007-11-09 1:09 ` Dmitry V. Levin 2007-11-09 1:21 ` Alexey Tourbin 2007-11-09 2:06 ` Alexey Tourbin 2007-11-08 22:38 ` [devel] Метарепозиторий Сизифа Dmitry V. Levin 2007-11-08 23:04 ` Alexey Tourbin 2007-11-09 1:06 ` Alexey Tourbin 2007-11-09 6:44 ` Kirill A. Shutemov
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=20071108174225.GA31673@basalt.office.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