Subject: | tests broken when using ActivePerl with a different version CC than interp built with |
---------------------------------------------------------------
Show quoted text
cpan> install Devel::FindPerl
Running install for module 'Devel::FindPerl'
Running make for L/LE/LEONT/Devel-FindPerl-0.012.tar.gz
Prepending blib/arch and blib/lib of 30 build dirs to PERL5LIB; for 'get'
Has already been unwrapped into directory C:\Perl64\cpan\build\Devel-FindPerl-
0.012-pWSkiJ
Prepending blib/arch and blib/lib of 30 build dirs to PERL5LIB; for 'make'
Has already been made
Prepending blib/arch and blib/lib of 30 build dirs to PERL5LIB; for 'test'
Running make test
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
C:\Perl64\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, '
blib\lib', 'blib\arch')" t/*.t
t/00-compile.t ............ ok
t/10-basics.t .............
# Failed test 'Config of found perl equals current perl'
# at t/10-basics.t line 20.
t/10-basics.t ............. 1/? # got: 'summary of my perl5 (revision 5
version 14 subversion 2) configuration:
#
# platform:
# osname=mswin32, osvers=5.2, archname=mswin32-x64-multi-thread
# uname=''
# config_args='undef'
# hint=recommended, useposix=true, d_sigaction=undef
# useithreads=define, usemultiplicity=define
# useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
# use64bitint=define, use64bitall=undef, uselongdouble=undef
# usemymalloc=n, bincompat5005=undef
# compiler:
# cc='cl', ccflags ='-nologo -gf -w3 -md -zi -dndebug -ox -gl -fp:precise -d
win32 -d_console -dno_strict -dwin64 -dconservative -dperl_textmode_scripts -dus
e_sitecustomize -dperl_implicit_context -dperl_implicit_sys -duse_perlio',
# optimize='-md -zi -dndebug -ox -gl -fp:precise',
# cppflags='-dwin32'
# ccversion='15.0.30729', gccversion='', gccosandvers=''
# intsize=4, longsize=4, ptrsize=8, doublesize=8, byteorder=12345678
# d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8
# ivtype='__int64', ivsize=8, nvtype='double', nvsize=8, off_t='__int64', ls
eeksize=8
# alignbytes=8, prototype=define
# linker and libraries:
# ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -lib
path:"c:\perl64\lib\core" -machine:amd64'
# libpth=\lib
# libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32
.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_
32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvc
rt.lib
# perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comd
lg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib
ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib b
ufferoverflowu.lib msvcrt.lib
# libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl514.lib
# gnulibc_version=''
# dynamic linking:
# dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
# cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf
-ltcg -libpath:"c:\perl64\lib\core" -machine:amd64'
#
# '
# expected: 'summary of my perl5 (revision 5 version 14 subversion 2) config
uration:
#
# platform:
# osname=mswin32, osvers=5.2, archname=mswin32-x64-multi-thread
# uname=''
# config_args='undef'
# hint=recommended, useposix=true, d_sigaction=undef
# useithreads=define, usemultiplicity=define
# useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
# use64bitint=define, use64bitall=undef, uselongdouble=undef
# usemymalloc=n, bincompat5005=undef
# compiler:
# cc='cl', ccflags ='-nologo -gf -w3 -md -zi -dndebug -ox -gl -fp:precise -d
win32 -d_console -dno_strict -dwin64 -dconservative -dperl_textmode_scripts -dus
e_sitecustomize -dperl_implicit_context -dperl_implicit_sys -duse_perlio',
# optimize='-md -zi -dndebug -ox -gl -fp:precise',
# cppflags='-dwin32'
# ccversion='14.00.40310.41', gccversion='', gccosandvers=''
# intsize=4, longsize=4, ptrsize=8, doublesize=8, byteorder=12345678
# d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8
# ivtype='__int64', ivsize=8, nvtype='double', nvsize=8, off_t='__int64', ls
eeksize=8
# alignbytes=8, prototype=define
# linker and libraries:
# ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -lib
path:"c:\perl64\lib\core" -machine:amd64'
# libpth=\lib
# libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32
.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_
32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib buffe
roverflowu.lib msvcrt.lib
# perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comd
lg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib
ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib b
ufferoverflowu.lib msvcrt.lib
# libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl514.lib
# gnulibc_version=''
# dynamic linking:
# dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
# cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf
-ltcg -libpath:"c:\perl64\lib\core" -machine:amd64'
#
# '
# Looks like you failed 1 test of 1.
t/10-basics.t ............. Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/1 subtests
t/11-tainted.t ............ Can't spawn "cmd.exe": No such file or directory at
C:/Perl64/lib/IPC/Open3.pm line 409.
t/11-tainted.t ............ skipped: Perl not in perlpath 'C:\Perl64\bin\perl.ex
e'
t/release-pod-coverage.t .. skipped: these tests are for release candidate testi
ng
t/release-pod-syntax.t .... skipped: these tests are for release candidate testi
ng
Test Summary Report
-------------------
t/10-basics.t (Wstat: 256 Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 1
Files=5, Tests=2, 18 wallclock secs ( 0.13 usr + 0.81 sys = 0.94 CPU)
Result: FAIL
Failed 1/5 test programs. 1/2 subtests failed.
NMAKE : fatal error U1077: 'C:\Perl64\bin\perl.exe' : return code '0xff'
Stop.
LEONT/Devel-FindPerl-0.012.tar.gz
c:\PROGRA~2\MICROS~1.0\VC\BIN\amd64\nmake.exe test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
reports LEONT/Devel-FindPerl-0.012.tar.gz
Running make install
make test had returned bad status, won't install without force
Failed during this command:
LEONT/Devel-FindPerl-0.012.tar.gz : make_test NO
Show quoted textcpan>
------------------------------------------------------------------
C:\Documents and Settings>perl -V
Summary of my perl5 (revision 5 version 14 subversion 2) configuration:
Platform:
osname=MSWin32, osvers=5.2, archname=MSWin32-x64-multi-thread
uname=''
config_args='undef'
hint=recommended, useposix=true, d_sigaction=undef
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cl', ccflags ='-nologo -GF -W3 -MD -Zi -DNDEBUG -Ox -GL -fp:precise -DWI
N32 -D_CONSOLE -DNO_STRICT -DWIN64 -DCONSERVATIVE -DPERL_TEXTMODE_SCRIPTS -DUSE_
SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO',
optimize='-MD -Zi -DNDEBUG -Ox -GL -fp:precise',
cppflags='-DWIN32'
ccversion='15.0.30729', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=8
ivtype='__int64', ivsize=8, nvtype='double', nvsize=8, Off_t='__int64', lsee
ksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpa
th:"C:\Perl64\lib\CORE" -machine:AMD64'
libpth=\lib
libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.l
ib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32
.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt
.lib
perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg
32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws
2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib buf
feroverflowU.lib msvcrt.lib
libc=msvcrt.lib, so=dll, useshrplib=true, libperl=perl514.lib
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -l
tcg -libpath:"C:\Perl64\lib\CORE" -machine:AMD64'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
PERL_MALLOC_WRAP PERL_PRESERVE_IVUV PL_OP_SLAB_ALLOC
USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
USE_PERLIO USE_PERL_ATOF USE_SITECUSTOMIZE
Locally applied patches:
ActivePerl Build 1402 [295342]
Built under MSWin32
Compiled at Oct 7 2011 15:19:36
@INC:
C:/Perl64/site/lib
C:/Perl64/lib
.
C:\Documents and Settings>
-----------------------------------------------------------------------
On P5P perl, on Win32 VC builds, ccversion is baked in by the build process into config/heavy. Even if you change your Visual C version, ccversion remains the same. ActiveState considers this a bug, and has a file called /lib/ActivePerl/Config.pm. That contains this code which fixes this bug.
----------------------------------------------------------------------
if ($COMPILER_ENV{$key} && !$compiler_env_initialized++) {
if ($^O eq "MSWin32" && !_gcc_requested() &&
_orig_conf("cc") eq "cl" && (my $cl = ActiveState::Path::find_prog("cl")))
{
require Win32;
my @version = Win32::GetFileVersion($cl);
if (@version) {
my $ccversion = join('.', @version[0..2]);
_override("ccversion", $ccversion);
# Remove bufferoverflowU.lib from $Config{libs} if this is 64-bit
# Perl and cl.exe is not the Windows 2003 SP1 Platfrom SDK compiler
if (_orig_conf("ptrsize") == 8 && $ccversion ne "14.0.40310") {
my $libs = _orig_conf("libs");
$libs =~ s/bufferoverflowU\.lib//i;
_override("libs", $libs);
}
}
}
---------------------------------------------------------------------------
Now your test fails.