LINUX.ORG.RU

[perl,emerge] Получить больше инфы при сборке.


0

0

Думаю, многие пользователи генты сталкивались с тем, что при сборке большого числа пакетов всякие информационные сообщения проносятся мимо. Можно, конечно, для каждого пакета ebuild посмотреть, но может есть какие-то способы поудобнее. Написал тут небольшой скриптик на перле, грепающий ебилды. Используется, например, так:

# emerge -uvDN world -p | emmsg.pl

Скажем, просто емердж выдаёт:
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild U ] sys-apps/man-pages-3.20 [3.19] USE="nls" LINGUAS="ru -cs -da -de -es -fr -it -ja -nl -pl -ro -zh_CN" 1,062 kB
[ebuild N ] virtual/poppler-utils-0.10.5 USE="abiword" 0 kB
[ebuild R ] media-libs/gstreamer-0.10.22 USE="nls -test (-debug%*)" 0 kB
[ebuild U ] media-libs/gst-plugins-base-0.10.22 [0.10.21] USE="nls -debug" 2,069 kB
[ebuild U ] app-misc/hal-info-20090330 [20090309] 135 kB
[ebuild N ] virtual/poppler-glib-0.10.5 USE="cairo" 0 kB

Total: 6 packages (3 upgrades, 2 new, 1 reinstall), Size of downloads: 3,264 kB

После пропуска через скрипт:

These are the packages that would be merged, in order:

Calculating dependencies ... done!
[ebuild U ] sys-apps/man-pages-3.20 [3.19] USE="nls" LINGUAS="ru -cs -da -de -es -fr -it -ja -nl -pl -ro -zh_CN" 1,062 kB
7:DESCRIPTION="A somewhat comprehensive collection of Linux man pages"
8:HOMEPAGE="http://www.kernel.org/doc/man-pages/";
51: einfo "If you don't have a makewhatis cronjob, then you"
52: einfo "should update the whatis database yourself:"
53: einfo " # makewhatis -u"
[ebuild N ] virtual/poppler-utils-0.10.5 USE="abiword" 0 kB
7:DESCRIPTION="Virtual package, includes packages that contain the psto* utilities"
8:HOMEPAGE="http://poppler.freedesktop.org/";
[ebuild R ] media-libs/gstreamer-0.10.22 USE="nls -test (-debug%*)" 0 kB
12:DESCRIPTION="Streaming media framework"
13:HOMEPAGE="http://gstreamer.sourceforge.net"
[ebuild U ] media-libs/gst-plugins-base-0.10.22 [0.10.21] USE="nls -debug" 2,069 kB
9:DESCRIPTION="Basepack of plugins for gstreamer"
10:HOMEPAGE="http://gstreamer.sourceforge.net"
[ebuild U ] app-misc/hal-info-20090330 [20090309] 135 kB
7:DESCRIPTION="The fdi scripts that HAL uses"
8:HOMEPAGE="http://hal.freedesktop.org/";
[ebuild N ] virtual/poppler-glib-0.10.5 USE="cairo" 0 kB
7:DESCRIPTION="Virtual package, includes packages that contain libpoppler-glib.so"
8:HOMEPAGE="http://poppler.freedesktop.org/";

Total: 6 packages (3 upgrades, 2 new, 1 reinstall), Size of downloads: 3,264 kB

Сам скрипт:
------------------
#!/usr/bin/perl -w
use strict;

open FD, "-" or
die "Can`t open STDIN: $!";
my @data = <FD>;
close FD;

my $tmpl = qr/\[ebuild[^\]]+]\s(\D+)(\S+)/;
foreach (@data){
print;
if (/$tmpl/){
my $pkg = $1;
chop $pkg;
my $fullp = "/usr/portage/$pkg/*-$2.ebuild";
system "grep -rn DESCRIPTION $fullp";
system "grep -rn HOMEPAGE $fullp";
system "grep -rn einfo $fullp";
system "grep -rn elog $fullp";
system "grep -rn ewarn $fullp";
}
}
---------------
Из недостатков:
- Не сохраняются цвета из оригинвльного вывода емерджа (как сделать)
- Регексп не совсем правилен - если в названии пакета встретится цифра работать не будет.


Re: [perl,emerge] Получить больше инфы при сборке.

В последних версиях portage, вроде, все einfo повторно выводятся _после_ отработки emerge.

home_user ★★★ ()

Re: [perl,emerge] Получить больше инфы при сборке.

Если мимо проносятся действительно важные сообщения, то это просто
нарушение политики написания ебилдов, попроси мантейнера исправить
это.

Сообщения с `elog` дублируются после окончания работы emerge.

`einfo` нужно в ебилде использовать, когда у тебя, к примеру, какие-то
длительные и молчаливые тесты идут, чтобы юзер не думал, что всё
зависло.

Sphinx ★★☆☆ ()

Re: [perl,emerge] Получить больше инфы при сборке.

Ну проще через скрипт прогнать, чем багрепоры слать. Хотя лучше делать и то и другое. В приведённом примере, как раз, используется не по указанному тобою назначению. Иногда это мелочи, а иногда может и жутко подгадить.

lv ()

Re: [perl,emerge] Получить больше инфы при сборке.

> Ну проще через скрипт прогнать, чем багрепоры слать.

Катастрофически неверно! Если тебе надо здесь и сейчас, то скрипт написать можно, конечно. Но багрепорт отправить стоит в любом случае.

const86 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.