summaryrefslogtreecommitdiffstats
path: root/debian/perl-framework/Apache-Test/Makefile.PL
diff options
context:
space:
mode:
Diffstat (limited to 'debian/perl-framework/Apache-Test/Makefile.PL')
-rw-r--r--debian/perl-framework/Apache-Test/Makefile.PL214
1 files changed, 214 insertions, 0 deletions
diff --git a/debian/perl-framework/Apache-Test/Makefile.PL b/debian/perl-framework/Apache-Test/Makefile.PL
new file mode 100644
index 0000000..713b136
--- /dev/null
+++ b/debian/perl-framework/Apache-Test/Makefile.PL
@@ -0,0 +1,214 @@
+use 5.005;
+
+use lib qw(lib);
+use Apache::Test5005compat;
+
+use strict;
+use warnings;
+
+# was this file invoked directly via perl, or via the top-level
+# (mp2) Makefile.PL? if top-level, this env var will be set
+use constant TOP_LEVEL => $ENV{MOD_PERL_2_BUILD};
+
+if (!TOP_LEVEL) {
+ # see if we are building from within mp root, add src lib if we are
+ eval { require File::Spec };
+ unless ($@) {
+ if ( -e File::Spec->catdir('..', 'lib') ) {
+
+ # building A-T from mp subdirectory, use the mp lib
+ unshift @INC, File::Spec->catdir('..', 'lib');
+ }
+ }
+}
+
+use ExtUtils::MakeMaker;
+use Symbol;
+use File::Find qw(finddepth);
+
+use Apache::TestMM qw(test clean); #enable 'make test and make clean'
+use Apache::TestRun;
+use Apache::TestTrace;
+use Apache::TestReport;
+use Apache::TestConfig ();
+use Apache::TestRunPerl;
+
+my $VERSION;
+set_version();
+
+Apache::TestMM::filter_args();
+
+my @scripts = qw(t/TEST);
+
+finddepth(sub {
+ return if $_ eq 'Apache-TestItSelf';
+ return unless /(.*?\.pl)\.PL$/;
+ push @scripts, "$File::Find::dir/$1";
+}, '.');
+
+my $has_mp;
+eval { require mod_perl2 };
+if ($@) {
+ eval { require mod_perl };
+ if (!$@) {
+ $has_mp = 1;
+ }
+} else {
+ $has_mp = 2;
+}
+
+for (@scripts) {
+ Apache::TestMM::generate_script($_);
+}
+Apache::TestReport->generate_script;
+
+my @clean_files =
+ qw(.mypacklist
+ t/TEST
+ t/REPORT
+ Makefile.old
+ );
+
+my %prereq = (
+ 'File::Spec' => '0.8',
+ 'Cwd' => '2.06',
+);
+
+# Apache-Test/META.yml is excluded from mp2 distro to make PAUSE
+# indexer happy, but then perl Makefile.PL complains about a missing
+# META.yml, so autogenerate it if it wasn't in the distro
+my $no_meta = TOP_LEVEL ? 1 : 0;
+
+WriteMakefile(
+ NAME => 'Apache::Test',
+ VERSION => $VERSION,
+ PREREQ_PM => \%prereq,
+ NO_META => $no_meta,
+ dist => {
+ COMPRESS => 'gzip -9f', SUFFIX => 'gz',
+ PREOP => 'find $(DISTVNAME) -type d -print|xargs chmod 0755 && ' .
+ 'find $(DISTVNAME) -type f -print|xargs chmod 0644',
+ TO_UNIX => 'find $(DISTVNAME) -type f -print|xargs dos2unix'
+ },
+ clean => {
+ FILES => "@clean_files",
+ },
+);
+
+# after CPAN/CPANPLUS had a chance to satisfy the requirements,
+# enforce those (for those who run things manually)
+check_prereqs();
+
+sub check_prereqs {
+ my %fail = ();
+ for (sort keys %prereq) {
+ unless (chk_version($_, $prereq{$_})) {
+ $fail{$_} = $prereq{$_};
+ }
+ }
+ if (%fail) {
+ error "\nThe following Apache-Test dependencies aren't satisfied:",
+ map { "\t$_: $fail{$_}" } sort keys %fail;
+ error "Install those from http://search.cpan.org and try again";
+ exit 0;
+ }
+}
+
+sub chk_version {
+ my($pkg, $wanted) = @_;
+
+ no strict 'refs';
+ local $| = 1;
+
+ print "Checking for $pkg...";
+ (my $p = $pkg . ".pm") =~ s#::#/#g;
+ eval { require $p;};
+ print("not ok\n$@"), return if $@;
+
+ my $vstr = ${"${pkg}::VERSION"} ? "found v" . ${"${pkg}::VERSION"}
+ : "not found";
+ my $vnum = eval(${"${pkg}::VERSION"}) || 0;
+
+ print $vnum >= $wanted ? "ok\n" : " " . $vstr . "\n";
+
+ $vnum >= $wanted;
+}
+
+sub set_version {
+ $VERSION = $Apache::Test::VERSION;
+
+ my $fh = Symbol::gensym();
+ open $fh, 'Changes' or die "Can't open Changes: $!";
+ while (<$fh>) {
+ if(/^=item.*-(dev|rc\d+)/) {
+ $VERSION .= "-$1";
+ last;
+ }
+ last if /^=item/;
+ }
+ close $fh;
+}
+
+sub add_dep {
+ my($string, $targ, $add) = @_;
+ $$string =~ s/($targ\s+::)/$1 $add/;
+}
+
+no warnings 'redefine';
+sub MY::postamble {
+ my $self = shift;
+
+ my $q = ($^O =~ /MSWin32/i ? '"' : "'");
+
+ my $string = $self->MM::postamble;
+
+ $string .= <<"EOF";
+tag :
+ svn copy -m $q\$(VERSION_SYM) tag$q https://svn.apache.org/repos/asf/perl/Apache-Test/trunk https://svn.apache.org/repos/asf/perl/Apache-Test/tags/\$(VERSION_SYM)
+EOF
+
+ return $string;
+}
+
+
+
+sub MY::test {
+ my $self = shift;
+
+ # run tests normally if non root user
+ return $self->Apache::TestMM::test(@_) if (($> != 0) # root user
+ or (Apache::TestConfig::WINFU)); # win users
+ # or win32
+
+ return <<EOF
+test::
+\t\@echo
+\t\@echo Apache::Test tests cannot be run as the root user.
+\t\@echo Apache cannot spawn child processes as 'root', therefore
+\t\@echo the test suite must be run with a non privileged user.
+\t\@echo Please build Apache::Test as a non-privileged user to
+\t\@echo run the test suite.
+\t\@echo
+EOF
+}
+
+sub MY::constants {
+ my $self = shift;
+
+ my $string = $self->MM::constants;
+
+ # mp2 installs this into INSTALLSITEARCH, so in order to avoid
+ # problems when users forget 'make install UNINST=1', trick MM into
+ # installing pure perl modules to the sitearch location, when this is
+ # not installed as a part of mp2 build
+ if (!$ENV{MOD_PERL_2_BUILD}) {
+ $string .= <<'EOI';
+
+# install into the same location as mod_perl 2.0
+INSTALLSITELIB = $(INSTALLSITEARCH)
+DESTINSTALLSITELIB = $(DESTINSTALLSITEARCH)
+EOI
+ }
+
+ $string;
+}