ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] ANN: mosquito-rebuild
@ 2016-05-18 16:34 Ivan Zakharyaschev
  2016-05-18 18:23 ` Igor Vlasenko
  0 siblings, 1 reply; 5+ messages in thread
From: Ivan Zakharyaschev @ 2016-05-18 16:34 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 5124 bytes --]

Хочу поделиться всякими скриптами, которые возникли при массовой обработке 
пакетов. Не то, чтобы в них есть большие хитрости или они уникальные, но 
может быть, кому-нибудь будет удобно такое поведение, которое было удобно 
мне.

Дополнения, пожелания, замечания приветствуются.

Начну с очень простого одного скрипта -- mosquito-rebuild; упаковывается в 
запланированный пакет mosquito-hive.

http://git.altlinux.org/people/imz/public/mosquito-hive.git?p=mosquito-hive.git;a=blob;f=README.md;hb=HEAD 
:

`mosquito-hive` -- Simple scripts to rebuild a collection of packages
in hasher.

The results are reported in a way similar to the beehive of ALT Sisyphus.

## Features

* rebuild selected SRPMS
** parallel builds, too
* get the list of SRPMS corresponding to a list of selected binary
   RPMS
** make the correspondence relations between src and bin pkg names,
   and between them and files (if src.list and bin.list are missing)
* diff between our results and the results of ALT Sisyphus beehive
   (based on the logs)

The features beyond the first bullet are WORK-IN-PROGRESS (not
packaged yet).

## rebuild selected SRPMS -- `mosquito-rebuild`

The packages are given by their names as arguments on the command line.

`SRPMDIR` environment variable specifies the place to search for the
.src.rpm files (`/ALT/Sisyphus/files/SRPMS` by default, if `SRPMDIR` is
unset).

`hsh` is run in `~/hasher/` with your default configuration. If you
want to pass some options to `hsh`, you can put an executable
named `hsh` into your current directory to override the default `hsh`.

The build logs are saved into subdirs of the current directory (either
`success/` or `error/`) under the "exact" pkg name (with
version-release), similarly to beehive.

As for the list of selected pkgs, it is common to make a file with the
list once and then run further iterations of `mosquito-rebuild` like
this:

     mosquito-rebuild $(<srclist-some_description)

A minimal set of tools to help make such lists is provided; see below.

Some packages can be skipped by `mosquito-rebuild` based on either the
exact pkg name (with version-release) or just the plain name (without
version-release). They are read line-by-line from `srpms-to-skip` file
in the current directory (if it is readable).

* The exact match can be useful if a certain release was known to fail
   to build, but in case it gets updated in SRPMS, a rebuild should be
   tried (because the problem might have been fixed in the new
   release).
* The match by plain name can be useful for more brute (perhaps,
   manual) intervention.

The exact names of src pkgs which have been tried to be rebuilt (with
either result) are accumulated in `srpms-tried-to-build` file in
current directory. If you want to just skip them on any
iterations of `mosquito-rebuild`, you can simply:

     ln -sT srpms-tried-to-build srpms-to-skip

В реализации mosquito-rebuild основной (но не сложный) код см. в 
http://git.altlinux.org/people/imz/public/mosquito-hive.git?p=mosquito-hive.git;a=blob;f=rebuild-helper-one.sh;hb=HEAD
.

Пример использования:

[imz@altair test-mosquito]$ ln -sT srpms-tried-to-build srpms-to-skip
[imz@altair test-mosquito]$ SRPMDIR=/ALT/p7/files/SRPMS mosquito-rebuild apt-repo gear
apt-repo rebuild start
apt-repo-1.3.3-alt1 rebuild SUCCESS
gear rebuild start
gear-2.0.3-alt1 rebuild SUCCESS
[imz@altair test-mosquito]$ SRPMDIR=/ALT/p7/files/SRPMS mosquito-rebuild apt-repo less gear
apt-repo rebuild start
apt-repo-1.3.3-alt1 rebuild SKIP
less rebuild start
less-451-alt1 rebuild SUCCESS
gear rebuild start
gear-2.0.3-alt1 rebuild SKIP
[imz@altair test-mosquito]$ mosquito-rebuild apt-repo less gear
apt-repo rebuild start
apt-repo-1.3.5-alt1 rebuild SUCCESS
less rebuild start
less-481-alt1 rebuild SUCCESS
gear rebuild start
gear-2.0.7-alt1 rebuild SUCCESS
[imz@altair test-mosquito]$ mosquito-rebuild trilinos10
trilinos10 rebuild start
trilinos10-11.12.1-alt2 rebuild ERROR
[imz@altair test-mosquito]$ ls error/
trilinos10-11.12.1-alt2
[imz@altair test-mosquito]$ ls success/
apt-repo-1.3.3-alt1  apt-repo-1.3.5-alt1  gear-2.0.3-alt1  gear-2.0.7-alt1 
less-451-alt1  less-481-alt1
[imz@altair test-mosquito]$


Пока сборка пакета с ним натыкается на то, что shell.req не понимает 
shopt -s extglob, но до того, как можно будет отправить его на сборку в 
Sisyphus, можно будет что-то с этим решить:

/usr/src/tmp/mosquito-hive-buildroot/usr/share/mosquito-hive/rebuild-helper-one.sh: 
line 22: syntax error near unexpected token `('
/usr/src/tmp/mosquito-hive-buildroot/usr/share/mosquito-hive/rebuild-helper-one.sh: 
line 22: `	-*([0-9])) num="${1#-}"; shift;;'
shell.req: ERROR: 
/usr/src/tmp/mosquito-hive-buildroot/usr/share/mosquito-hive/rebuild-helper-one.sh: 
/bin/bash --rpm-requires failed
find-requires: ERROR: /usr/lib/rpm/shell.req failed
error: /bin/sh failed
error: Failed to find Requires

Но можно "установить" как-то так:

git clone http://git.altlinux.org/people/imz/public/mosquito-hive.git
ln -svT mosquito-hive/rebuild-helper-one.sh mosquito-rebuild-helper-one
ln -svT mosquito-hive/rebuild.sh mosquito-rebuild

-- 
Best regards,
Ivan

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

* Re: [devel] ANN: mosquito-rebuild
  2016-05-18 16:34 [devel] ANN: mosquito-rebuild Ivan Zakharyaschev
@ 2016-05-18 18:23 ` Igor Vlasenko
  2016-05-18 18:34   ` Ivan Zakharyaschev
  0 siblings, 1 reply; 5+ messages in thread
From: Igor Vlasenko @ 2016-05-18 18:23 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, May 18, 2016 at 07:34:04PM +0300, Ivan Zakharyaschev wrote:
> Хочу поделиться всякими скриптами, которые возникли при массовой обработке
> пакетов. Не то, чтобы в них есть большие хитрости или они уникальные, но
> может быть, кому-нибудь будет удобно такое поведение, которое было удобно
> мне.

Хорошо! 
Я у себя завел несколько специализированных скриптов для разных
целей, но не пытался дожать до совместно используемого пакета.

> Дополнения, пожелания, замечания приветствуются.

> Начну с mosquito-rebuild

Пожелание есть.
Хотелось бы иметь режим работы mosquito-rebuild
или wrapper над mosquito-rebuild, чтобы иметь
возможность (параллельно) пересобрать выхлоп
girar-nmu-prepare, в случае, когда порядок сборки пакетов
не важен.

girar-nmu-local-build он только для последовательной
пересборки в порядке списка.


-- 

I V


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

* Re: [devel] ANN: mosquito-rebuild
  2016-05-18 18:23 ` Igor Vlasenko
@ 2016-05-18 18:34   ` Ivan Zakharyaschev
  2016-05-19 19:45     ` Igor Vlasenko
  0 siblings, 1 reply; 5+ messages in thread
From: Ivan Zakharyaschev @ 2016-05-18 18:34 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 1582 bytes --]

