ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Igor Vlasenko <vlasenko@imath.kiev.ua>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Cc: Anton Farygin <rider@altlinux.com>
Subject: [devel] I: gear-uupdate second-announce.
Date: Wed, 11 Jun 2014 20:10:00 +0300
Message-ID: <20140611170959.GA24359@dad.imath.kiev.ua> (raw)
In-Reply-To: <53981850.4030805@altlinux.com>

On Wed, Jun 11, 2014 at 12:50:24PM +0400, Anton Farygin wrote:
> следующий этап - научить rpm-uscan обновлять правильным образом git

Это давно пройденный этап :)

Специально для rpm-uscan я когда-то написал утилиту gear-uupdate(1)
которая тем и занимается, что обновляет правильным образом git
из исходников.

Поскольку утилита малоизвестная, воспользуюсь случаем, чтобы ее
повторно анонсировать.

> Оно умеет читать .gear-rules ? или какие-то настройки из git ?

Именно. gear-uupdate(1) -- это обертка над парой утилит
gear-uupdate-prepare(1) и gear-uupdate-execute.

gear-uupdate-prepare c помощью библиотеки perl-Gear-Rules
читает .gear[-/]rules, изучая директивы tar и diff, вычисляет,
в какой ветке (и каком подкаталоге если есть) находятся исходники,
есть ли отдельные ветви для патчей, если исходники в отдельной ветке,
то как ее потом мержить в ветку с .gear (просто или с -s ours).

Поддерживаются все основные разумные схемы gear.

> у меня исходники лежат в бранче upstream и мержатся в master. 

Эта схема в числе поддерживаемых :)

> Но не всегда ;)

Проверить, поддерживается ли конкретная схема gear репозитория,
можно с помощью утилиты gear-rules-verify.

gear-rules-verify выдаст подробную диагностику,
совместим ли репозиторий с gear-uupdate(1).

В частности, если в репозитории есть коммиты, автор которых
не состоит в team, то gear-uupdate откажется работать.
Логика здесь в том, что похоже, репозиторий ранее обновлялся
из апстримного git/svn/otherVCS, а теперь мы хотим обновить
его из тарбола. как правило, так делать не надо.
Вместо полученного треш-репозитория лучше
завести новый git репозиторий или залить обновление как srpm.

А так, большое количество схем gear репозиториев поддерживается.

Руками его запускают так:
gear-uupdate --upstream-version 6.8.9.3 ImageMagick-6.8.9-3.tar.xz

При первом запуске лучше не запускать сразу gear-uupdate, а запустить 
gear-uupdate-prepare --upstream-version 6.8.9.3 ImageMagick-6.8.9-3.tar.xz

gear-uupdate-prepare сначала выполнит проверки из gear-rules-verify.

Затем, gear-uupdate-prepare (ничего не меняя в репозитории)
генерирует набор shell скриптов. Эти скрипты могут быть созданы
в корне gear репозитория, если апстрим в подкаталоге в текущей ветке.
в остальных случаях скрипты надо прятать от git, поэтому они создаются
в папке .git/uupdate/.
после выполнения gear-uupdate-prepare
в .git/uupdate/ будет что-то вроде

01-checkout-and-update-upstream-branch.sh
02-merge-upstream-to-patch1-branch.sh
...
07-merge-upstream-to-patch6-branch.sh
10-merge-to-main-and-update-spec-and-tags.sh

Эти скрипты можно просмотреть и убедиться еще раз,
что робот понял структуру репозитория правильно.

После чего их можно выполнить с помощью gear-uupdate-execute.
Далее уже сразу можно запускать gear-uupdate.

Впрочем, rpm-uscan (и gear-cronbuild) обучен запускать
gear-uupdate самостоятельно.

gear-cronbuild при наличии watch файла и отсутствии 
cronbuild скриптов просто молча и принудительно запускает 
gear-uupdate.

rpm-uscan с обычным watch файлом так не делает.

Есть 2 варианта, как заставить rpm-uscan сразу после скачивания
вызвать gear-uupdate:
1) вызвать rpm-uscan с опцией,
rpm-uscan --force-action gear-uupdate
2) добавить в watch файл магию - добавить еще одну колонку,
в которой написать uupdate (можно gear-uupdate).

uupdate -- это магическая утилита из debian, которая
обновляет debian репозиторий. у нас gear репозиторий,
поэтому ей на замену я написал gear-uupdate,
которая обновляет gear репозиторий,
так, чтобы она была полностью совместима
с debian --- все, что написано в uscan(1) (тж. rpm-uscan(1))
будет работать и у нас.


--

I V



  parent reply	other threads:[~2014-06-11 17:10 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-10 14:12 [devel] I: watch.altlinux.org теперь обрабатывает и watch-файлы Igor Vlasenko
2014-06-10 14:36 ` Michael Shigorin
2014-06-10 16:21   ` Igor Vlasenko
2014-06-11  7:01   ` Paul Wolneykien
2014-06-11  7:13     ` Michael Shigorin
2014-06-11  8:50 ` Anton Farygin
2014-06-11  9:00   ` Michael Shigorin
2014-06-11 17:10   ` Igor Vlasenko [this message]
2014-06-11  9:02 ` Anton Farygin
2014-06-11 17:16   ` Igor Vlasenko
2014-06-12  5:05     ` Anton Farygin
2014-06-12  8:08       ` Michael Shigorin
2014-06-12 16:25       ` Igor Vlasenko
2014-06-13  8:05         ` Anton Farygin
2014-06-13 14:20           ` Денис Смирнов
2014-06-13 18:24             ` Anton Farygin
2014-06-13 19:10               ` Денис Смирнов
2014-06-13 19:15                 ` Anton Farygin
2014-06-13 19:18                   ` alexei
2014-06-13 19:39                     ` Anton Farygin
2014-06-13 14:49           ` Igor Vlasenko
2014-06-13 18:28             ` Anton Farygin
2014-06-13 19:00               ` Anton Farygin
2014-06-13 19:52                 ` Igor Vlasenko
2014-06-14 22:20                   ` Igor Vlasenko
2014-06-15 11:40                     ` Anton Farygin
2014-06-20  9:11 ` Anton Farygin
2014-06-20 11:49   ` Igor Vlasenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140611170959.GA24359@dad.imath.kiev.ua \
    --to=vlasenko@imath.kiev.ua \
    --cc=devel@lists.altlinux.org \
    --cc=rider@altlinux.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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