# This forces PL files to create target in same directory as PL file.
# This is so that make depend always knows where to find PL derivatives.
-$origdir = cwd;
+my $origdir = cwd;
chdir dirname($0);
-$file = basename($0, '.PL');
+my $file = basename($0, '.PL');
$file .= '.com' if $^O eq 'VMS';
# Create output file.
if \$running_under_some_shell;
!GROK!THIS!
+print OUT "\n# perlivp $^V\n";
+
# In the following, perl variables are not expanded during extraction.
print OUT <<'!NO!SUBS!';
-# perlivp V 0.01
-
-
sub usage {
warn "@_\n" if @_;
print << " EOUSAGE";
Usage:
- $0 [-p] [-v] | [-h]
+ $0 [-a] [-p] [-v] | [-h]
+ -a Run all tests (default is to skip .ph tests)
-p Print a preface before each test telling what it will test.
-v Verbose mode in which extra information about test results
is printed. Test failures always print out some extra information
exit;
}
-use vars (%opt); # allow testing with older versions (do not use our)
+use vars qw(%opt); # allow testing with older versions (do not use our)
@opt{ qw/? H h P p V v/ } = qw(0 0 0 0 0 0 0);
usage() if '?' =~ /\Q$flag/;
usage() if 'h' =~ /\Q$flag/;
usage() if 'H' =~ /\Q$flag/;
- usage("unknown flag: `$flag'") unless 'HhPpVv' =~ /\Q$flag/;
+ usage("unknown flag: `$flag'") unless 'HhPpVva' =~ /\Q$flag/;
warn "$0: `$flag' flag already set\n" if $opt{$flag}++;
}
shift;
# Unixes it is the basename rather than the full path to the perl binary.
my $perlpath = '';
if (defined($Config{'perlpath'})) { $perlpath = $Config{'perlpath'}; }
-# Of course some platforms are distinct...
-if ($^O eq 'VMS') { $perlpath = $^X; }
+
+# The useithreads Config variable plays a role in whether or not
+# threads and threads/shared work when C<use>d. They apparently always
+# get installed on systems that can run Configure.
+my $useithreads = '';
+if (defined($Config{'useithreads'})) { $useithreads = $Config{'useithreads'}; }
print OUT <<"!GROK!THIS!";
my \$perlpath = '$perlpath';
+my \$useithreads = '$useithreads';
!GROK!THIS!
print OUT <<'!NO!SUBS!';
!NO!SUBS!
print OUT <<"!GROK!THIS!";
-my \$ivp_VERSION = $];
+my \$ivp_VERSION = "$]";
!GROK!THIS!
print OUT <<'!NO!SUBS!';
-if ($ivp_VERSION == $]) {
+if ($ivp_VERSION eq $]) {
print "## Perl version `$]' appears installed as expected.\n" if $opt{'v'};
print "ok 2\n";
$pass__total++;
$needed_there++;
}
else {
- print "# Needed module `$_' does not appear to be properly installed ($@).\n";
+ print "# Needed module `$_' does not appear to be properly installed.\n";
}
$@ = undef;
}
my @extensions = split(/\s+/,$Config{'extensions'});
foreach (@extensions) {
next if ($_ eq '');
- next if ($_ eq 'Devel/DProf');
+ if ( $useithreads !~ /define/i ) {
+ next if ($_ eq 'threads');
+ next if ($_ eq 'threads/shared');
+ }
+ # that's a distribution name, not a module name
+ next if /^IO_Compress_(?:Zlib|Base)$/;
+ next if $_ eq 'Devel/DProf';
+ # test modules
+ next if $_ eq 'XS/APItest';
+ next if $_ eq 'XS/Typemap';
# VMS$ perl -e "eval ""require \""Devel/DProf.pm\"";"" print $@"
# \NT> perl -e "eval \"require 'Devel/DProf.pm'\"; print $@"
# DProf: run perl with -d to use DProf.
$extensions_there++;
}
else {
- print "# Required module `$_' does not appear to be properly installed ($@).\n";
+ print "# Required module `$_' does not appear to be properly installed.\n";
$@ = undef;
}
$extensions_total++;
$version = undef;
@missing = ();
@missing = $installed -> validate($_);
+
+ # .bs files are optional
+ @missing = grep { ! /\.bs$/ } @missing;
+ # man files are often compressed
+ @missing = grep { ! ( -s "$_.gz" || -s "$_.bz2" ) } @missing;
+
if ($#missing >= 0) {
print "# file",+($#missing == 0) ? '' : 's'," missing from installation:\n";
print '# ',join(' ',@missing),"\n";
$tests_total++;
+if ($opt{'a'}) {
print "## Checking installations of *.h -> *.ph header files.\n" if $opt{'p'};
my $ph_there = 0;
my $var = undef;
$ph_there++;
}
else {
- print "# Perl header `$_' does not appear to be properly installed ($@).\n";
+ print "# Perl header `$_' does not appear to be properly installed.\n";
}
$@ = undef;
}
$error_total++;
}
$tests_total++;
+}
+else {
+ print "## Skip checking of *.ph header files.\n" if $opt{'p'};
+}
# Final report (rather than feed ousrselves to Test::Harness::runtests()
# we simply format some output on our own to keep things simple and
=head1 NAME
-B<perlivp> - Perl Installation Verification Procedure
+perlivp - Perl Installation Verification Procedure
=head1 SYNOPSIS
-B<perlivp> [B<-p>] [B<-v>] [B<-h>]
+B<perlivp> [B<-a>] [B<-p>] [B<-v>] [B<-h>]
=head1 DESCRIPTION
Prints out a brief help message.
+=item B<-a> run all tests
+
+Normally tests for optional features are skipped. With -a all tests
+are executed.
+
=item B<-p> print preface
Gives a description of each test prior to performing it.