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