Alien-Selenium
view release on metacpan or search on metacpan
=head2 ACTION_code
Overloaded from L<Module::Build> so as to also L</fetch_selenium>,
L</extract_selenium> and/or L</install_selenium>.
=cut
sub ACTION_code {
my $self = shift;
$self->SUPER::ACTION_code;
$self->fetch_selenium;
$self->extract_selenium;
$self->install_selenium;
}
=head2 process_pm_files
Overloaded from parent class so as to reserve a special treatment to
L<Alien::Selenium>; namely, the value of $SELENIUM_VERSION is changed
in place to reflect that of the L<--selenium-version> command-line
switch.
=cut
sub process_pm_files {
my ($self) = @_;
$self->SUPER::process_pm_files(@_);
my $from = catfile(qw(lib Alien Selenium.pm));
my $todir = catdir(qw(blib lib Alien));
unless (-d $todir) {
mkpath($todir) or die "Cannot create path $todir: $!";
}
my $tofile = catfile($todir, "Selenium.pm");
unlink($tofile);
my $infd = new IO::File($from, "<") or
die "Cannot open $from for reading: $!";
inc/My/Module/Build.pm view on Meta::CPAN
the Perl modules from the CPAN index.
=back
=cut
sub new {
my ($class, %opts) = @_;
$opts{recursive_test_files} = 1 if
(! defined $opts{recursive_test_files});
my $self = $class->SUPER::new(%opts);
if ($self->maintainer_mode_enabled()) {
print "Running specific maintainer checks...\n";
$self->check_maintainer_dependencies();
}
$self->_process_options;
$self;
}
=item I<requires_for_build()>
inc/My/Module/Build.pm view on Meta::CPAN
=item I<ACTION_build>
Overloaded to add L</ACTION_buildXS> as a dependency.
=cut
sub ACTION_build {
my $self = shift;
$self->depends_on("buildXS");
$self->SUPER::ACTION_build(@_);
}
=item I<ACTION_dist>
Overloaded so that typing C<./Build dist> does The Right Thing and
regenerates everything that is needed in order to create the
distribution tarball. This includes the C<Makefile.PL> if so requested
(see L<Module::Build::Compat/create_makefile_pl>) and the C<MANIFEST>
file (see L<Module::Build/manifest>). On the other hand, the
C<META.yml> file is not regenerated automatically, so that the author
inc/My/Module/Build.pm view on Meta::CPAN
=cut
sub ACTION_dist {
my $self = shift;
$self->do_create_makefile_pl if $self->create_makefile_pl;
$self->do_create_readme if $self->create_readme;
$self->depends_on("manifest");
$self->SUPER::ACTION_dist(@_);
}
=item I<ACTION_buildXS>
Does nothing. Intended for overloading by packages that have XS code,
which e.g. may want to call L</process_Inline_C_file> there.
=cut
sub ACTION_buildXS { }
inc/My/Module/Build.pm view on Meta::CPAN
$self->{properties}->{verbose} = 1 if
(! defined $self->{properties}->{verbose});
}
# use_blib feature, cont'd:
no warnings "once";
local *blib = sub {
my $self = shift;
return File::Spec->curdir if ! $self->use_blib;
return $self->SUPER::blib(@_);
};
$self->SUPER::ACTION_test(@_);
}
=item I<ACTION_distmeta>
Overloaded to ensure that .pm modules in inc/ don't get indexed and
that the C<add_to_no_index> parameter to L</new> is honored.
=cut
sub ACTION_distmeta {
inc/My/Module/Build.pm view on Meta::CPAN
# Steals a reference to the YAML object that will be constructed
# by the parent class (duhh)
local our $orig_yaml_node_new = \&YAML::Node::new;
local our $node;
no warnings "redefine";
local *YAML::Node::new = sub {
$node = $orig_yaml_node_new->(@_);
};
my $retval = $self->SUPER::ACTION_distmeta;
die "Failed to steal the YAML node" unless defined $node;
$node->{no_index} = $self->{properties}->{add_to_no_index} || {};
$node->{no_index}->{directory} ||= [];
unshift(@{$node->{no_index}->{directory}}, qw(examples inc t),
(map { File::Spec::Unix->catdir("lib", split m/::/) }
(@{$node->{no_index}->{namespace} || []})));
foreach my $package (keys %{$node->{provides}}) {
delete $node->{provides}->{$package} if
inc/My/Module/Build.pm view on Meta::CPAN
blib/**.pm counterpart; overloaded here to remove the test suite (see
L</Unit tests>) and standardize the copyright of the files authored by
me.
=cut
sub process_pm_files {
no warnings "once";
local *copy_if_modified = \*process_pm_file_if_modified;
my $self = shift;
return $self->SUPER::process_pm_files(@_);
}
=item I<process_pm_file_if_modified(%args)>
Does the same as L<copy_file_if_modified> (which it actually replaces
while L<process_pm_files> runs), except that the L</new_pm_filter> is
applied instead of performing a vanilla copy as L<Module::Build> does.
=cut
inc/My/Module/Build.pm view on Meta::CPAN
=cut
sub find_test_files {
my $self = shift;
# Short-cut activated by L</ACTION_test>:
return $self->{FORCE_find_test_files_result} if
(defined $self->{FORCE_find_test_files_result});
my @tests = @{$self->SUPER::find_test_files(@_)};
# Short-cut activated by putting a 'test_files' key in the constructor
# arguments:
return @tests if $self->{test_files};
@tests = grep { ! m/^t.maintainer/ } @tests unless
($self->maintainer_mode_enabled());
File::Find::find
({no_chdir => 1, wanted => sub {
push(@tests, $_) if $self->find_test_files_predicate();
inc/My/Module/Build.pm view on Meta::CPAN
do that).
This easter egg was a feature of an old GNU-make based build framework
that I created in a former life. So there.
=cut
sub do_create_makefile_pl {
my ($self, %args) = @_;
warn("Cannot take off any Zig, sorry"),
return $self->SUPER::do_create_makefile_pl(%args) if ($args{fh});
$args{file} ||= 'Makefile.PL';
my $retval = $self->SUPER::do_create_makefile_pl(%args);
my $MakefilePL = read_file($args{file});
$MakefilePL = <<'PREAMBLE' . $MakefilePL;
use FindBin qw($Bin);
use lib "$Bin/inc";
PREAMBLE
$MakefilePL =~ s|Module::Build::Compat->write_makefile|My::Module::Build::HowAreYouGentlemen->write_makefile|;
write_file($args{file}, $MakefilePL);
return $retval;
}
{
package My::Module::Build::HowAreYouGentlemen;
our @ISA=qw(Module::Build::Compat); # Do not explicitly load it because
# Makefile.PL will set up us the Module::Build::Compat itself (and
# also we want to take off every zig of bloat when
# My::Module::Build is loaded from elsewhere). Moreover, "use
# base" is not yet belong to us at this time.
sub fake_makefile {
my $self = shift;
return $self->SUPER::fake_makefile(@_). <<'MAIN_SCREEN_TURN_ON';
# In 2101 AD war was beginning...
your:
@echo
@echo -n " All your codebase"
time:
@echo " are belong to us !"
@echo
MAIN_SCREEN_TURN_ON
inc/My/Module/Build.pm view on Meta::CPAN
# Kludge inserted by My::Module::Build to work around some brokenness
# in the \@ISA setup code above:
use base "My::Module::Build";
our \@ISA;
BEGIN { our \@ISAorig = \@ISA; }
\@ISA = our \@ISAorig;
$opts{code}
KLUDGE_ME_UP
return $pack->SUPER::subclass(%opts);
}
=item I<_startperl>
Overloaded from parent to attempt a chdir() into the right place in
./Build during initialization. This is an essential enabler to the
Emacs debugger support (see L</ACTION_test>) because we simply cannot
tell where Emacs will be running us from.
=cut
sub _startperl {
my $self = shift;
my $basedir = $self->base_dir;
$basedir = Win32::GetShortPathName($basedir) if is_win32;
return $self->SUPER::_startperl(@_) . <<"MORE";
# Hack by My::Module::Build to give the Emacs debugger one
# more chance to work:
use Cwd;
BEGIN {
\$My::Module::Build::initial_cwd = \$My::Module::Build::initial_cwd =
Cwd::cwd;
chdir("$basedir") || 1;
}
MORE
( run in 1.568 second using v1.01-cache-2.11-cpan-49f99fa48dc )