* [devel] I: rpm-build-perl-0.5
@ 2004-12-06 2:06 Alexey Tourbin
2004-12-08 3:36 ` [devel] " Alexey Tourbin
2004-12-13 7:16 ` [devel] I: rpm-build-perl-0.5 Andrey Brindeew
0 siblings, 2 replies; 9+ messages in thread
From: Alexey Tourbin @ 2004-12-06 2:06 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 1975 bytes --]
Здравствуйте.
Я опять переделал rpm-build-perl. Согласно проведённому мной
исследованию, новая версия rpm-build-perl на 42% лучше предыдущей. :)
B::Deparse больше не используется, а используется B::PerlReq собственной
разработки, который ходит по optree, ищет require/dofile опкоды и таким
образом выдаёт зависимости напрямую:
$ perl -MO=PerlReq,-verbose /usr/lib/perl5/FileHandle.pm
# perl-base >= 1:5.6.0 at line 3
perl-base >= 1:5.6.0
# perl(strict.pm) at line 4 (builtin SKIP)
# perl(strict.pm) at line 46 (builtin SKIP)
# perl(IO/File.pm) at line 9
perl(IO/File.pm)
# perl(Exporter.pm) at line 72 (builtin SKIP)
# perl(Fcntl.pm) at line 80 inside eval (SKIP)
/usr/lib/perl5/FileHandle.pm syntax OK
$
Работает в 3-4 раза быстрее.
Выравнивание версий мной также реализовано, как и обсуждалось.
Теперь при пересборке перловых пакетов могут возникнуть unmet'ы
из-за различия в выравнивании версий. Большая часть этих unmet'ов
будет ликвидирована с появлением perl-5.8.6, собранного в новой среде
(это ожидается в конце предстоящей недели). Необходимости
в лавинообразной пересборке и обновлении перловых пакетов возникнуть
не должно.
Старого кода по существу не осталось, поэтому я везде обновил
copyright'ы.
* Mon Dec 06 2004 Alexey Tourbin <at@altlinux> 0.5-alt1
- bumped version (0.3 -> 0.5) to reflect major changes
- implemented B::PerlReq and made perl.req use it instead of B::Deparse
- new PerlReq::Utils module (convertion and formatting routines)
- version numbers now rounded to 3 digits after decimal point
- v-string versions now treated as floats (e.g. 1.2.3 -> 1.002)
- all dependencies on particular perl version converted to 1:5.x.y form
- enabled version extraction from PREREQ_PM in Makefile.PL
- wrote/updated/enhanced documentation, started README.ALT
- started test suite (more than 50 tests)
- downgraded perl requirements to 5.6.0
--
[Advertisement: I can consider a job as a Perl expert.]
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* [devel] Re: I: rpm-build-perl-0.5
2004-12-06 2:06 [devel] I: rpm-build-perl-0.5 Alexey Tourbin
@ 2004-12-08 3:36 ` Alexey Tourbin
2004-12-08 5:12 ` Alexey I. Froloff
2004-12-13 7:16 ` [devel] I: rpm-build-perl-0.5 Andrey Brindeew
1 sibling, 1 reply; 9+ messages in thread
From: Alexey Tourbin @ 2004-12-08 3:36 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 1429 bytes --]
On Mon, Dec 06, 2004 at 05:06:18AM +0300, Alexey Tourbin wrote:
> Я опять переделал rpm-build-perl. Согласно проведённому мной
> исследованию, новая версия rpm-build-perl на 42% лучше предыдущей. :)
Кажется, это щастье ушло в сизиф.
Меж тем у меня уже есть две головоломки для почтенной публики.
1)
$ /usr/lib/rpm/perl.prov /usr/lib/perl5/vendor_perl/Pod/POM.pm
perl(Pod/POM.pm) = 0.170
$ /usr/lib/rpm/perl.prov /usr/lib/perl5/vendor_perl/Net/SNMP.pm
perl(Net/SNMP.pm) = 4.001
$ /usr/lib/rpm/perl.prov /usr/lib/perl5/vendor_perl/Net/SNMP.pm /usr/lib/perl5/vendor_perl/Pod/POM.pm
# failed to extract version: $VERSION = 0.17;
perl(Pod/POM.pm)
perl(Net/SNMP.pm) = 4.001
$
Вопрос на пару трубок: почему в последнем случае не извлеклась версия?
2)
$ /usr/lib/rpm/perl.prov /usr/lib/perl5/vendor_perl/i386-linux/Gtk2/Gdk/Keysyms.pm
perl(Gtk2/Gdk/Keysyms.pm)
$ /usr/lib/rpm/perl.prov /usr/lib/perl5/vendor_perl/i386-linux/Gtk2/GladeXML.pm
perl(Gtk2/GladeXML.pm) = 1.0
$ /usr/lib/rpm/perl.prov /usr/lib/perl5/vendor_perl/i386-linux/Gtk2/Gdk/Keysyms.pm /usr/lib/perl5/vendor_perl/i386-linux/Gtk2/GladeXML.pm
perl(Gtk2/Gdk/Keysyms.pm)
perl(Gtk2/GladeXML.pm)
$
Вопрос на одну трубку: почему в последнем случае не извлеклась версия?
Скрипт /usr/lib/rpm/perl.prov очень простой -- около 50 строк кода по
существу. В лучшие времена я бы даже объявил приз за каждую честно
разгаданную трубку. ;)
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Re: I: rpm-build-perl-0.5
2004-12-08 3:36 ` [devel] " Alexey Tourbin
@ 2004-12-08 5:12 ` Alexey I. Froloff
2004-12-08 6:12 ` Alexey Tourbin
2004-12-08 18:30 ` [devel] Re: perl-Apache-DBI Alexey Tourbin
0 siblings, 2 replies; 9+ messages in thread
From: Alexey I. Froloff @ 2004-12-08 5:12 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 874 bytes --]
* Alexey Tourbin <at@> [041208 06:37]:
> > Я опять переделал rpm-build-perl. Согласно проведённому мной
> > исследованию, новая версия rpm-build-perl на 42% лучше предыдущей. :)
> Кажется, это щастье ушло в сизиф.
Кстати, а такая проблема в новом r-b-p решена?
use constant MP2 => $mod_perl::VERSION >= 1.99;
BEGIN {
my @constants = qw( OK AUTH_REQUIRED FORBIDDEN DECLINED SERVER_ERROR );
if (MP2) {
require Apache::Const;
import Apache::Const @constants;
}
else {
require Apache::Constants;
import Apache::Constants @constants;
}
}
После чего в Requires попадают и Apache::Const и
Apache::Constants. Это perl-Apache-DBI 0.94, собирал сам для
2.2.
--
Regards, Sir Raorn.
-------------------
Я не знаю такого производителя софта, который бы развивал уже выпущенный
продукт в ущерб нового.
-- ldv in sisyphus@
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* [devel] Re: I: rpm-build-perl-0.5
2004-12-08 5:12 ` Alexey I. Froloff
@ 2004-12-08 6:12 ` Alexey Tourbin
2004-12-08 6:53 ` Alexey Tourbin
2004-12-08 18:30 ` [devel] Re: perl-Apache-DBI Alexey Tourbin
1 sibling, 1 reply; 9+ messages in thread
From: Alexey Tourbin @ 2004-12-08 6:12 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 1717 bytes --]
On Wed, Dec 08, 2004 at 08:12:12AM +0300, Alexey I. Froloff wrote:
> Кстати, а такая проблема в новом r-b-p решена?
>
> use constant MP2 => $mod_perl::VERSION >= 1.99;
>
> BEGIN {
> my @constants = qw( OK AUTH_REQUIRED FORBIDDEN DECLINED SERVER_ERROR );
> if (MP2) {
> require Apache::Const;
> import Apache::Const @constants;
> }
> else {
> require Apache::Constants;
> import Apache::Constants @constants;
> }
> }
>
> После чего в Requires попадают и Apache::Const и
> Apache::Constants. Это perl-Apache-DBI 0.94, собирал сам для
> 2.2.
Думаю, что решена, т.к. константные функции с пустым прототипом
подставляются на стадии компиляции (perlsub/Constant Functions), а потом
по дереву проходится оптимизатор (perlguts/constant folding).
$ perl -MO=Concise,-terse -e 'sub true(){1} if(true){require "asdf"} else{require "zxcv"}'
LISTOP (0x80662c0) leave [1]
OP (0x804fc88) enter
COP (0x80661e0) nextstate
LISTOP (0x8066420) scope
OP (0x804fce0) null [174]
UNOP (0x80663c8) require
SVOP (0x80662f8) const [1] PV (0x80643f0) "asdf"
-e syntax OK
$
$ echo "$ТВОЙ_КОД" >mp2.pl
$ perl.req --verbose mp2.pl
# perl(constant.pm) at line 1
# perl(Apache/Constants.pm) at line 10
mp2.pl syntax OK
perl(Apache/Constants.pm)
perl(constant.pm)
$
По-видимому, эта проблема уже с B::Deparse была решена:
$ perl -MO=Deparse mp2.pl
use constant ('MP2', $mod_perl::VERSION >= 1.99);
sub BEGIN {
my(@constants) = ('OK', 'AUTH_REQUIRED', 'FORBIDDEN', 'DECLINED', 'SERVER_ERROR');
do {
require Apache::Constants;
'Apache::Constants'->import(@constants)
};
}
mp2.pl syntax OK
$
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* [devel] Re: I: rpm-build-perl-0.5
2004-12-08 6:12 ` Alexey Tourbin
@ 2004-12-08 6:53 ` Alexey Tourbin
2004-12-08 6:57 ` Alexey I. Froloff
0 siblings, 1 reply; 9+ messages in thread
From: Alexey Tourbin @ 2004-12-08 6:53 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 1561 bytes --]
On Wed, Dec 08, 2004 at 09:12:07AM +0300, Alexey Tourbin wrote:
> On Wed, Dec 08, 2004 at 08:12:12AM +0300, Alexey I. Froloff wrote:
> > Кстати, а такая проблема в новом r-b-p решена?
> >
> > use constant MP2 => $mod_perl::VERSION >= 1.99;
> >
> > BEGIN {
> > my @constants = qw( OK AUTH_REQUIRED FORBIDDEN DECLINED SERVER_ERROR );
> > if (MP2) {
> > require Apache::Const;
> > import Apache::Const @constants;
> > }
> > else {
> > require Apache::Constants;
> > import Apache::Constants @constants;
> > }
> > }
> >
> > После чего в Requires попадают и Apache::Const и
> > Apache::Constants. Это perl-Apache-DBI 0.94, собирал сам для
> > 2.2.
>
> Думаю, что решена, т.к. константные функции с пустым прототипом
> подставляются на стадии компиляции (perlsub/Constant Functions), а потом
> по дереву проходится оптимизатор (perlguts/constant folding).
>
> $ perl -MO=Concise,-terse -e 'sub true(){1} if(true){require "asdf"} else{require "zxcv"}'
> LISTOP (0x80662c0) leave [1]
> OP (0x804fc88) enter
> COP (0x80661e0) nextstate
> LISTOP (0x8066420) scope
> OP (0x804fce0) null [174]
> UNOP (0x80663c8) require
> SVOP (0x80662f8) const [1] PV (0x80643f0) "asdf"
> -e syntax OK
> $
Иными словами, если в том коде, который ты привёл, только чуть выше,
есть "use mod_perl;", то результат будет зависеть от версии mod_perl'а
в сборочной среде. Иначе результат всегда будет по ветке else, т.к.
$mod_perl::VERSION даёт undef и undef >= 1.99 даёт false.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] Re: I: rpm-build-perl-0.5
2004-12-08 6:53 ` Alexey Tourbin
@ 2004-12-08 6:57 ` Alexey I. Froloff
0 siblings, 0 replies; 9+ messages in thread
From: Alexey I. Froloff @ 2004-12-08 6:57 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 833 bytes --]
* Alexey Tourbin <at@> [041208 09:55]:
> > > Кстати, а такая проблема в новом r-b-p решена?
> > Думаю, что решена, т.к. константные функции с пустым прототипом
> > подставляются на стадии компиляции (perlsub/Constant Functions), а потом
> > по дереву проходится оптимизатор (perlguts/constant folding).
> Иными словами, если в том коде, который ты привёл, только чуть выше,
> есть "use mod_perl;", то результат будет зависеть от версии mod_perl'а
> в сборочной среде. Иначе результат всегда будет по ветке else, т.к.
> $mod_perl::VERSION даёт undef и undef >= 1.99 даёт false.
OK, спасибо.
--
Regards, Sir Raorn.
-------------------
Собственно, работоспособность в данном случае означает тестируемость. Если
будут потребители, способные это тестировать - то будет работоспособное
решение.
-- cray in sisyphus@
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* [devel] Re: perl-Apache-DBI
2004-12-08 5:12 ` Alexey I. Froloff
2004-12-08 6:12 ` Alexey Tourbin
@ 2004-12-08 18:30 ` Alexey Tourbin
1 sibling, 0 replies; 9+ messages in thread
From: Alexey Tourbin @ 2004-12-08 18:30 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 635 bytes --]
On Wed, Dec 08, 2004 at 08:12:12AM +0300, Alexey I. Froloff wrote:
> После чего в Requires попадают и Apache::Const и
> Apache::Constants. Это perl-Apache-DBI 0.94, собирал сам для
> 2.2.
Кстати,
$ rpm -qp --lastchange ~sisyphus/i586/RPMS.classic/perl-Apache-DBI-0.91-alt1.i586.rpm
* Wed Jul 28 2004 Maxim Tkachenko <tma@altlinux> 0.91-alt1
- build for AltLinux
$
Меж тем версия 0.91 -- от февраля 2003 года, а 0.94 (последняя) -- от
февраля 2004-го. Т.е. в сизиф была направлена заведомо старая версия.
Непорядок.
А также это на самом деле noarch пакет.
Если были бы известны правила для NMU, я бы сделал NMU.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] I: rpm-build-perl-0.5
2004-12-06 2:06 [devel] I: rpm-build-perl-0.5 Alexey Tourbin
2004-12-08 3:36 ` [devel] " Alexey Tourbin
@ 2004-12-13 7:16 ` Andrey Brindeew
2004-12-13 9:05 ` [devel] " Alexey Tourbin
1 sibling, 1 reply; 9+ messages in thread
From: Andrey Brindeew @ 2004-12-13 7:16 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 442 bytes --]
On Mon, Dec 06, 2004 at 05:06:18AM +0300, Alexey Tourbin wrote:
> Я опять переделал rpm-build-perl. Согласно проведённому мной
> исследованию, новая версия rpm-build-perl на 42% лучше предыдущей. :)
Кстати, а её можно как-нибудь научить убирать за собой?
предупреждение: Installed (but unpackaged) file(s) found:
/.perl.req
--
WBR, Andrey Brindeew.
"No one person can understand Perl culture completely"
(C) Larry Wall.
[-- Attachment #2: Type: application/pgp-signature, Size: 245 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* [devel] Re: I: rpm-build-perl-0.5
2004-12-13 7:16 ` [devel] I: rpm-build-perl-0.5 Andrey Brindeew
@ 2004-12-13 9:05 ` Alexey Tourbin
0 siblings, 0 replies; 9+ messages in thread
From: Alexey Tourbin @ 2004-12-13 9:05 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 1049 bytes --]
On Mon, Dec 13, 2004 at 10:16:38AM +0300, Andrey Brindeew wrote:
> On Mon, Dec 06, 2004 at 05:06:18AM +0300, Alexey Tourbin wrote:
> > Я опять переделал rpm-build-perl. Согласно проведённому мной
> > исследованию, новая версия rpm-build-perl на 42% лучше предыдущей. :)
>
> Кстати, а её можно как-нибудь научить убирать за собой?
>
> предупреждение: Installed (but unpackaged) file(s) found:
> /.perl.req
Этот файл создается на стадии %build в текущем для стадии %build
каталоге, а на стадии %install перемещается в %buildroot, откуда его
потом подхватывает perl.req. Можно сделать, чтобы perl.req его и
удалял, но тогда повторный результат `rpm -bi --short-circuit' может
отличаться по зависимостям.
Можно было бы его вообще не класть в %buildroot, а брать из текущего
каталога для сборки, но я не знаю, как это сделать. rpm экспортирует
RPM_BUILD_DIR, а определить текущий каталог сборки, кажется, нельзя.
> --
> WBR, Andrey Brindeew.
> "No one person can understand Perl culture completely"
> (C) Larry Wall.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2004-12-13 9:05 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-12-06 2:06 [devel] I: rpm-build-perl-0.5 Alexey Tourbin
2004-12-08 3:36 ` [devel] " Alexey Tourbin
2004-12-08 5:12 ` Alexey I. Froloff
2004-12-08 6:12 ` Alexey Tourbin
2004-12-08 6:53 ` Alexey Tourbin
2004-12-08 6:57 ` Alexey I. Froloff
2004-12-08 18:30 ` [devel] Re: perl-Apache-DBI Alexey Tourbin
2004-12-13 7:16 ` [devel] I: rpm-build-perl-0.5 Andrey Brindeew
2004-12-13 9:05 ` [devel] " Alexey Tourbin
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