ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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