[devel] [#56408] DONE (try 52) perl.git=5.14.2-alt1 srpm=perl-Filter-1.39-alt1.src.rpm ...

Igor Vlasenko vlasenko на imath.kiev.ua
Ср Окт 26 19:56:57 MSK 2011


On Tue, Oct 25, 2011 at 02:36:31AM +0400, Alexey Tourbin wrote:
> Некоторые соображения об автоматической сборке пакетов.

[...]
Ок, список пожаланий принят.

Мое вмдение - что робот - это инструмент, и желание пользователя - закон.
Ему нужна гибкость, чтобы точно и корректно выполнять приказы хозяина.

в свое время, чтобы достичь гибкости, я начал с того,
что создал для предметной области специализированный язык 
для манипуляции в спек-файлах и исходных пакетах,
в виде набора объектных методов на perl,
и далее на этом языке начал писать различные роботы и конвертеры.

Теперь я понимаю свою задачу в том, чтобы выпустиь 
этот специализированный язык в массы - продумать и стабилизировать, 
чтобы был как можно более простым, и тщательно документировать.

Чтобы им можно было пользоваться всем желающим.
Чтобы быстрее и удобнее было выучить начала perl плюс познакомиться
с примерами и документацией на специализированный язык,
чем выполнять какую-то операцию вручную над 20+ пакетами
или писать свой робот с нуля.

Пока у меня фаза продумывания и стабилизации.

На примере пожеланий Алексея к роботу.
Как бы я постарался реализовать эти пожелания.

Тупое обновление версии встроено в утилиту srpmnmu.
Допустим, скачали новые исходники
$ wget -c 'http://cpan.org.ua/authors/id/J/JF/JFEARN/XML-TreeBuilder-4.1.tar.gz'

теперь вызываем 
$ srpmnmu --changelog '- CPAN update' --version 4.1 \
 --copy_to_sources ./XML-TreeBuilder-4.1.tar.gz \
/var/ftp/pub/Linux/ALT/Sisyphus/files/SRPMS/perl-XML-TreeBuilder-3.09-alt3.1.src.rpm
Записан: perl-XML-TreeBuilder-4.1-alt1.src.rpm

Теперь, например, хотим включить _unpackaged_files_terminate_build.
Создаем файл unpackaged_files_terminate_build.pl такого содержания:
-------unpackaged_files_terminate_build.pl------------
#!/usr/bin/perl
push @SPECHOOKS, 
sub {
    my ($spec) = @_;
    my $mainsec=$spec->main_section;
    $mainsec->unshift_body('%define _unpackaged_files_terminate_build 1'."\n") unless ($mainsec->match_body(qr'_unpackaged_files_terminate_build');
};
------------------------------------------------------
этот файл можно включить в предыдущий вызов с помощью опции 
 --hook unpackaged_files_terminate_build.pl
или, например, использовать его отдельно для NMU по добавлению
в пакеты этой опции. сразу на 1300+ пакетов:
$ girar-nmu-prepare --changelog '- NMU: enabled _unpackaged_files_terminate_build' --hook unpackaged_files_terminate_build.pl /ALT/Sisyphus/files/SRPMS/perl-*

Таких hook'ов можно добавить в опции сколько угодно, например, добавление 
BuildRequires: в результате анализа искходников, делая при желании 
робот более "умным", или, наоборот, не добавлять,
чтобы поведение робота было максимально тупым.

Идея в том, что специализированный язык для предметной области
позволяет гораздо проще получать новую функциональность.

За бортом этого краткого введения остались вопросы анализа
пересобранных пакетов, как то недоукомплектации, переукомплектации,
которые имеет смысл выполнять отдельными утилитами и вызывать в обвязке.


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



Подробная информация о списке рассылки Devel