[devel] perl.req and strange use wrappers
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Сб Янв 28 23:35:39 MSK 2006
Hello!
В fvwm-perl (/usr/share/fvwm/perllib/FVWM/Module/Toolkit.pm)
обнаружился следующий кусок кода:
===========================================================================
sub import ($@) {
my $class = shift;
my $caller = caller;
my $error = 0;
my $name = "*undefined*";
while (@_) {
$name = shift;
if ($name eq 'base') {
next if UNIVERSAL::isa($caller, __PACKAGE__);
my $caller2 = (caller(1))[0];
eval "
package $caller2;
use FVWM::Constants;
package $caller;
use vars qw(\$VERSION \@ISA);
use FVWM::Constants;
\$VERSION = \$FVWM::Module::Toolkit::VERSION;
\@ISA = qw(FVWM::Module::Toolkit);
";
if ($@) {
die "Internal error:\n$@";
}
} else {
my ($name0, $args) = split(/>?=/, $name, 2);
my $mod = $args? "$name0 split(/,/, q{$args})": $name;
eval "
package $caller;
use $mod;
";
if ($@) {
$error = 1;
last;
}
}
}
if ($error) {
my $scriptName = $0; $scriptName =~ s|.*/||;
my $errorTitle = 'FVWM Perl library error';
my $errorMsg = "$scriptName requires Perl package $name to be installed.\n\n";
$errorMsg .= "You may either find it as a binary package for your distribution\n";
$errorMsg .= "or download it from CPAN, http://cpan.org/modules/by-module/ .\n";
$class->showMessage($errorMsg, $errorTitle, 1);
print STDERR "[$errorTitle]: $errorMsg\n$@";
exit(1);
}
}
===========================================================================
Используется это, например, таким образом:
use FVWM::Module::Toolkit qw(FileHandle IO::Select X11::Protocol>=0.52 Tk>=804.025 Tk::Balloon Tk::DragDrop Tk::DropSite Tk::LabFrame Tk::BrowseEntry Tk::PNG);
В результате perl.req не видит таких зависимостей.
С этим вообще как-то можно бороться централизованно (т.е., запатчив
этот самый sub import в FVWM::Module::Toolkit)? Или единственный
способ - написать в том месте, где стоит use FVWM::Module::Toolkit,
нормальные use на все используемые модули?
--
Sergey Vlasov
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20060128/c5fcbbf8/attachment-0001.bin>
Подробная информация о списке рассылки Devel