[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