From: Alexey Tourbin <at@altlinux.ru> To: devel@lists.altlinux.org Subject: [devel] RFC: тестирование входящих пакетов полной пересборкой сизифа Date: Wed, 22 Aug 2007 01:43:21 +0400 Message-ID: <20070821214321.GB28786@solemn.turbinal> (raw) [-- Attachment #1: Type: text/plain, Size: 4751 bytes --] Я заметил, что branch 4.0 перед выкладыванием проходит тестирование пересборкой. Всё это делается вручную. У меня есть предложение внедрить аналогичную схему _автоматической_ пересборки для сизифа. Я систематизирую идеи, которые обсуждал на конференции с ldv. К сожалению, мне не удалось обсудить это с legion'ом. Предыдущее обсуждение этой же темы здесь: http://lists.altlinux.org/pipermail/devel/2007-April/045149.html http://lists.altlinux.org/pipermail/devel/2007-April/045288.html (и вообще все письма в этом треде -- "git.alt build") Основная идея в том, что на каждый входящий пакет можно устраивать полную пересборку сизифа с этим пакетом (если он собрался). Это нужно для "раннего" обнаружения проблем, чтобы не пропускать в сизиф пакеты, которые заведомо слишком много ломают (по крайней мере, в смысле возможности пересборки пакетов). Любая попытка провести новый пакет (новую сборку пакета) в сизиф должна быть, вообще говоря, "условной" (или "пробной"). После того, как пакет собрался, нужно провести "полную пересборку сизифа" с этим пакетом. Если все пакеты "успешно пересобрались", то новая сборка автоматически проходит в сизиф. Если же некоторые пакеты сломались, то новая сборка ставится "на подтверждение". Поясню некоторые выражения в кавычках. "Полную пересборку сизифа" следует трактовать не буквально, а вот как: пересобрать все пакеты, у которых при сборке в билдрут ставится один из новых пакетов. Это означает, что, с учетом поступивших пакетов, для каждого src.rpm пакета формируется список пакетов для билдрута. Если в списке пакетов для билдрута оказывается новый пакет, то этот src.rpm пакет подлежит пересборке. "Успешная пересборка" сизифа подразумевает сравнение с предыдущим статусом "полной пересборки сизифа". Если по сравнению с предыдущей полной пересборкой какой-либо пакет перестал собираться, значит, пересборка не является успешной. "Подтверждение" означает осознанное действие со стороны maintainer'а пакета и/или "формирующего очередной релиз сизифа" по отношению к пакету, который что-то сломал. То есть можно вручную подтвердить, что новый пакет всё же не настолько плох, чтобы не пускать его в сизиф (например, виноваты другие пакеты, или же ожидается их скорое исправление). Вижу две проблемы: теоретическую (сериализация) и ресурсы. Сериализация. В идеале таким образом пакеты должны идти в очередь один за другим, и очередь не должна двигаться, пока не будет принято решение по каждому очередному "неидеальному" пакету. К сожалению, полная сериализация будет упираться в человеческий фактор (подтверждение вручную) и поэтому нетехнологична. То есть проблема в том, что параллельно протестированные пакеты могут по отдельности ничего не ломать, а комбинация двух новых пакетов может дать уже другой исход. Пример. Прошел пакет libxml2 и успешно протестировался пересборкой старой версии perl-XML-LibXML. Параллельно прошел новый пакет perl-XML-LibXML и успешно протестировался на старой версии libxml2. Но, может статься, новый perl-XML-LibXML уже не будет собираться на новой версии libxml2. На самом деле такого рода "конкурентные изменения" рассматриваются в теории RDBMS. Там есть разные уровни изоляции транзакций и т.д. Может кто знает. Ресурсы. На самом деле для "среднего пакета" потребуется не слишком много сборочных ресурсов. Недавно я выяснил (и написал), что число пакетов в сизифе, у которых в билдруте при сборке есть библиотека libcurl, это число равно 69 (если не ошибаюсь). Конечно, если пакет ставится в базовую сборочную среду, тогда возможность уменьшения списка пакетов исчезает. Но, может быть, кто-нибудь помнит историю с битым cpio ("cpio обновился, и hasher сломался"). Так что ресурсы на полную пересборку сизифа при прохождении базовых пакетов не стоит считать потраченными напрасно. Впрочем, последнее мнение не отменяет вопроса о наличии ресурсов как таковых. Техническая проблема на подступах к определению списка пакетов, подлежащих пересборке, было в том, что нужно научиться очень быстро строить список пакетов в билдруте при сборке каждого src.rpm пакета. Стандартный способ (который используется в hasher, через --print-uris) занимает порядка одной секунды на src.rpm пакет. Это связано с тем, что apt всё время перечитывает свой кеш. В сизифе около 6000 src.rpm пакетов, значит, определять, какие из них нужно пересобрать, можно около 2 часов. Это даже больше, чем может занять последующая пересборка обнаруженным таким образом src.rpm пакетов. У меня сейчас зреет решение, как немного захачить апт и написать к нему скрипт на lua, чтобы построение списка пакетов для пересборки по времени сводилось к чтению хедеров src.rpm пакетов. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next reply other threads:[~2007-08-21 21:43 UTC|newest] Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-08-21 21:43 Alexey Tourbin [this message] 2007-08-22 5:25 ` Денис Смирнов 2007-08-22 8:22 ` Хихин Руслан 2007-08-23 10:19 ` Alexey Tourbin 2007-08-23 11:10 ` Michael Shigorin 2007-08-23 11:16 ` Mykola S. Grechukh 2007-08-23 11:18 ` Mykola S. Grechukh 2007-08-23 11:52 ` [devel] [JT] " Michael Shigorin 2007-08-23 12:10 ` Mykola S. Grechukh 2007-08-23 12:11 ` Michael Shigorin 2007-08-23 12:32 ` Alexey Tourbin 2007-08-23 19:05 ` [devel] статистика Alexey Tourbin 2007-08-23 20:25 ` Alexey Tourbin 2007-08-23 20:37 ` Vadim V. Zhytnikov 2007-08-23 19:51 ` Alexey Tourbin 2007-08-23 21:03 ` Alexey Tourbin 2007-08-23 21:08 ` Хихин Руслан 2007-08-23 21:47 ` Alexey Tourbin 2007-08-23 21:59 ` Alexey Tourbin 2007-08-23 22:19 ` Alexey Tourbin 2007-08-23 12:19 ` [devel] [JT] Re: RFC: тестирование входящих пакетов полной пересборкой сизифа Alexey Tourbin 2007-08-23 13:12 ` Michael Shigorin 2007-08-24 11:15 ` Alexey Tourbin 2007-08-25 9:15 ` Alexey I. Froloff 2007-08-25 9:33 ` Alexey Tourbin 2007-08-25 10:16 ` Alexey I. Froloff 2007-08-25 11:25 ` Igor Vlasenko 2007-08-25 11:36 ` Igor Vlasenko 2007-08-25 11:48 ` Michael Shigorin 2007-08-25 11:53 ` Mykola S. Grechukh 2007-08-25 21:58 ` Igor Vlasenko 2007-08-25 22:43 ` Alexey Tourbin 2007-08-25 23:35 ` Igor Vlasenko 2007-08-26 13:38 ` Alexey I. Froloff 2007-08-25 18:33 ` Alexey Tourbin 2007-08-25 19:32 ` [devel] incominger Michael Shigorin 2007-08-25 20:13 ` [devel] [JT] Re: RFC: тестирование входящих пакетов полной пересборкой сизифа Денис Смирнов 2007-08-23 13:23 ` [devel] " Alexey Tourbin 2007-08-24 12:51 ` Alexey Tourbin 2007-08-24 21:23 ` [devel] статистика [2] Alexey Tourbin 2007-08-25 14:57 ` [devel] Критерий значимости пакета (Was: статистика) Alexey Rusakov 2007-08-25 20:10 ` Денис Смирнов 2007-08-25 20:28 ` Alexey Tourbin 2007-08-25 22:47 ` Денис Смирнов 2007-08-25 23:55 ` Alexey Tourbin 2007-08-29 20:39 ` [devel] статистика [2] Dmitry V. Levin
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=20070821214321.GB28786@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