[devel] IA: package hasher for everyone

Dmitry V. Levin =?iso-8859-1?q?ldv_=CE=C1_altlinux=2Eorg?=
Пт Июл 4 02:43:14 MSD 2003


On Fri, Jul 04, 2003 at 12:14:19AM +0300, Alexander Bokovoy wrote:
> On Thu, Jul 03, 2003 at 05:22:48PM +0400, Dmitry V. Levin wrote:
> > On Thu, Jul 03, 2003 at 12:51:14AM +0300, Alexander Bokovoy wrote:
> > > On Thu, Jul 03, 2003 at 01:45:24AM +0400, Dmitry V. Levin wrote:
> > > > On Wed, Jul 02, 2003 at 10:54:24PM +0400, Dmitry V. Levin wrote:
> > > > > Greetings!
> > > > > 
> > > > > В сегодняшнем (20030702) Сизифе появилось (yet more) средство для
> > > > > автоматизированной пересборки пакетов - hasher.
> > > > [...]
> > > > >     --contents-index-all=INDEX
> > > > >     Path to file with complete package contents index, e.g.
> > > > >     path/to/Sisyphus/i586/base/contents_index; necessary for proper
> > > > >     binary package dependencies calculation.
> > > > >     By default, no package contents indeces will be used.
> > > > 
> > > > Пожелание разработчикам sandman'а:
> > > > реализовать поддержку использования этих индексов.
> > > Пока hsh не доползло, основной вопрос касается реализации вычисления
> > > зависимостей методом contents_index при использовании дополнительных 
> > > репозитариев -- учитываются все contents_index-ы или только один, из
> > > основного репозитария? Последнее является ошибкой.
> > 
> > Для rpm-build'а contents_index'ов должно быть не более одного
> > (каждого типа); вызывающий может/должен обеспечить rpm-build
> > contents_index'ом, при этом он может изготовить его из нескольких.
> Это серьезное ограничение, сводящее на нет практическое применение при
> пересборке подсистем.

Это неэффективно делать на стадии rpm-build'а, который ничего не смыслит в
репозиториях.  Я убежден, что вызывающая сторона должна обеспечивать его
необходимыми индексами.

> > Нынешний hasher ещё не умеет поддерживать сразу несколько
> > contents_index'ов; это в TODO.
> Поставь его повыше в TODO, хорошо?

Объединить несколько индексов (одной природы) - это не сложнее, чем сделать
сами индексы.  Сейчас индекс classic'а делается с помощью прилагаемого
скрипта.  Если есть идеи, как лучше его назвать и в какой пакет
запаковать, высказывайтесь.


--
ldv
----------- следующая часть -----------
#!/bin/sh -e

export LANG=C LANGUAGE=C LC_ALL=C

PROG="${0##*/}"

[ $# -eq 1 ] || { echo "Usage: $PROG <directory>" >&2; exit 1; }

cd "$1"
shift

WORKDIR=
exit_handler()
{
	local rc=$?
	trap - EXIT
	[ -z "$WORKDIR" ] || rm -rf -- "$WORKDIR"
	exit $rc
}

trap exit_handler SIGHUP SIGINT SIGQUIT SIGTERM EXIT

WORKDIR="$(mktemp -d -t "$PROG.XXXXXXXXXX")"

# generate filelist.
find -mindepth 1 -maxdepth 1 -name \*.rpm -print0 |
	xargs -r0 rpmquery -p --qf '[%{FILENAMES}\t%{NAME}\n]' -- |
	fgrep -v ' ' |
	sort -u >"$WORKDIR"/list

cd "$WORKDIR"

# find dups.
cut -f1 <list |
	uniq -c |
	awk '{if ($1 != "1") printf("%s\t%s\n",$2,$2)}' >dups

# find uniquie lines.
cut -f1 dups |
	join -v1 list - |
	tr -s ' ' '\t' >uniq

sort -u dups uniq
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20030704/18800761/attachment-0001.bin>


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