On Wed, 18 May 2016, Igor Vlasenko wrote:

> On Wed, May 18, 2016 at 07:34:04PM +0300, Ivan Zakharyaschev wrote:
>> Хочу поделиться всякими скриптами, которые возникли при массовой обработке
>> пакетов. Не то, чтобы в них есть большие хитрости или они уникальные, но
>> может быть, кому-нибудь будет удобно такое поведение, которое было удобно
>> мне.
>
> Хорошо! 
> Я у себя завел несколько специализированных скриптов для разных
> целей, но не пытался дожать до совместно используемого пакета.

Рад получить отклик! Дожать до совместно используемого пакета -- это 
именно то, чего хочется в идеале.

>> Дополнения, пожелания, замечания приветствуются.
>
>> Начну с mosquito-rebuild
>
> Пожелание есть.
> Хотелось бы иметь режим работы mosquito-rebuild
> или wrapper над mosquito-rebuild, чтобы иметь
> возможность (параллельно) пересобрать выхлоп
> girar-nmu-prepare, в случае, когда порядок сборки пакетов
> не важен.
>
> girar-nmu-local-build он только для последовательной
> пересборки в порядке списка.

С параллельностью я пока экспериментирую, но в пакете не публикую, потому 
что не всё проверено/продумано. Но в ближайшее время добавлю 
параллельность.

Начало этому положено mike@ в https://www.altlinux.org/Hasher/parallel .

