X-Git-Url: http://git.maemo.org/git/?p=dh-make-perl;a=blobdiff_plain;f=dev%2Fi386%2Flibmodule-build-perl%2Flibmodule-build-perl-0.2808.01%2Flib%2FModule%2FBuild%2FPlatform%2FMacOS.pm;fp=dev%2Fi386%2Flibmodule-build-perl%2Flibmodule-build-perl-0.2808.01%2Flib%2FModule%2FBuild%2FPlatform%2FMacOS.pm;h=9cd7b8f7344e690dd5c8f1f20efdf5609bfeb8e3;hp=0000000000000000000000000000000000000000;hb=8977e561d8a9eae6959218b0306c9df2056a38a9;hpb=df794b845212301ea0d267c919232538bfef356a diff --git a/dev/i386/libmodule-build-perl/libmodule-build-perl-0.2808.01/lib/Module/Build/Platform/MacOS.pm b/dev/i386/libmodule-build-perl/libmodule-build-perl-0.2808.01/lib/Module/Build/Platform/MacOS.pm new file mode 100644 index 0000000..9cd7b8f --- /dev/null +++ b/dev/i386/libmodule-build-perl/libmodule-build-perl-0.2808.01/lib/Module/Build/Platform/MacOS.pm @@ -0,0 +1,152 @@ +package Module::Build::Platform::MacOS; + +use strict; +use vars qw($VERSION); +$VERSION = '0.2808_01'; +$VERSION = eval $VERSION; +use Module::Build::Base; +use vars qw(@ISA); +@ISA = qw(Module::Build::Base); + +use ExtUtils::Install; + +sub have_forkpipe { 0 } + +sub new { + my $class = shift; + my $self = $class->SUPER::new(@_); + + # $Config{sitelib} and $Config{sitearch} are, unfortunately, missing. + foreach ('sitelib', 'sitearch') { + $self->config($_ => $self->config("install$_")) + unless $self->config($_); + } + + # For some reason $Config{startperl} is filled with a bunch of crap. + (my $sp = $self->config('startperl')) =~ s/.*Exit \{Status\}\s//; + $self->config(startperl => $sp); + + return $self; +} + +sub make_executable { + my $self = shift; + require MacPerl; + foreach (@_) { + MacPerl::SetFileInfo('McPL', 'TEXT', $_); + } +} + +sub dispatch { + my $self = shift; + + if( !@_ and !@ARGV ) { + require MacPerl; + + # What comes first in the action list. + my @action_list = qw(build test install); + my %actions = map {+($_, 1)} $self->known_actions; + delete @actions{@action_list}; + push @action_list, sort { $a cmp $b } keys %actions; + + my %toolserver = map {+$_ => 1} qw(test disttest diff testdb); + foreach (@action_list) { + $_ .= ' *' if $toolserver{$_}; + } + + my $cmd = MacPerl::Pick("What build command? ('*' requires ToolServer)", @action_list); + return unless defined $cmd; + $cmd =~ s/ \*$//; + $ARGV[0] = ($cmd); + + my $args = MacPerl::Ask('Any extra arguments? (ie. verbose=1)', ''); + return unless defined $args; + push @ARGV, $self->split_like_shell($args); + } + + $self->SUPER::dispatch(@_); +} + +sub ACTION_realclean { + my $self = shift; + chmod 0666, $self->{properties}{build_script}; + $self->SUPER::ACTION_realclean; +} + +# ExtUtils::Install has a hard-coded '.' directory in versions less +# than 1.30. We use a sneaky trick to turn that into ':'. +# +# Note that we do it here in a cross-platform way, so this code could +# actually go in Module::Build::Base. But we put it here to be less +# intrusive for other platforms. + +sub ACTION_install { + my $self = shift; + + return $self->SUPER::ACTION_install(@_) + if eval {ExtUtils::Install->VERSION('1.30'); 1}; + + local $^W = 0; # Avoid a 'redefine' warning + local *ExtUtils::Install::find = sub { + my ($code, @dirs) = @_; + + @dirs = map { $_ eq '.' ? File::Spec->curdir : $_ } @dirs; + + return File::Find::find($code, @dirs); + }; + + return $self->SUPER::ACTION_install(@_); +} + +1; +__END__ + +=head1 NAME + +Module::Build::Platform::MacOS - Builder class for MacOS platforms + +=head1 DESCRIPTION + +The sole purpose of this module is to inherit from +C and override a few methods. Please see +L for the docs. + +=head2 Overriden Methods + +=over 4 + +=item new() + +MacPerl doesn't define $Config{sitelib} or $Config{sitearch} for some +reason, but $Config{installsitelib} and $Config{installsitearch} are +there. So we copy the install variables to the other location + +=item make_executable() + +On MacOS we set the file type and creator to MacPerl so it will run +with a double-click. + +=item dispatch() + +Because there's no easy way to say "./Build test" on MacOS, if +dispatch is called with no arguments and no @ARGV a dialog box will +pop up asking what action to take and any extra arguments. + +Default action is "test". + +=item ACTION_realclean() + +Need to unlock the Build program before deleting. + +=back + +=head1 AUTHOR + +Michael G Schwern + + +=head1 SEE ALSO + +perl(1), Module::Build(3), ExtUtils::MakeMaker(3) + +=cut