* [devel] perl.req and strange use wrappers
@ 2006-01-28 20:35 Sergey Vlasov
2006-04-20 15:20 ` Alexey Tourbin
0 siblings, 1 reply; 2+ messages in thread
From: Sergey Vlasov @ 2006-01-28 20:35 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 2060 bytes --]
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
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [devel] perl.req and strange use wrappers
2006-01-28 20:35 [devel] perl.req and strange use wrappers Sergey Vlasov
@ 2006-04-20 15:20 ` Alexey Tourbin
0 siblings, 0 replies; 2+ messages in thread
From: Alexey Tourbin @ 2006-04-20 15:20 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 906 bytes --]
On Sat, Jan 28, 2006 at 11:35:39PM +0300, Sergey Vlasov wrote:
> Используется это, например, таким образом:
>
> 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 на все используемые модули?
Лучше всего написать нормальные use. Бороться можно, только если
изобрести альтернативный алгоритм поиска зависимостей. Самый дубовый,
который в данном случае может сработать, -- это что-то вроде
perl -le "use $shell_var_module; print keys %INC"
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-04-20 15:20 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-01-28 20:35 [devel] perl.req and strange use wrappers Sergey Vlasov
2006-04-20 15:20 ` 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