Получается, уже существующий girar-nmu-local-build во многом дублирует 
нынешний mosquito-rebuild. Посмотрю внимательнее, сравню. Спасибо за 
упоминание сейчас, потому что я, конечно, вероятно, про него читал, но уже 
вылетело из головы.

Мне в целом была удобна манера работы beehive, поэтому я примерно её и 
повторял.

-- 
Best regards,
Ivan

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

* Re: [devel] ANN: mosquito-rebuild
  2016-05-18 18:34   ` Ivan Zakharyaschev
@ 2016-05-19 19:45     ` Igor Vlasenko
  2016-05-19 20:02       ` Dmitry V. Levin
  0 siblings, 1 reply; 5+ messages in thread
From: Igor Vlasenko @ 2016-05-19 19:45 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, May 18, 2016 at 09:34:42PM +0300, Ivan Zakharyaschev wrote:
> Рад получить отклик! Дожать до совместно используемого пакета -- это именно
> то, чего хочется в идеале.

> С параллельностью я пока экспериментирую, но в пакете не публикую, потому
> что не всё проверено/продумано. Но в ближайшее время добавлю параллельность.
> 
> Начало этому положено mike@ в https://www.altlinux.org/Hasher/parallel .
> 
> Получается, уже существующий girar-nmu-local-build во многом дублирует
> нынешний mosquito-rebuild. Посмотрю внимательнее, сравню. Спасибо за
> упоминание сейчас, потому что я, конечно, вероятно, про него читал, но уже
> вылетело из головы.
> 
> Мне в целом была удобна манера работы beehive, поэтому я примерно её и
> повторял.

Брошу свои кривые скрипты с basalt.
На что можно посмотреть, это 1) защита против засирания лога бесконечным
циклом - head -c 10M выбивает после 10M и останавливает сборку.
"$@" $i 2>&1 | tee "$logfile" | head -c 10M # against infinite loops
2) окна tmux как оболочка для параллельной сборки

[viy@basalt ~]$ cat bin/TMUX_BUILD 
#!/bin/sh
num=9
[ -n "$1" ] && num=$1
tmux new-session -n w0 -s build -d
for i in `seq 1 $num`; do tmux new-window -a -n $i -t build "AILB $i"; done

[viy@basalt ~]$ cat bin/AILB 
#!/bin/sh
s=$1;
mkdir -p $TMPDIR/hasher$s; 
LB OUT.$s hsh --apt-config=/home/viy/.autorepo/apt/apt.conf.x86_64 --with-stuff --mountpoints=/proc  --packager="Igor Vlasenko <viy@altlinux.ru>" --number=$s $TMPDIR/hasher$s

[viy@basalt ~]$ cat bin/LB
#!/bin/sh

OUT=$1
shift

LOGDIR=${OUT}-hsh.logs-failure
mkdir -p $LOGDIR

for i in $OUT/* ; do
    echo hsh-ing $i;
    j=`basename $i`
    logfile="$LOGDIR/$j.log"
    echo RUN "$@" $i
    "$@" $i 2>&1 | tee "$logfile" | head -c 10M # against infinite loops
    [ ${PIPESTATUS[0]} -eq 0 ] && rm $i && rm "$logfile"
done

rmdir -p $LOGDIR 2>/dev/null



-- 

I V


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

* Re: [devel] ANN: mosquito-rebuild
  2016-05-19 19:45     ` Igor Vlasenko
@ 2016-05-19 20:02       ` Dmitry V. Levin
  0 siblings, 0 replies; 5+ messages in thread
From: Dmitry V. Levin @ 2016-05-19 20:02 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 598 bytes --]

On Thu, May 19, 2016 at 10:45:53PM +0300, Igor Vlasenko wrote:
[...]
> На что можно посмотреть, это 1) защита против засирания лога бесконечным
> циклом - head -c 10M выбивает после 10M и останавливает сборку.
> "$@" $i 2>&1 | tee "$logfile" | head -c 10M # against infinite loops

$ man hasher-priv |colcrt |sed -n '/wlimit.bytes.written/,/^$/{/-/!p}'
       wlimit bytes written
              Define limit of output generated by child process, in bytes.  If
              wlimit bytes written config parameter is also set, then  minimal
              value will be used.


-- 
ldv

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

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

end of thread, other threads:[~2016-05-19 20:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-18 16:34 [devel] ANN: mosquito-rebuild Ivan Zakharyaschev
2016-05-18 18:23 ` Igor Vlasenko
2016-05-18 18:34   ` Ivan Zakharyaschev
2016-05-19 19:45     ` Igor Vlasenko
2016-05-19 20:02       ` Dmitry V. Levin

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