[devel] про автоматическое и ручное тестирование пакетов

Alexey Tourbin at на altlinux.ru
Ср Июн 17 09:14:44 MSD 2009


On Tue, Jun 16, 2009 at 04:03:24AM +0400, Alexey I. Froloff wrote:
> On Tue, Jun 16, 2009 at 03:00:40AM +0400, Dmitry V. Levin wrote:
> > Если никто не будет приводить новые аргументы, то я своё мнение менять
> > не стану.  Это общее правило ведения обсуждения.
> Мне было бы удобно, если бы build/*/*/rpms/*.rpm были бы
> проиндексированы для apt'а:
> 
> rpm http://git.altlinux.org/tasks/НОМЕР/build/repo $(ARCH) task

С этим есть несколько маленьких, но неприятных проблем.

Во-первых, в $(ARCH)-repo лежат разные noarch пакеты.  Строго говоря,
пока не выполнена проверка идентичности noarch пакетов, такие noarch
пакеты нежелательно выпускать во внешний мир.  А когда идентичность
noarch пакетов установлена, только тогда можно выбрать один noarch
пакет и сформировать noarch-repo одинаковый для всех архитектур.
Сейчас для этого выбирается i586-noarch пакет, по косвенному признаку
(потому что i586 лексикографически наименьшая архитектура).

Во-вторых, подписи пакетов.  Пакеты подписываются довольно серьезным
ключом.  Если пакеты не проходят, то этим ключом их нежелательно
подписывать.  Это спорный вопрос.  Я когда над ним думал, то поступил
острожно -- сделал подпись пакетов в gb-task-commit-repo (прямо перед
копированием их в master репозиторий).  Это выглядело несколько нелепо,
и ldv перенес подпись пакетов в gb-task-build-arch-i (сразу после
сборки).

В третьих, stacked мини-репозитории (оверлеи) могут иметь проблемы с
файловыми зависимостями.

RPMS.hasher
 |
 v
RPMS.classic

В этой схеме RPMS.classic генерируется независимо, и в нём удаляется
информация обо всех файлах, которые не нужны (не разрешают внутренние
зависимости).  Нельзя предсказать, какие файлы могут потребоваться в
стек-оверлеях.  Можно только вообще не удалять информацию о файлах в
RPMS.classic.  Но тогда при каждом 'apt-get update' придётся скачивать
индексы примерно вдвое большего размера.

В самом общем виде эту проблему решить нельзя, потому что иначе бы
появилась возможность предсказывать будущее.

> Кривоскрипт в аттаче делает что-то в этом роде (вызывается в
> конце gb-task-build-arch).

В принципе hasher repo автоматически генерируется на remote node,
и поэтому специально делать ничего не надо -- можно просто грамотно
его оттуда скопировать.

> for i in $(src_nums); do
> 	[ -d "build/$i/$arch/rpms" ] || continue
> 	find "build/$i/$arch/rpms" -type f -name "*.rpm" -exec ln -f -t "build/repo/$arch/RPMS.task" '{}' '+'
> 
> 	[ -d "build/$i/$arch/srpm" ] || continue
> 	find "build/$i/$arch/srpm" -type f -name "*.rpm" -exec ln -f -t "build/repo/$arch/SRPMS.task" '{}' '+'
> done
> genbasedir \
> 	--topdir=build/repo \
> 	--flat --no-oldhashfile --bz2only --mapi "$arch" task
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20090617/1193e710/attachment.bin>


Подробная информация о списке рассылки Devel