/[vz-tools]/trunk/inc/Module/Install/Can.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/inc/Module/Install/Can.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 34 - (hide annotations)
Thu Nov 8 11:35:15 2007 UTC (16 years, 5 months ago) by dpavlin
File size: 1788 byte(s)
added inc/ to enable installation from checkout
1 dpavlin 34 #line 1
2     package Module::Install::Can;
3    
4     use strict;
5     use Module::Install::Base;
6     use Config ();
7     ### This adds a 5.005 Perl version dependency.
8     ### This is a bug and will be fixed.
9     use File::Spec ();
10     use ExtUtils::MakeMaker ();
11    
12     use vars qw{$VERSION $ISCORE @ISA};
13     BEGIN {
14     $VERSION = '0.67';
15     $ISCORE = 1;
16     @ISA = qw{Module::Install::Base};
17     }
18    
19     # check if we can load some module
20     ### Upgrade this to not have to load the module if possible
21     sub can_use {
22     my ($self, $mod, $ver) = @_;
23     $mod =~ s{::|\\}{/}g;
24     $mod .= '.pm' unless $mod =~ /\.pm$/i;
25    
26     my $pkg = $mod;
27     $pkg =~ s{/}{::}g;
28     $pkg =~ s{\.pm$}{}i;
29    
30     local $@;
31     eval { require $mod; $pkg->VERSION($ver || 0); 1 };
32     }
33    
34     # check if we can run some command
35     sub can_run {
36     my ($self, $cmd) = @_;
37    
38     my $_cmd = $cmd;
39     return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd));
40    
41     for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') {
42     my $abs = File::Spec->catfile($dir, $_[1]);
43     return $abs if (-x $abs or $abs = MM->maybe_command($abs));
44     }
45    
46     return;
47     }
48    
49     # can we locate a (the) C compiler
50     sub can_cc {
51     my $self = shift;
52     my @chunks = split(/ /, $Config::Config{cc}) or return;
53    
54     # $Config{cc} may contain args; try to find out the program part
55     while (@chunks) {
56     return $self->can_run("@chunks") || (pop(@chunks), next);
57     }
58    
59     return;
60     }
61    
62     # Fix Cygwin bug on maybe_command();
63     if ( $^O eq 'cygwin' ) {
64     require ExtUtils::MM_Cygwin;
65     require ExtUtils::MM_Win32;
66     if ( ! defined(&ExtUtils::MM_Cygwin::maybe_command) ) {
67     *ExtUtils::MM_Cygwin::maybe_command = sub {
68     my ($self, $file) = @_;
69     if ($file =~ m{^/cygdrive/}i and ExtUtils::MM_Win32->can('maybe_command')) {
70     ExtUtils::MM_Win32->maybe_command($file);
71     } else {
72     ExtUtils::MM_Unix->maybe_command($file);
73     }
74     }
75     }
76     }
77    
78     1;
79    
80     __END__
81    
82     #line 157

  ViewVC Help
Powered by ViewVC 1.1.26