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