diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-06-11 22:32:06 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-06-11 22:32:06 +0000 |
commit | 467298a34215401cdcbb1dded51bc2aba5f1f41c (patch) | |
tree | 1923f32fbc9cf8f0b4ab291d1eb9fad5ab872d68 /lib/Module/Build/Platform/Unix.pm | |
download | Module-Build-tarball-master.tar.gz |
Module-Build-0.4214HEADModule-Build-0.4214master
Diffstat (limited to 'lib/Module/Build/Platform/Unix.pm')
-rw-r--r-- | lib/Module/Build/Platform/Unix.pm | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/lib/Module/Build/Platform/Unix.pm b/lib/Module/Build/Platform/Unix.pm new file mode 100644 index 0000000..f3cc511 --- /dev/null +++ b/lib/Module/Build/Platform/Unix.pm @@ -0,0 +1,72 @@ +package Module::Build::Platform::Unix; + +use strict; +use warnings; +our $VERSION = '0.4214'; +$VERSION = eval $VERSION; +use Module::Build::Base; + +our @ISA = qw(Module::Build::Base); + +sub is_executable { + # We consider the owner bit to be authoritative on a file, because + # -x will always return true if the user is root and *any* + # executable bit is set. The -x test seems to try to answer the + # question "can I execute this file", but I think we want "is this + # file executable". + + my ($self, $file) = @_; + return +(stat $file)[2] & 0100; +} + +sub _startperl { "#! " . shift()->perl } + +sub _construct { + my $self = shift()->SUPER::_construct(@_); + + # perl 5.8.1-RC[1-3] had some broken %Config entries, and + # unfortunately Red Hat 9 shipped it like that. Fix 'em up here. + my $c = $self->{config}; + for (qw(siteman1 siteman3 vendorman1 vendorman3)) { + $c->{"install${_}dir"} ||= $c->{"install${_}"}; + } + + return $self; +} + +# Open group says username should be portable filename characters, +# but some Unix OS working with ActiveDirectory wind up with user-names +# with back-slashes in the name. The new code below is very liberal +# in what it accepts. +sub _detildefy { + my ($self, $value) = @_; + $value =~ s[^~([^/]+)?(?=/|$)] # tilde with optional username + [$1 ? + (eval{(getpwnam $1)[7]} || "~$1") : + ($ENV{HOME} || eval{(getpwuid $>)[7]} || glob("~")) + ]ex; + return $value; +} + +1; +__END__ + + +=head1 NAME + +Module::Build::Platform::Unix - Builder class for Unix platforms + +=head1 DESCRIPTION + +The sole purpose of this module is to inherit from +C<Module::Build::Base>. Please see the L<Module::Build> for the docs. + +=head1 AUTHOR + +Ken Williams <kwilliams@cpan.org> + +=head1 SEE ALSO + +perl(1), Module::Build(3), ExtUtils::MakeMaker(3) + +=cut |