[devel] СБорка perl
Igor Vlasenko
vlasenko на imath.kiev.ua
Вт Ноя 2 20:49:18 UTC 2010
On Tue, Nov 02, 2010 at 03:33:41PM +0300, Vladimir Lettiev wrote:
> Думаю по этому списку можно начинать готовить работа (viy@ ?)
Ready!
Нужные утилиты собраны в пакет girar-nmu.
Я планирую допилить этот пакет и рассказать на wiki как им
пользоваться, на примере задачи обновить perl.
Хотя пакет еще не готов (сорри!), забегу наперед и расскажу,
как им уже сейчас можно пользоваться, поскольку у вас уже есть
список пакетов и сортировка транзакции.
в girar-nmu есть утилита girar-nmu-prepare. Вызов выглядит как
$ girar-nmu-prepare \
--changelog '- rebuild with new perl' \
--hook ./perl_51x_upgrade.pl \
`cat src.rpm.list`
где в файле src.rpm.list указаны пути к src.rpm пакетов,
__в том числе и собирающихся из git__, которые необходимо добавить
в task, a ./perl_51x_upgrade.pl -- это нижеприведенный скрипт на перл
для моей библиотечки RPM::Source::Editor, который реализует
указанный вами алгоритм.
Я еще добавил замену %perl_vendor_man1dir на %_man1dir,
так как у меня создалось впечатление, что этот макрос Алексей
собрался убить. Если не так, то
$section->subst(qr'\%perl_vendor_man1dir','%_man1dir');
можно выбросить.
#--------------------------------------------
#!/usr/bin/perl -w
push @SPECHOOKS,
sub {
my ($spec) = @_;
my $man1found=0;
foreach my $section ($spec->get_sections()) {
if ($section->get_type() eq 'file') {
$section->exclude(qr'\%perl_vendor_man3dir');
$man1found||=$section->match(qr'\%perl_vendor_man1dir');
# is %perl_vendor_man1dir going to be killed too?
$section->subst(qr'\%perl_vendor_man1dir','%_man1dir');
}
}
if ($man1found) {
my $installsec=$spec->get_section('install');
unless ($installsec) {
warn "Oops! no \%install section :(";
return;
}
if ($installsec->match(qr'\%perl_vendor_build')) {
$installsec->subst(qr'^\s*\%perl_vendor_build','%perl_vendor_build INSTALLMAN1DIR=%_man1dir');
$spec->get_section('package','')->push_body('
# automatically added during perl 5.8 -> 5.10 upgrade.
# perl-podlators is required for pod2man conversion.
BuildRequires: perl-podlators
');
}
}
};
#---------------------------------------
Нажать, как говорится, enter, и
в результате в папках будут лежать готовые для добавления в task:
в OUT.SRPMS -- src.rpm, их надо будет rpm --sign *, rsync -avp * git.alt:
и добавлять как add srpm <...>.src.rpm
а OUT.gits -- клонированные git репозитарии с готовым nmu.
в girar-nmu есть утилита girar-nmu-task-add-git.
добавить в task сборку из git можно одной командой:
girar-nmu-task-add-git OUT.gits/path/to/git [task number]
К сожалению, вам пока еще останется небольшой, но кусок работы -
заскриптовать добавление задач в task, чтобы оно проходило
в том порядке, как указано у вас в списке.
В будущем все работы - сортировку и заливку в task будет выполнять
утилита, но пока еще не доделано. Объявлю, когда будет готово.
Извиняюсь, что анонсирую недоделанное, решил, что
вам нет смысла ждать готовности --- уверен, заскриптовать
добавление задач в task в правильном порядке для вас не проблема.
--
Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine
Подробная информация о списке рассылки Devel