[devel] [git update] packages/perl: heads/master

Alexey Tourbin at на altlinux.ru
Чт Ноя 15 00:26:16 MSK 2007


On Wed, Nov 14, 2007 at 11:46:14PM +0300, Alexey Tourbin wrote:
> В принципе у меня была идея сделать что-то типа libperl.req,
> который если обнаруживает, что зависимость на PERL_X.Y.Z больше текущей
> версии самого perl X.Y.Z, то ставит зависимость на текущий
> 'perl-base >= X.Y.Z-%release'.

Вот такая зарисовка у меня есть.
Она делает как раз сравнение версий: если версия самого перла 5.8.8
а зависимость на libperl.5.8(PERL_5.8.9) значит используется
"опережающий интерфейс" и ставится зависимость >= 5.8.8-%release.

Только это, во-первых, не очень системное решение.  В принципе
можно как-то обобщить, чтобы можно было накрыть целый класс проблем
(сборки snapshot'ов с незакрытым интерфейсом).  Во-вторых, привязываться
именно к релизу всё-таки не очень хочется.  Но больше привязываться не к
чему.

В общем не знаю делать так или нет.

$ objdump -p /usr/bin/perl |grep PERL_
    0x02235169 0x00 06 PERL_5.8.9
$ ./libperl.req /usr/bin/perl
perl-base >= 5.8.8-alt15
$
----------- следующая часть -----------
#!/bin/sh

perl_dep=$(rpm -qf /usr/bin/perl --qf '%{NAME} >= %{VERSION}-%{RELEASE}')
perl_version_num=$(rpm -qf /usr/bin/perl --qf '%{VERSION}' |
	awk -F. '{print$1*1000*1000+$2*1000+$3}')

. /usr/lib/rpm/functions

perl_version_refs()
{
	objdump -p "$f" |awk '
		BEGIN				{ START = 0 }
		/^Version References:/		{ START = 1 }
		/^ *required from /		{ START = 2 }
		/^ *required from libperl/	{ START = 3 }
		(START==3 && $1~/^0x/ && $NF~/^PERL_/) {
			sub(/^PERL_/, "", $NF)
			split($NF, ary, ".")
			print ary[1]*1000*1000+ary[2]*1000+ary[3]
		}'
}


LibPerlReq()
{
	local f="$1"; shift
	local ver="$(perl_version_refs "$f" |sort -rn |head -1)"
	if [ -n "$ver" ] && [ "$ver" -gt "$perl_version_num" ]; then
		echo "$perl_dep"
	fi
}

ArgvFileAction LibPerlReq "$@"
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: отсутствует
Url     : http://lists.altlinux.org/pipermail/devel/attachments/20071115/e6e9d01d/attachment.bin 


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