[devel] girar-utils

Afanasov Dmitry ender на altlinux.org
Ср Май 27 18:13:47 MSD 2009


забыл тему сменить, каюсь.

On Wed, May 27, 2009 at 05:54:53PM +0400, Afanasov Dmitry wrote:
> On Wed, May 27, 2009 at 05:27:58PM +0400, Alexey I. Froloff wrote:
> > Есть пакет girar-utils, в репозитарий которого я слегка пописываю.
> > Как должен выглядеть этот girar-get, какие опции принимать и что
> > выдавать на выходе?
> а так мне очень интересен расширенный функционал git.alt find-packages. на входе
> опять-таки имеем rpm пакет, на выходе список ссылок, откуда этот пакет
> вырос.
> 
> то есть задача: разыменовать бинарный пакет в srpm, по srpm вычислить
> таг/коммит, найти репы с этим коммитом на git.alt'е.

а что если туда же добавить скритину в аттаче? простая как пробка, не
такая оптимальная/быстрая, но работает :) сделана для подстановки в rules
не только version, release и name, но и любых другиз макросов rpm
-- 
С уважением
Афанасов Дмитрий
----------- следующая часть -----------
#!/bin/bash

fatal()
{
        [ -z "$1" ] && echo "$@"
        exit 1
}

while :; do
        case $1 in
                --debug)
                set -x
                ;;
                --spec)
                shift
                SPEC=$1
                ;;
                *)
                [ -z "$1" ] && break
                ;;
        esac
        shift
done

rules=
rules_in=
[ -f .gear/rules.in ] && rules_in=".gear/rules.in"
[ -f .gear-rules ] && rules_in=".gear-rules.in"

[ -f "$rules_in" ] || exit

rules="${rules_in%*.in}"

[ -z "$SPEC" ] && SPEC=`ls *.spec 2>/dev/null`
[ -f "$SPEC" ] || fatal "spec $SPEC not found"

vars="$(awk '
{
        line = $0;
        while(match(line, /@([a-z]+)@/, f))
        {
                if(!x[f[1]])
                {
                        print f[1];
                        x[f[1]] = 1;
                }
                line = substr(line, RSTART + RLENGTH)
        }
}' $rules_in)"

tmpspec=`mktemp --tmpdir spec-XXXXX`
trap "rm -f $tmpspec" INT TERM

install -p -m644 "$rules_in" "$rules" || fatal

for var in $vars; do
        cat $SPEC > $tmpspec
        echo "%$var" >> $tmpspec
        val="$(rpm -bE $tmpspec | tail -1)"

        [ -z "$val" ] && fatal "$var not expanded"

        echo "substitute $var --> $val"
        perl -i -npe "s/\@\Q$var\E@/$val/g" $rules
done

rm -f $tmpspec
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20090527/0c08e04f/attachment.bin>


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