[devel] sandman на cvs.altlinux.org

Alexander Bokovoy =?iso-8859-1?q?a=2Ebokovoy_=CE=C1_sam-solutions=2Enet?=
Вт Авг 5 22:09:55 MSD 2003


On Tue, Aug 05, 2003 at 09:58:22PM +0400, Dmitry V. Levin wrote:
> > > > контроля всех остальных -- текстовых и бинарных -- объектов пакета и
> > > > этим контролирующим объектом является spec-файл.
> > > 
> > > Это не всегда так.
> > > Зачастую среди множества исходных файлов данного пакета есть и вполне
> > > плоские текстовые файлы.
> > Увы, формализовать структуру для них в общем случае нельзя. Также,
> Почему?
Придется делать это по-пакетно. Вот эти файлы -- текстовые, а эти -- нет.
И так далее. То есть, кто-то должен проанализировать пакет и разложить его
исходники в хранилище и в SCM, да еще и учесть возможность удаления
исходников из SCM -- этот вариант наиболее непригляден.

> > При использовании hasher в любом случае предполагается первичная генерация
> > src.rpm посредством промежуточного скрипта, который может сделать все ту
> > же работу по приклеиванию .spec. Не вижу, каким образом это несовместимо с
> > нынешним Сизифом.
> 
> В нем имена spec-файлов имеет вид, отличный от используемого sandman'ом.
> Кто будет конвертировать?
Давай разделим проблемы. От пакетов, попадающих в Sisyphus, требуется
наличие в них регуляризованных spec-файлов в формате foo.spec. Для Sandman
даже это не существенно, так как перед попаданием содержимого исходного
пакета в хранилище (суть, вызов команд утилиты sandcl) этот src.rpm будет
раскручиваться, например, так:

addpackage() {
    name=$($RPMQ --qf='%{NAME}' -p $1)
    basepart=$(basename $1)
    echo -e "\tImporting sources into Sandman..."
    $RPM2CPIO $1 | $SANDCL addsources $name
    pushd $CVSDIR
    $RPM2CPIO $1 | $CPIO -i $name.spec
    if [ ! -f $name ] ; then
        mv -f $name.spec $name
	echo -e "\tAdding spec file to CVS..."
	cvs add $name
    else
	mv $name.spec $name
    fi
    echo -e "\tImporting package ${basepart/.src.rpm/} ..."
    cvs ci -m "Imported package ${basepart/.src.rpm/}" $name
    popd
}

Как видишь, в данном случае мы предполагаем, что spec-файл называется
имя_пакета.spec в src.rpm. Вот и все. Напишем скрипт, который будет
выуживать любой spec-файл, -- не будет и этого ограничения.

> > Diff относительно чего? Двух конкретных версий одного и того же исходника
> > (если тот определяется как text/plain по мнению file)? Это легко
> > добавляется, никаких проблем.
> 
> Нет, xdelta на несжатые tarball'ы.
> Можно, конечно, отложить на потом.
Угу. Кстати, это дополнительная вычислительная нагрузка.

> > Вычислительные ресурсы: минимум, если не используется сборка
> > 
> > Дисковый ресурс: однократно -- развернутый Сизиф в исходниках (3.3Гб),
> > далее -- по нарастающей, плюс место для референтной системы, на которой
> > вычисляется корректность spec-файла (150-500Мб). Думаю, что 40-60Гб диска
> > нам хватит надолго, поскольку наиболее дискоемкая функциональность
> > sandman-а (генерация ISO-образов дистрибутивов) не используется.
> 
> А по софту?
Смотри зависимости пакета sandman-server:

$ apt-cache depends sandman-server:

sandman-server-0.5.5-alt4
  Для установки требует: cvs
  Требует: sandman = 0.5.5-alt4
  Требует: apt-utils
  Требует: chrootuid >= 1.3-alt2
  Требует: e2fsprogs
  Требует: mount
  Требует: apt >= 0.5.5cnc4.1-alt4
  Требует: service >= 0.4-alt1
  Требует: sh-2.05b-alt5
  Требует: logrotate-3.6.2-alt2
  Требует: service-0.5-alt1

$ apt-cache depends sandman

sandman-0.5.5-alt4
  Требует: cpio
  Требует: tcl >= 8.4.2-alt1
  Требует: tclx
  Требует: tcllib >= 0.8
  Требует: tcl-trf
  Требует: tcl-memchan

Я немного подредактировал вывод этих команд в смысле сокращения
дублирования и виртуальных зависимостей (sh, init(...)).

-- 
/ Alexander Bokovoy
---
The clearest way into the Universe is through a forest wilderness.
		-- John Muir



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