* [devel] /usr/lib/rpm/perl.req -- ахтунг! @ 2002-10-29 23:27 at 2002-10-30 0:58 ` at 2002-10-30 23:44 ` [devel] /usr/lib/rpm/perl.req -- patch at 0 siblings, 2 replies; 13+ messages in thread From: at @ 2002-10-29 23:27 UTC (permalink / raw) To: devel Я вчитался в perl.req. Выяснилось, что он натурально зарубает все перловые зависимости, которые не предоставляются в среде сборки (а также самим пакетом). Например, если в среде сборки нет ничего кроме perl-base и perl-devel, тогда в requires у пакета окажутся зависимости вида perl(XXX.pm) только из perl-base и perl-devel. Из-за этого все зависимости, в сущности, идут лесом. Даже если в среде сборки установлен полный комплект perl-* пакетов дистрибутива, это, вообще говоря, никак не гарантирует работоспособность пакетов. Как удалось выяснить, это ALT-specific (в rpm-4.0.4-19mdk такого нет). Какие будут мнения по этому вопросу? foreach $module (sort keys %require) { # search for the file to be installed in the system or in this same package my $found = 0; for (@perl_inc) { if (-e "$_/$module") { $found = 1; last; } } next unless $found; if (length($require{$module}) == 0) { print "perl($module)\n"; } else { print "perl($module) >= $require{$module}\n"; } } ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] /usr/lib/rpm/perl.req -- ахтунг! 2002-10-29 23:27 [devel] /usr/lib/rpm/perl.req -- ахтунг! at @ 2002-10-30 0:58 ` at 2002-10-30 8:05 ` Alexey Morozov 2002-10-30 23:44 ` [devel] /usr/lib/rpm/perl.req -- patch at 1 sibling, 1 reply; 13+ messages in thread From: at @ 2002-10-30 0:58 UTC (permalink / raw) To: devel On Wed, Oct 30, 2002 at 02:27:42AM +0300, at@turbinal.org wrote: > Я вчитался в perl.req. Выяснилось, что он натурально зарубает все > перловые зависимости, которые не предоставляются в среде сборки (а также > самим пакетом). Например, если в среде сборки нет ничего кроме > perl-base и perl-devel, тогда в requires у пакета окажутся зависимости > вида perl(XXX.pm) только из perl-base и perl-devel. > Какие будут мнения по этому вопросу? Предварительный диагноз: если отхачить perl.req на предмет ignore VMS*, Mac* и т.п., то можно будет включить полный поиск зависимостей. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] /usr/lib/rpm/perl.req -- ахтунг! 2002-10-30 0:58 ` at @ 2002-10-30 8:05 ` Alexey Morozov 2002-10-30 17:23 ` at 0 siblings, 1 reply; 13+ messages in thread From: Alexey Morozov @ 2002-10-30 8:05 UTC (permalink / raw) To: devel On Wed, Oct 30, 2002 at 03:58:05AM +0300, at@turbinal.org wrote: > > Я вчитался в perl.req. Выяснилось, что он натурально зарубает все > > перловые зависимости, которые не предоставляются в среде сборки (а также > > самим пакетом). Например, если в среде сборки нет ничего кроме > > perl-base и perl-devel, тогда в requires у пакета окажутся зависимости > > вида perl(XXX.pm) только из perl-base и perl-devel. > > Какие будут мнения по этому вопросу? > Предварительный диагноз: если отхачить perl.req на предмет ignore VMS*, > Mac* и т.п., то можно будет включить полный поиск зависимостей. А если делать так: запоминать таблицу загруженных модулей (через %INC), грузить некоторый модуль, а потом сравнивать %INC с запомненным. Мне кажется, что у /некоторых/ модулей зависимости могут быть весьма неявными и совсем не обязательными, то есть, он либо может (с некоторой усеченной функциональностью) использоваться и без таковых модулей, либо использует эти необязательные случаи только в экзотических случаях, типа того же VMS или, например, в mod_perl... ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] /usr/lib/rpm/perl.req -- ахтунг! 2002-10-30 8:05 ` Alexey Morozov @ 2002-10-30 17:23 ` at 0 siblings, 0 replies; 13+ messages in thread From: at @ 2002-10-30 17:23 UTC (permalink / raw) To: devel On Wed, Oct 30, 2002 at 02:05:22PM +0600, Alexey Morozov wrote: > > > Я вчитался в perl.req. Выяснилось, что он натурально зарубает все > > > перловые зависимости, которые не предоставляются в среде сборки (а также > > > самим пакетом). Например, если в среде сборки нет ничего кроме > > > perl-base и perl-devel, тогда в requires у пакета окажутся зависимости > > > вида perl(XXX.pm) только из perl-base и perl-devel. > > > Какие будут мнения по этому вопросу? > > Предварительный диагноз: если отхачить perl.req на предмет ignore VMS*, > > Mac* и т.п., то можно будет включить полный поиск зависимостей. > А если делать так: > запоминать таблицу загруженных модулей (через %INC), > грузить некоторый модуль, а потом сравнивать %INC с запомненным. Проблема здесь в том, что загрузка произвольного модуля эквивалента исполнению произвольного кода в окружении сборки. В меньшей степени это касается make test. Можно попробовать ограничить определенную активность кода с помощью Safe(3) и Opcode(3). Но вообще же, это никак не решает поставленную мной проблему, ибо очевидно, что в %INC ничего кроме окружения сборки оказаться не может. > Мне кажется, что у /некоторых/ модулей зависимости могут быть весьма > неявными и совсем не обязательными, то есть, он либо может (с некоторой > усеченной функциональностью) использоваться и без таковых модулей, либо > использует эти необязательные случаи только в экзотических случаях, типа > того же VMS или, например, в mod_perl... Да, это так. Но ведь есть ещё и AutoLoader. Вчитайтесь, например, в Storable.pm. Какие модули -- навскидку -- ему необходимы для успешной работы? "Это не простой вопрос." Вообще, весь этот perl.{req,prov} -- это грязный хак. Но это лучше, чем ничего. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] /usr/lib/rpm/perl.req -- patch 2002-10-29 23:27 [devel] /usr/lib/rpm/perl.req -- ахтунг! at 2002-10-30 0:58 ` at @ 2002-10-30 23:44 ` at 2002-10-31 0:19 ` at ` (2 more replies) 1 sibling, 3 replies; 13+ messages in thread From: at @ 2002-10-30 23:44 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 1779 bytes --] On Wed, Oct 30, 2002 at 02:27:42AM +0300, at@turbinal.org wrote: > Я вчитался в perl.req. Выяснилось, что он натурально зарубает все > перловые зависимости, которые не предоставляются в среде сборки (а также > самим пакетом). Например, если в среде сборки нет ничего кроме > perl-base и perl-devel, тогда в requires у пакета окажутся зависимости > вида perl(XXX.pm) только из perl-base и perl-devel. > > Из-за этого все зависимости, в сущности, идут лесом. Даже если в среде > сборки установлен полный комплект perl-* пакетов дистрибутива, это, > вообще говоря, никак не гарантирует работоспособность пакетов. > > Как удалось выяснить, это ALT-specific (в rpm-4.0.4-19mdk такого нет). > > Какие будут мнения по этому вопросу? Если веских мнений нет, я выскажу свое веское мнение: поиск зависимостей нужно включить. Как это сделать -- см. патч. С ним всё "честно" собирается и все зависимости проставляются правильно. Возникает только проблема условных зависимостей. Например, в CGI.pm написано: if ($ENV{...}) { require Apache; } elsif ($ENV{...}) { require FCGI; } Таким образом, при "правильном" поиске зависимостей пакет perl-CGI потянет за собой пакеты apache-mod_perl и mod_fcgi, что несколько странно. В целом, настолько сильные зависимости были бы неприемлемы. Кстати, сейчас в perl-CGI зависимость на apache-mod_perl отсутствует только потому, что apache-mod_perl не установлен в среде сборки. Я посмотрел, как это сделано в rpm-*mdk. Там используется такое наблюдение, что условные зависимости (require) обычно начинаются с отступа. Всё это абсолютно в духе грязного хака, но пока это лучшее, что можно придумать. Если мне дадут возможность отхачить perl.req, я попробую быстро добиться приемлемой его работы на всем, что мы собираем (нужно подтверждение). [-- Attachment #2: perl.req.patch --] [-- Type: text/plain, Size: 2050 bytes --] --- perl.req 2002-10-11 14:31:38 +0400 +++ perl.req 2002-10-31 00:52:07 +0300 @@ -39,9 +39,43 @@ # by Ken Estes Mail.com kestes@staff.mail.com # modified by Mikhail Zabaluev <mookid@mu.ru> +# modified by Alexey Tourbin <at@turbinal.org> + +use 5.005; # qr +use Getopt::Long; +GetOptions("debug" => \my $debug); +if ($debug) { + require IO::Handle; + STDOUT->autoflush(1); + STDERR->autoflush(1); + warn "debug mode enabled\n"; +} require File::Spec; +my @ignore_files = ( + qr(/usr/share/doc/), + qr(/[Dd]emos?/), +); +my @ignore_reqs = ( + qr(^Makefile\b), +# OS-specific + qr(^machine/ansi\b), + qr(^sys/systeminfo\b), + qr(^vmsish\b), + qr(^MacPerl\b), + qr(^VMS/), + qr(^OS2/), + qr(^Mac/), + qr(^ExtUtils/XSSymSet\b), + qr(^Convert/EBCDIC\b), +# old names + qr(^Digest/Perl/MD5\b), + qr(^Pod/PlainText\b), +# wrong names + qr(/\.), + qr(\$), +); if (@ARGV) { foreach (@ARGV) { @@ -57,35 +91,14 @@ } } - -# obtain the list of library directories. If not provided, use @INC - -if (exists $ENV{RPM_PERL_LIB_PATH}) { - @perl_inc = split(/[:,\s]+/, $ENV{RPM_PERL_LIB_PATH}); -} -else { - @perl_inc = grep { m|^/| } @INC; -} - -# add installation mirrors to the library search list - -my $buildroot = $ENV{RPM_BUILD_ROOT}; -push @perl_inc, map { "${buildroot}$_" } @perl_inc; - - +MODULE: foreach $module (sort keys %require) { - - # search for the file to be installed in the system or in this same package - - my $found = 0; - for (@perl_inc) { - if (-e "$_/$module") { - $found = 1; - last; - } + for my $re (@ignore_reqs) { + if ($module =~ $re) { + warn "module $module matches $re; skip\n" if $debug; + next MODULE; + } } - next unless $found; - if (length($require{$module}) == 0) { print "perl($module)\n"; } else { @@ -104,6 +117,13 @@ return if $file eq ''; + foreach my $re (@ignore_files) { + if ($file =~ $re) { + warn "file $file matches $re; skip\n" if $debug; + return; + } + } + open(FILE, "<$file")|| die("$0: Could not open file: '$file' : $!\n"); ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] /usr/lib/rpm/perl.req -- patch 2002-10-30 23:44 ` [devel] /usr/lib/rpm/perl.req -- patch at @ 2002-10-31 0:19 ` at 2002-10-31 0:32 ` Dmitry V. Levin 2002-10-31 0:22 ` [devel] " Dmitry V. Levin 2002-11-02 9:49 ` [devel] " Mikhail Zabaluev 2 siblings, 1 reply; 13+ messages in thread From: at @ 2002-10-31 0:19 UTC (permalink / raw) To: devel On Thu, Oct 31, 2002 at 02:44:53AM +0300, at@turbinal.org wrote: > Я посмотрел, как это сделано в rpm-*mdk. Там используется такое > наблюдение, что условные зависимости (require) обычно начинаются с > отступа. Всё это абсолютно в духе грязного хака, но пока это лучшее, что > можно придумать. Если мне дадут возможность отхачить perl.req, я > попробую быстро добиться приемлемой его работы на всем, что мы собираем > (нужно подтверждение). Поймал (ценную мысль)! Нужно сделать 2 метода поиска перловых зависимостей: relaxed и strict. Большая часть пакетов должна собираться с strict (по умолчанию), а там, где появляются нелепые или слишком сильные зависимости (как в perl-CGI), нужно в spec-файле явно указывать: %set_perl_req_method relaxed ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] /usr/lib/rpm/perl.req -- patch 2002-10-31 0:19 ` at @ 2002-10-31 0:32 ` Dmitry V. Levin 2002-10-31 1:15 ` at 0 siblings, 1 reply; 13+ messages in thread From: Dmitry V. Levin @ 2002-10-31 0:32 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1.1: Type: text/plain, Size: 960 bytes --] On Thu, Oct 31, 2002 at 03:19:30AM +0300, at@turbinal.org wrote: > On Thu, Oct 31, 2002 at 02:44:53AM +0300, at@turbinal.org wrote: > > Я посмотрел, как это сделано в rpm-*mdk. Там используется такое > > наблюдение, что условные зависимости (require) обычно начинаются с > > отступа. Всё это абсолютно в духе грязного хака, но пока это лучшее, что > > можно придумать. Если мне дадут возможность отхачить perl.req, я > > попробую быстро добиться приемлемой его работы на всем, что мы собираем > > (нужно подтверждение). > > Поймал (ценную мысль)! Нужно сделать 2 метода поиска перловых > зависимостей: relaxed и strict. Большая часть пакетов должна собираться > с strict (по умолчанию), а там, где появляются нелепые или слишком Отлавливать сложно. > сильные зависимости (как в perl-CGI), нужно в spec-файле явно указывать: > > %set_perl_req_method relaxed > s/strict/normal/ - стоит зарезервировать strict для более жестких проверок. Пробуйте. -- ldv [-- Attachment #1.2: perl_req.diff --] [-- Type: text/plain, Size: 2138 bytes --] --- /usr/lib/rpm/i586-linux/macros.orig 2002-10-28 02:13:21 +0300 +++ /usr/lib/rpm/i586-linux/macros 2002-10-31 03:25:16 +0300 @@ -276,6 +276,7 @@ %_cleanup_method auto %_compress_method auto %_verify_elf_method normal +%_perl_req_method normal %_fixup_method binconfig pkgconfig libtool %_strip_method %{?_enable_debug:none}%{!?_enable_debug:executable shared} %_findreq_default_method files lib pam perl shell @@ -302,6 +303,7 @@ %set_fixup_method() %global _fixup_method %* %set_strip_method() %global _strip_method %* %set_verify_elf_method() %global _verify_elf_method %* +%set_perl_req_method() %global _perl_req_method %* %set_cleanup_topdir() %global _cleanup_topdir %* %set_compress_topdir() %global _compress_topdir %* --- /usr/lib/rpm/noarch-linux/macros.orig 2002-10-28 02:13:21 +0300 +++ /usr/lib/rpm/noarch-linux/macros 2002-10-31 03:25:16 +0300 @@ -276,6 +276,7 @@ %_cleanup_method auto %_compress_method auto %_verify_elf_method normal +%_perl_req_method normal %_fixup_method binconfig pkgconfig libtool %_strip_method %{?_enable_debug:none}%{!?_enable_debug:executable shared} %_findreq_default_method files lib pam perl shell @@ -302,6 +303,7 @@ %set_fixup_method() %global _fixup_method %* %set_strip_method() %global _strip_method %* %set_verify_elf_method() %global _verify_elf_method %* +%set_perl_req_method() %global _perl_req_method %* %set_cleanup_topdir() %global _cleanup_topdir %* %set_compress_topdir() %global _compress_topdir %* --- /usr/lib/rpm/macros.orig 2002-10-28 02:10:24 +0300 +++ /usr/lib/rpm/macros 2002-10-31 03:22:22 +0300 @@ -621,6 +621,7 @@ %{?_findreq_skiplist:export RPM_FINDREQ_SKIPLIST=\"%_findreq_skiplist\"}\ %{?_findprov_skiplist:export RPM_FINDPROV_SKIPLIST=\"%_findprov_skiplist\"}\ %{?_perl_lib_path:export RPM_PERL_LIB_PATH=\"%_perl_lib_path\"}\ + %{?_perl_req_method:export RPM_PERL_REQ_METHOD=\"%_perl_req_method\"}\ %{?__python:export RPM_PYTHON=\"%__python\"}\ \ unset LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION LC_ALL ||:\ [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] /usr/lib/rpm/perl.req -- patch 2002-10-31 0:32 ` Dmitry V. Levin @ 2002-10-31 1:15 ` at 2002-11-02 9:27 ` [devel] " Mikhail Zabaluev 0 siblings, 1 reply; 13+ messages in thread From: at @ 2002-10-31 1:15 UTC (permalink / raw) To: devel On Thu, Oct 31, 2002 at 03:32:18AM +0300, Dmitry V. Levin wrote: > > Поймал (ценную мысль)! Нужно сделать 2 метода поиска перловых > > зависимостей: relaxed и strict. Большая часть пакетов должна собираться > > с strict (по умолчанию), а там, где появляются нелепые или слишком > > Отлавливать сложно. Это задача maintainer'а. Таких пакетов немного (мне пока попался только perl-CGI). > s/strict/normal/ - стоит зарезервировать strict для более жестких > проверок. Да (например, без списков @ignore_files и @ignore_reqs). > > Пробуйте. > Пробую. ^ permalink raw reply [flat|nested] 13+ messages in thread
* [devel] Re: /usr/lib/rpm/perl.req -- patch 2002-10-31 1:15 ` at @ 2002-11-02 9:27 ` Mikhail Zabaluev 0 siblings, 0 replies; 13+ messages in thread From: Mikhail Zabaluev @ 2002-11-02 9:27 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 844 bytes --] Hello at, On Thu, Oct 31, 2002 at 04:15:39AM +0300, at@turbinal.org wrote: > > On Thu, Oct 31, 2002 at 03:32:18AM +0300, Dmitry V. Levin wrote: > > > Поймал (ценную мысль)! Нужно сделать 2 метода поиска перловых > > > зависимостей: relaxed и strict. Большая часть пакетов должна собираться > > > с strict (по умолчанию), а там, где появляются нелепые или слишком > > > > Отлавливать сложно. > > Это задача maintainer'а. Таких пакетов немного (мне пока попался только > perl-CGI). И в таких пакетах можно и руками поставить. Например, прогнать один раз нормальный perl.req, снять зависимости, почистить их и запретить perl.req для дальнейших сборок этой версии. -- Stay tuned, MhZ JID: mookid@jabber.org ___________ Is it 1974? What's for SUPPER? Can I spend my COLLEGE FUND in one wild afternoon?? [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [devel] /usr/lib/rpm/perl.req -- patch 2002-10-30 23:44 ` [devel] /usr/lib/rpm/perl.req -- patch at 2002-10-31 0:19 ` at @ 2002-10-31 0:22 ` Dmitry V. Levin 2002-11-02 9:49 ` [devel] " Mikhail Zabaluev 2 siblings, 0 replies; 13+ messages in thread From: Dmitry V. Levin @ 2002-10-31 0:22 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 2285 bytes --] On Thu, Oct 31, 2002 at 02:44:53AM +0300, at@turbinal.org wrote: > > Я вчитался в perl.req. Выяснилось, что он натурально зарубает все > > перловые зависимости, которые не предоставляются в среде сборки (а также > > самим пакетом). Например, если в среде сборки нет ничего кроме > > perl-base и perl-devel, тогда в requires у пакета окажутся зависимости > > вида perl(XXX.pm) только из perl-base и perl-devel. > > > > Из-за этого все зависимости, в сущности, идут лесом. Даже если в среде > > сборки установлен полный комплект perl-* пакетов дистрибутива, это, > > вообще говоря, никак не гарантирует работоспособность пакетов. > > > > Как удалось выяснить, это ALT-specific (в rpm-4.0.4-19mdk такого нет). > > > > Какие будут мнения по этому вопросу? > > Если веских мнений нет, я выскажу своё веское мнение: поиск зависимостей > нужно включить. Как это сделать -- см. патч. С ним всё "честно" > собирается и все зависимости проставляются правильно. > > Возникает только проблема условных зависимостей. Например, в CGI.pm > написано: > > if ($ENV{...}) { > require Apache; > } elsif ($ENV{...}) { > require FCGI; > } > > Таким образом, при "правильном" поиске зависимостей пакет perl-CGI > потянет за собой пакеты apache-mod_perl и mod_fcgi, что несколько > странно. В целом, настолько сильные зависимости были бы неприемлемы. > > Кстати, сейчас в perl-CGI зависимость на apache-mod_perl отсутствует > только потому, что apache-mod_perl не установлен в среде сборки. > > Я посмотрел, как это сделано в rpm-*mdk. Там используется такое > наблюдение, что условные зависимости (require) обычно начинаются с > отступа. Всё это абсолютно в духе грязного хака, но пока это лучшее, что > можно придумать. Если мне дадут возможность отхачить perl.req, я > попробую быстро добиться приемлемой его работы на всем, что мы собираем > (нужно подтверждение). Ok. Сколько раз придётся пересобирать пакета для исправления зависимостей? :) > --- perl.req 2002-10-11 14:31:38 +0400 > +++ perl.req 2002-10-31 00:52:07 +0300 > @@ -39,9 +39,43 @@ > > # by Ken Estes Mail.com kestes@staff.mail.com > # modified by Mikhail Zabaluev <mookid@mu.ru> > +# modified by Alexey Tourbin <at@turbinal.org> Я не буду пока выпускать новый rpm-build; будем тестировать perl.req "по живому". -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [devel] Re: /usr/lib/rpm/perl.req -- patch 2002-10-30 23:44 ` [devel] /usr/lib/rpm/perl.req -- patch at 2002-10-31 0:19 ` at 2002-10-31 0:22 ` [devel] " Dmitry V. Levin @ 2002-11-02 9:49 ` Mikhail Zabaluev 2002-11-02 14:01 ` at 2 siblings, 1 reply; 13+ messages in thread From: Mikhail Zabaluev @ 2002-11-02 9:49 UTC (permalink / raw) To: devel; +Cc: at [-- Attachment #1: Type: text/plain, Size: 1786 bytes --] Hello at, On Thu, Oct 31, 2002 at 02:44:53AM +0300, at@turbinal.org wrote: > > Возникает только проблема условных зависимостей. Например, в CGI.pm > написано: > > if ($ENV{...}) { > require Apache; > } elsif ($ENV{...}) { > require FCGI; > } > > Таким образом, при "правильном" поиске зависимостей пакет perl-CGI > потянет за собой пакеты apache-mod_perl и mod_fcgi, что несколько > странно. В целом, настолько сильные зависимости были бы неприемлемы. > > Кстати, сейчас в perl-CGI зависимость на apache-mod_perl отсутствует > только потому, что apache-mod_perl не установлен в среде сборки. > > Я посмотрел, как это сделано в rpm-*mdk. Там используется такое > наблюдение, что условные зависимости (require) обычно начинаются с > отступа. Всё это абсолютно в духе грязного хака, но пока это лучшее, что > можно придумать. Если мне дадут возможность отхачить perl.req, я > попробую быстро добиться приемлемой его работы на всем, что мы собираем > (нужно подтверждение). Я задумывался о менее грязном решении: компилировать файлы и выдавать из обратно через B::Deparse. Вывод будет идеально отформатирован, безусловные require не имеют отступа, а код процедур не из main::, наоборот, не выдаётся по умолчанию. Но пропадают use. Есть ещё и более вкусная штучка -- B::Xref, которая выдаёт файлы и пакеты, использованные на этапе компиляции. Попробуйте: perl -MO=Xref,r <скрипт> | grep ^File Проблема может быть ещё в том, что некоторые блоки perl-кода могут исполняться сразу на этапе компиляции и повлиять на результат. Но с этим ничего поделать нельзя: это perl, There Is More Than One Way To Screw It :) -- Stay tuned, MhZ JID: mookid@jabber.org ___________ Repartee is something we think of twenty-four hours too late. -- Mark Twain [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* [devel] Re: /usr/lib/rpm/perl.req -- patch 2002-11-02 9:49 ` [devel] " Mikhail Zabaluev @ 2002-11-02 14:01 ` at 0 siblings, 1 reply; 13+ messages in thread From: at @ 2002-11-02 14:01 UTC (permalink / raw) To: devel; +Cc: Mikhail Zabaluev On Sat, Nov 02, 2002 at 12:49:58PM +0300, Mikhail Zabaluev wrote: > Есть ещё и более вкусная штучка -- B::Xref, которая выдаёт > файлы и пакеты, использованные на этапе компиляции. Здесь опять 100% завязка на серду сборки. Наверное, нужно комбинировать несколько методов. :) > Попробуйте: > > perl -MO=Xref,r <скрипт> | grep ^File $ perl -MO=Xref,r /usr/lib/perl5/find.pl | grep ^File /usr/lib/perl5/find.pl syntax OK File File /usr/lib/perl5/Exporter.pm File /usr/lib/perl5/File/Basename.pm File /usr/lib/perl5/find.pl File /usr/lib/perl5/i386-linux/DynaLoader.pm File /usr/lib/perl5/i386-linux/XSLoader.pm File @EXPORT File `x File €FФ*юяяя8€ File ђђpгґ* File јЋ File ИИpгґ* $ Я не хочу, чтобы последние несколько "файлов" попали в зависимости. Что-то сломано? > > Проблема может быть ещё в том, что некоторые блоки perl-кода > могут исполняться сразу на этапе компиляции и повлиять на результат. > Но с этим ничего поделать нельзя: это perl, > There Is More Than One Way To Screw It :) > > -- > Stay tuned, > MhZ JID: mookid@jabber.org > ___________ > Repartee is something we think of twenty-four hours too late. > -- Mark Twain ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <20021102140911.GA30183@mhz.mikhail.zabaluev.name>]
* [devel] Re: /usr/lib/rpm/perl.req -- patch @ 2002-11-02 15:18 ` Alexey Tourbin 0 siblings, 0 replies; 13+ messages in thread From: Alexey Tourbin @ 2002-11-02 15:18 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 1455 bytes --] On Sat, Nov 02, 2002 at 05:09:11PM +0300, Mikhail Zabaluev wrote: > Хм. Если при этом как-то отлавливать имена ненайденных файлов, > возможно, будет полное покрытие всего, что требуется. OK, я подумаю/попробую. По идее, эти скриты нужно переписать с нуля, но сейчас этого делать уже нельзя. > > $ perl -MO=Xref,r /usr/lib/perl5/find.pl | grep ^File > > /usr/lib/perl5/find.pl syntax OK > > File > > File /usr/lib/perl5/Exporter.pm > > File /usr/lib/perl5/File/Basename.pm > > File /usr/lib/perl5/find.pl > > File /usr/lib/perl5/i386-linux/DynaLoader.pm > > File /usr/lib/perl5/i386-linux/XSLoader.pm > > File @EXPORT > > File `x > > File ?FФ*юяяя8? > > File ??pг?* > > File ?? > > File ИИpг?* > > $ > > > > Я не хочу, чтобы последние несколько "файлов" попали в зависимости. > > Что-то сломано? > > Не знаю, perl 5.6.1 такого не выдаёт. Главное же, что find.pl выглядит так: $ grep '^[^#]' /usr/lib/perl5/find.pl use File::Find (); *name = *File::Find::name; *prune = *File::Find::prune; *dir = *File::Find::dir; *topdir = *File::Find::topdir; *topdev = *File::Find::topdev; *topino = *File::Find::topino; *topmode = *File::Find::topmode; *topnlink = *File::Find::topnlink; sub find { &File::Find::find(\&wanted, @_); } 1; $ Т.е. Xref вытягивает слишком косвенные зависимости, а основные (File::Find) не вытягивает. Боюсь, что где-то что-то сломано. Попробую разобраться. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2002-11-02 15:18 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2002-10-29 23:27 [devel] /usr/lib/rpm/perl.req -- ахтунг! at 2002-10-30 0:58 ` at 2002-10-30 8:05 ` Alexey Morozov 2002-10-30 17:23 ` at 2002-10-30 23:44 ` [devel] /usr/lib/rpm/perl.req -- patch at 2002-10-31 0:19 ` at 2002-10-31 0:32 ` Dmitry V. Levin 2002-10-31 1:15 ` at 2002-11-02 9:27 ` [devel] " Mikhail Zabaluev 2002-10-31 0:22 ` [devel] " Dmitry V. Levin 2002-11-02 9:49 ` [devel] " Mikhail Zabaluev 2002-11-02 14:01 ` at 2002-11-02 15:18 ` 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