Update Module::Build to CPAN version 0.3800
[perl.git] / cpan / Module-Build / lib / Module / Build / Platform / Unix.pm
1 package Module::Build::Platform::Unix;
2
3 use strict;
4 use vars qw($VERSION);
5 $VERSION = '0.3800';
6 $VERSION = eval $VERSION;
7 use Module::Build::Base;
8
9 use vars qw(@ISA);
10 @ISA = qw(Module::Build::Base);
11
12 sub is_executable {
13   # We consider the owner bit to be authoritative on a file, because
14   # -x will always return true if the user is root and *any*
15   # executable bit is set.  The -x test seems to try to answer the
16   # question "can I execute this file", but I think we want "is this
17   # file executable".
18
19   my ($self, $file) = @_;
20   return +(stat $file)[2] & 0100;
21 }
22
23 sub _startperl { "#! " . shift()->perl }
24
25 sub _construct {
26   my $self = shift()->SUPER::_construct(@_);
27
28   # perl 5.8.1-RC[1-3] had some broken %Config entries, and
29   # unfortunately Red Hat 9 shipped it like that.  Fix 'em up here.
30   my $c = $self->{config};
31   for (qw(siteman1 siteman3 vendorman1 vendorman3)) {
32     $c->{"install${_}dir"} ||= $c->{"install${_}"};
33   }
34
35   return $self;
36 }
37
38 # Open group says username should be portable filename characters,
39 # but some Unix OS working with ActiveDirectory wind up with user-names
40 # with back-slashes in the name.  The new code below is very liberal
41 # in what it accepts.
42 sub _detildefy {
43   my ($self, $value) = @_;
44   $value =~ s[^~([^/]+)?(?=/|$)]   # tilde with optional username
45     [$1 ?
46      ((getpwnam $1)[7] || "~$1") :
47      ($ENV{HOME} || (getpwuid $>)[7])
48     ]ex;
49   return $value;
50 }
51
52 1;
53 __END__
54
55
56 =head1 NAME
57
58 Module::Build::Platform::Unix - Builder class for Unix platforms
59
60 =head1 DESCRIPTION
61
62 The sole purpose of this module is to inherit from
63 C<Module::Build::Base>.  Please see the L<Module::Build> for the docs.
64
65 =head1 AUTHOR
66
67 Ken Williams <kwilliams@cpan.org>
68
69 =head1 SEE ALSO
70
71 perl(1), Module::Build(3), ExtUtils::MakeMaker(3)
72
73 =cut