ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] girar-utils
@ 2009-05-27 14:13 Afanasov Dmitry
  2009-05-27 14:19 ` Alexey I. Froloff
  0 siblings, 1 reply; 6+ messages in thread
From: Afanasov Dmitry @ 2009-05-27 14:13 UTC (permalink / raw)
  To: ALT Linux Team development discussions


[-- Attachment #1.1: Type: text/plain, Size: 885 bytes --]

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

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
-- 
С уважением
Афанасов Дмитрий

[-- Attachment #1.2: gear-update-rules --]
[-- Type: text/plain, Size: 1351 bytes --]

#!/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

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-05-27 20:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-05-27 14:13 [devel] girar-utils Afanasov Dmitry
2009-05-27 14:19 ` Alexey I. Froloff
2009-05-27 14:26   ` Afanasov Dmitry
2009-05-27 19:20     ` Alexey Rusakov
2009-05-27 20:08       ` Afanasov Dmitry
2009-05-27 20:36       ` Alexey I. Froloff

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git