Subject: | [perl #39055] Patches for 5.8.8 lib/ExtUtils/t failures |
Forwarding from the rt.perl queue:
----------------------------------
This is a bug report for perl from paull@cv.hp.com,
generated with the help of perlbug 1.35 running under perl v5.8.8.
Hello
During my build of 5.8.8, I encountered phantom failures among the
tests of lib/ExtUtils. I believe the tests are making the assumption that
a Makefile.PL cannot be created/closed, then executed to produce a Makefile,
all within the 1-second (on many platforms) granularity of filesystem
timestamps.
In other words, a sufficiently fast box will randomly be able to produce
a Makefile from a Makefile.PL, with a matching mtime.
The tests probably should not use a '-M < -M' type of comparison, but I
chose
to insert a 'sleep 2' before the generation instead.
Enclosed please find patches for
lib/ExtUtils/t/Constant.t
lib/ExtUtils/t/PL_FILES.t
lib/ExtUtils/t/basic.t
lib/ExtUtils/t/installbase.t
lib/ExtUtils/t/prereq_print.t
lib/ExtUtils/t/recurs.t
Best Regards -pal
#---------------------------------- cut here
----------------------------------
# This is a shell archive. Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
#
# Wrapped by paull <paull@cv.hp.com> on Tue May 2 13:41:41 2006
#
# This archive contains:
# Constant.t.diff PL_FILES.t.diff
# basic.t.diff installbase.t.diff
# prereq_print.t.diff recurs.t.diff
#
# Error checking via wc(1) will be performed.
# Error checking via sum(1) will be performed.
LANG=""; export LANG
PATH=/bin:/usr/bin:/usr/sbin:/usr/ccs/bin:$PATH; export PATH
EXIT_STATUS=0
if sum -r </dev/null >/dev/null 2>&1
then
sumopt='-r'
else
sumopt=''
fi
echo x - Constant.t.diff
cat >Constant.t.diff <<'@EOF'
*** Constant.t Sun Aug 21 09:18:43 2005
--- ../../../../../withPatches/lib/ExtUtils/t/Constant.t Wed Apr 26
15:54:55 2006
***************
*** 110,115 ****
--- 110,116 ----
sub build_and_run {
my ($tests, $expect, $files) = @_;
my $core = $ENV{PERL_CORE} ? ' PERL_CORE=1' : '';
+ sleep 2;
my @perlout = `$runperl Makefile.PL $core`;
if ($?) {
print "not ok $realtest # $runperl Makefile.PL failed: $?\n";
@EOF
set `sum $sumopt <Constant.t.diff`; if test $1 -ne 30555
then
echo ERROR: Constant.t.diff checksum is $1 should be 30555
EXIT_STATUS=1
fi
set `wc -lwc <Constant.t.diff`
if test $1$2$3 != 1260430
then
echo ERROR: wc results of Constant.t.diff are $* should be 12 60 430
EXIT_STATUS=1
fi
chmod 664 Constant.t.diff
echo x - PL_FILES.t.diff
cat >PL_FILES.t.diff <<'@EOF'
*** PL_FILES.t Sat May 21 02:43:24 2005
--- ../../../../../withPatches/lib/ExtUtils/t/PL_FILES.t Wed Apr 26
15:57:48 2006
***************
*** 31,36 ****
--- 31,37 ----
ok chdir('PL_FILES-Module');
+ sleep 2;
run(qq{$perl Makefile.PL});
cmp_ok( $?, '==', 0 );
@EOF
set `sum $sumopt <PL_FILES.t.diff`; if test $1 -ne 20521
then
echo ERROR: PL_FILES.t.diff checksum is $1 should be 20521
EXIT_STATUS=1
fi
set `wc -lwc <PL_FILES.t.diff`
if test $1$2$3 != 1233274
then
echo ERROR: wc results of PL_FILES.t.diff are $* should be 12 33 274
EXIT_STATUS=1
fi
chmod 664 PL_FILES.t.diff
echo x - basic.t.diff
cat >basic.t.diff <<'@EOF'
*** basic.t Fri Oct 21 05:00:22 2005
--- ../../../../../withPatches/lib/ExtUtils/t/basic.t Wed Apr 26
15:58:44 2006
***************
*** 47,52 ****
--- 47,53 ----
ok( chdir('Big-Dummy'), "chdir'd to Big-Dummy" ) ||
diag("chdir failed: $!");
+ sleep 2;
my @mpl_out = run(qq{$perl Makefile.PL "PREFIX=../dummy-install"});
END { rmtree '../dummy-install'; }
***************
*** 254,259 ****
--- 255,261 ----
# Test NO_META META.yml suppression
unlink $meta_yml;
ok( !-f $meta_yml, 'META.yml deleted' );
+ sleep 2;
@mpl_out = run(qq{$perl Makefile.PL "NO_META=1"});
cmp_ok( $?, '==', 0, 'Makefile.PL exited with zero' ) || diag(@mpl_out);
my $distdir_out = run("$make distdir");
***************
*** 262,267 ****
--- 264,270 ----
# Make sure init_dirscan doesn't go into the distdir
+ sleep 2;
@mpl_out = run(qq{$perl Makefile.PL "PREFIX=../dummy-install"});
cmp_ok( $?, '==', 0, 'Makefile.PL exited with zero' ) || diag(@mpl_out);
@EOF
set `sum $sumopt <basic.t.diff`; if test $1 -ne 59342
then
echo ERROR: basic.t.diff checksum is $1 should be 59342
EXIT_STATUS=1
fi
set `wc -lwc <basic.t.diff`
if test $1$2$3 != 32124971
then
echo ERROR: wc results of basic.t.diff are $* should be 32 124 971
EXIT_STATUS=1
fi
chmod 664 basic.t.diff
echo x - installbase.t.diff
cat >installbase.t.diff <<'@EOF'
*** installbase.t Thu Apr 7 01:32:22 2005
--- ../../../../../withPatches/lib/ExtUtils/t/installbase.t Wed Apr 26
15:59:04 2006
***************
*** 35,40 ****
--- 35,41 ----
ok( chdir('Big-Dummy'), "chdir'd to Big-Dummy") || diag("chdir failed; $!");
+ sleep 2;
my @mpl_out = run(qq{$perl Makefile.PL "INSTALLBASE=../dummy-install"});
END { rmtree '../dummy-install'; }
@EOF
set `sum $sumopt <installbase.t.diff`; if test $1 -ne 53412
then
echo ERROR: installbase.t.diff checksum is $1 should be 53412
EXIT_STATUS=1
fi
set `wc -lwc <installbase.t.diff`
if test $1$2$3 != 1244385
then
echo ERROR: wc results of installbase.t.diff are $* should be 12 44 385
EXIT_STATUS=1
fi
chmod 664 installbase.t.diff
echo x - prereq_print.t.diff
cat >prereq_print.t.diff <<'@EOF'
*** prereq_print.t Fri Oct 21 05:00:23 2005
--- ../../../../../withPatches/lib/ExtUtils/t/prereq_print.t Wed Apr 26
15:59:52 2006
***************
*** 48,53 ****
--- 48,54 ----
diag("chdir failed: $!");
unlink $Makefile;
+ sleep 2;
my $prereq_out = run(qq{$Perl Makefile.PL "PREREQ_PRINT=1"});
ok( !-r $Makefile, "PREREQ_PRINT produces no $Makefile" );
is( $?, 0, ' exited normally' );
***************
*** 61,66 ****
--- 62,68 ----
}
+ sleep 2;
$prereq_out = run(qq{$Perl Makefile.PL "PRINT_PREREQ=1"});
ok( !-r $Makefile, "PRINT_PREREQ produces no $Makefile" );
is( $?, 0, ' exited normally' );
@EOF
set `sum $sumopt <prereq_print.t.diff`; if test $1 -ne 57779
then
echo ERROR: prereq_print.t.diff checksum is $1 should be 57779
EXIT_STATUS=1
fi
set `wc -lwc <prereq_print.t.diff`
if test $1$2$3 != 2281642
then
echo ERROR: wc results of prereq_print.t.diff are $* should be 22 81 642
EXIT_STATUS=1
fi
chmod 664 prereq_print.t.diff
echo x - recurs.t.diff
cat >recurs.t.diff <<'@EOF'
*** recurs.t Thu Apr 7 01:32:22 2005
--- ../../../../../withPatches/lib/ExtUtils/t/recurs.t Wed Apr 26
16:00:52 2006
***************
*** 45,50 ****
--- 45,51 ----
# Check recursive Makefile building.
+ sleep 2;
my @mpl_out = run(qq{$perl Makefile.PL});
cmp_ok( $?, '==', 0, 'Makefile.PL exited with zero' ) ||
***************
*** 68,73 ****
--- 69,75 ----
# Check NORECURS
+ sleep 2;
@mpl_out = run(qq{$perl Makefile.PL "NORECURS=1"});
cmp_ok( $?, '==', 0, 'Makefile.PL NORECURS=1 exited with zero' ) ||
***************
*** 93,98 ****
--- 95,101 ----
# Check that arguments aren't stomped when they have .. prepended
# [rt.perl.org 4345]
+ sleep 2;
@mpl_out = run(qq{$perl Makefile.PL "INST_SCRIPT=cgi"});
cmp_ok( $?, '==', 0, 'Makefile.PL exited with zero' ) ||
@EOF
set `sum $sumopt <recurs.t.diff`; if test $1 -ne 52443
then
echo ERROR: recurs.t.diff checksum is $1 should be 52443
EXIT_STATUS=1
fi
set `wc -lwc <recurs.t.diff`
if test $1$2$3 != 32112808
then
echo ERROR: wc results of recurs.t.diff are $* should be 32 112 808
EXIT_STATUS=1
fi
chmod 664 recurs.t.diff
if test "$EXIT_STATUS" -eq 1
then
exit 1
fi
exit 0
---
Flags:
category=library
severity=low
---
Site configuration information for perl v5.8.8:
Configured by paull at Wed Apr 26 13:31:42 PDT 2006.
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
Platform:
osname=hpux, osvers=11.11, archname=PA-RISC2.0
uname='hp-ux hpcvipal b.11.11 u 9000785 2003320704 unlimited-user license '
config_args=''
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=undef
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags =' -Ae -D_HPUX_SOURCE -Wl,+vnocompatwarnings
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 ',
optimize='+O2 +Onolimit',
cppflags='-Aa -D__STDC_EXT__ -D_HPUX_SOURCE -D_HPUX_SOURCE
-Wl,+vnocompatwarnings'
ccversion='B.11.X.32509-32512.GP', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='/usr/bin/ld', ldflags =''
libpth=/lib /usr/lib /usr/ccs/lib
libs=-lnsl -lnm -lndbm -lmalloc -ldld -lm -lcrypt -lsec -lc
perllibs=-lnsl -lnm -lmalloc -ldld -lm -lcrypt -lsec -lc
libc=/lib/libc.sl, so=sl, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_hpux.xs, dlext=sl, d_dlsymun=undef, ccdlflags='-Wl,-E
-Wl,-B,deferred '
cccdlflags='+Z', lddlflags='-b +vnocompatwarnings'
Locally applied patches:
---
@INC for perl v5.8.8:
/apps/perl-5.8.8/32bitPA-RISC2.0/lib/5.8.8/PA-RISC2.0
/apps/perl-5.8.8/32bitPA-RISC2.0/lib/5.8.8
/apps/perl-5.8.8/32bitPA-RISC2.0/lib/site_perl/5.8.8/PA-RISC2.0
/apps/perl-5.8.8/32bitPA-RISC2.0/lib/site_perl/5.8.8
/apps/perl-5.8.8/32bitPA-RISC2.0/lib/site_perl
.
---
Environment for perl v5.8.8:
HOME=/home/paull
LANG=C
LANGUAGE (unset)
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/apps/perl-5.8.8/32bitPA-RISC2.0/bin:/usr/bin:/usr/bin/X11:/usr/ccs/bin:/usr/contrib/bin:/opt/ansic/bin:/usr/contrib/bin/X11:/home/paull/develBin:/usr/local/bin/X11:/opt/fortran90/bin:/opt/fortran90/contrib/bin:/home/paull/bin:/apps/perl-5.8.8/32bitPA-RISC2.0/ext/bin:.
PERL_BADLANG (unset)
SHELL=/usr/bin/sh