Re: perl 5.14.0-RC1 is available for testing!
by FunkyMonk (Bishop) on Apr 20, 2011 at 13:39 UTC
|
| [reply] |
Re: perl 5.14.0-RC1 is available for testing!
by BrowserUk (Patriarch) on Apr 21, 2011 at 13:27 UTC
|
If anyone is taking notes, RC1 appears to build reasonably cleanly using MSVC9 64-bit. From what I remember, the noted test failures are all 'normal' for Windows builds. More info if required.
Test Summary Report
-------------------
comp/multiline.t (Wstat
+: 0 Tests: 6 Failed: 2)
Failed tests: 5-6
io/dup.t (Wstat
+: 0 Tests: 23 Failed: 0)
Parse errors: Tests out of sequence. Found (8) but expected (2)
Tests out of sequence. Found (9) but expected (3)
Tests out of sequence. Found (10) but expected (4)
Tests out of sequence. Found (11) but expected (5)
Tests out of sequence. Found (12) but expected (6)
Displayed the first 5 of 23 TAP syntax errors.
Re-run prove with the -p option to see them all.
../cpan/CPANPLUS/t/04_CPANPLUS-Module.t (Wstat
+: 256 Tests: 124 Failed: 1)
Failed test: 109
Non-zero exit status: 1
../cpan/CPANPLUS/t/20_CPANPLUS-Dist-MM.t (Wstat
+: 512 Tests: 43 Failed: 8)
Failed tests: 11-14, 16-18, 42
Non-zero exit status: 2
../dist/IO/t/io_dup.t (Wstat
+: 0 Tests: 2 Failed: 0)
Parse errors: Tests out of sequence. Found (6) but expected (2)
Bad plan. You planned 6 tests but ran 2.
Files=2092, Tests=463208, 1892 wallclock secs (83.93 usr + 11.14 sys =
+ 95.07 CPU)
Result: FAIL
NMAKE : fatal error U1077: '..\perl.exe' : return code '0xb'
Stop.
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] [d/l] |
Re: perl 5.14.0-RC1 is available for testing!
by Anonymous Monk on Apr 21, 2011 at 04:48 UTC
|
Mostly runs ok
I built perl with gcc 4.5.2, but forgot to add CFLAGS=-static-libgcc
, so perl.exe/perl514.dll needs
libgcc_s_dw2-1.dll, but op/taint modifies $ENV{PATH} so when it uses $Invoke_Perl, it can't find libgcc_s_dw2-1.dll
No clue about porting/buildtoc.t
../cpan/Win32/t/Names.t assumes LoginName is longer than one character, win32 doesn't impose such a limit, don't see why a test would :)
No clue about ../cpan/podlators/t/text-encoding.t, it seems to work outside core
As for ../cpan/Module-Build/t/ppm.t, typical win32 nonsense
... t/ppm.t: error opening directory D: No such file or directory
but frankly I don't let Module::Build make docs for me, I don't have any docs at all :)
Here is how I compiled v5.14.0-RC1
| [reply] [d/l] [select] |
|
|
perl.exe/perl514.dll needs libgcc_s_dw2-1.dll, but op/taint modifies $ENV{PATH} so when it uses $Invoke_Perl, it can't find libgcc_s_dw2-1.dll
This section of makefile.mk is supposed to deal with that issue:
#
# If building with gcc-4.x.x (or x86_64-w64-mingw32-gcc-4.x.x), then
# uncomment the following assignment to GCC_4XX, make sure that CCHOM
+E
# has been set correctly above, and uncomment the appropriate
# GCCHELPERDLL line.
# The name of the dll can change, depending upon which vendor has supp
+lied
# your 4.x.x compiler, and upon the values of "x".
# (The dll will be in your mingw/bin folder, so check there if you're
# unsure about the correct name.)
# Without these corrections, the op/taint.t test script will fail.
#
#GCC_4XX *= define
#GCCHELPERDLL *= $(CCHOME)\bin\libgcc_s_sjlj-1.dll
#GCCHELPERDLL *= $(CCHOME)\bin\libgcc_s_dw2-1.dll
#GCCHELPERDLL *= $(CCHOME)\bin\libgcc_s_1.dll
Not sure how that fits in with your method of building. I've only ever built perl with gcc by running dmake -f makefile.mk
With my mingw port of gcc-3.4.5 I'm finding that porting/buildtoc.t fails test 2. All other tests pass. With my mingw64 port of gcc-4.6.0, I'm finding that the tests hang when 19_CPANPLUS-Dist.t is run, so I don't get to find out what failures there are.
Cheers, Rob | [reply] [d/l] [select] |
|
|
AHA, typical dumb makefile and I forgot to grep :)
That makefile is really really unreadable (someone should indent it, rewrite it)
I shouldn't need to know anything about this :)
The GCC_4XX way should be automatic one way or another, something like
.IF "$(CCTYPE)" == "GCC"
GCC_VERSION *= $(shell gcc -dumpversion)
GCC_MAJOR_VERSION *= $(GCC_VERSION:b:b)
.IF "$(GCC_MAJOR_VERSION)" == "4"
GCC_4XX *= define
.ENDIF
.ENDIF
Or my way (untested)
.IF "$(CCTYPE)" == "GCC"
GCC_VERSION *= $(shell gcc -dumpversion)
GCC_MAJOR_VERSION *= $(GCC_VERSION:b:b)
.IF "$(GCC_MAJOR_VERSION)" == "4"
CFLAGS +=-static-libgcc
LIBC += -static-libgcc
.ENDIF
.ENDIF
Checking my make commands, a test makefile.mk
CCTYPE *= GCC
.IF "$(CCTYPE)" == "GCC"
GCC_VERSION *= $(shell gcc -dumpversion)
GCC_MAJOR_VERSION *= $(GCC_VERSION:b:b)
.IF "$(GCC_MAJOR_VERSION)" == "4"
CFLAGS += -static-libgcc
LIBC += -static-libgcc
GCC_4XX *= define
.ENDIF
.ENDIF
__echo_GCC:
@echo GCC_VERSION $(GCC_VERSION)
@echo GCC_MAJOR_VERSION $(GCC_MAJOR_VERSION)
@echo GCC_4XX $(GCC_4XX)
@echo CFLAGS $(CFLAGS)
@echo LIBC $(LIBC)
$(NOOP)
how it runs (output)
$ dmake -f makefile.mk
dmake: Executing shell macro: gcc -dumpversion
dmake: Executing shell macro: gcc -dumpversion
GCC_VERSION 4.5.2
dmake: Executing shell macro: gcc -dumpversion
GCC_MAJOR_VERSION 4
GCC_4XX define
CFLAGS -static-libgcc
LIBC -static-libgcc
Not sure how that fits in with your method of building. I've only ever built perl with gcc by running dmake -f makefile.mk
Yup, thats what I do, the -f makefile.mk isn't mandatory since that is the default | [reply] [d/l] [select] |
|
|
|
|
|
|
|
|
|
Now I use -static-libgcc AND -static-libstdc++, don't even have to think about op/taint.t and that GCC_4XX stuff :)
perl -pi.orig -e " s!^(LINK_FLAGS\s*=)!$1 -static-libgcc -static-libst
+dc++ !" win32/Makefile win32/makefile.mk
| [reply] [d/l] |
|
|
Now I use -static-libgcc AND -static-libstdc++, don't even have to think about op/taint.t and that GCC_4XX stuff
Nor do you have to think about them with perl-5.15 or higher .... even if you *don't* do the "-static" thing :-)
Cheers, Rob
| [reply] |
|
|
Re: perl 5.14.0-RC1 is available for testing!
by Anonymous Monk on May 01, 2011 at 23:21 UTC
|
Ok, I found another one, though I'm not quite sure what the problem is
$ perl -e "print pack 'Q',1"
Invalid type 'Q' in pack at -e line 1.
In perl\win32\config.h I have
/* HAS_QUAD:
* This symbol, if defined, tells that there's a 64-bit integer typ
+e,
* Quad_t, and its unsigned counterpart, Uquad_t. QUADKIND will be
+one
* of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT6
+4_T.
*/
#define HAS_QUAD /**/
#ifdef HAS_QUAD
# define Quad_t long long /**/
# define Uquad_t unsigned long long /**/
# define QUADKIND 3 /**/
# define QUAD_IS_INT 1
# define QUAD_IS_LONG 2
# define QUAD_IS_LONG_LONG 3
# define QUAD_IS_INT64_T 4
#endif
And it seems to have made it into Config
$ perl "-V:.*?quad.*?"
d_quad='define';
quadkind='3';
quadtype='long long';
uquadtype='unsigned long long';
So q/Q for pack/unpack should work, right? | [reply] [d/l] [select] |
|
|
C:\test\perl-5.14.0-RC1>.\perl -V
Summary of my perl5 (revision 5 version 14 subversion 0) configuration
+:
Platform:
osname=MSWin32, osvers=6.0, 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=und
+ef
use64bitint=define, use64bitall=undef, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cl', ccflags ='-nologo -GF -W3 -MD -Zi -DNDEBUG -Ox -GL -fp:pr
+ecise -
optimize='-MD -Zi -DNDEBUG -Ox -GL -fp:precise',
cppflags='-DWIN32'
ccversion='15.00.21022.08', 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='__in
+t64', l
alignbytes=8, prototype=define
Linker and Libraries:
ld='link', ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf -lt
+cg -li
libpth=\lib
libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
+comdlg3
perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.l
+ib com
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
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
Locally applied patches:
RC1
Built under MSWin32
Compiled at Apr 21 2011 08:07:59
@INC:
C:/test/perl-5.14.0-RC1/lib
.
C:\test\perl-5.14.0-RC1>.\perl.exe -E"print pack 'Q', 1 "
☺
C:\test\perl-5.14.0-RC1>.\perl.exe -E"print length pack 'Q', 1 "
8
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] [d/l] |
|
|
So q/Q for pack/unpack should work, right?
On the basis of what you've shown us, that is right. What's your full perl -V output ?
Cheers, Rob
| [reply] [d/l] |
|
|
Difference from BrowserUks -V is presence of use64bitint=define, but HAVE_QUAD doesn't appear to depend on it.
The other difference is I'm using gcc on 32bit OS, but I have 64-bit processor, but I think it should still work :)
I'm recompiling now, will update with full -V.
update:
update: well, use64bitint=define seems to make Q/q available, and the simple test matches BrowserUks results.
update: hmm, it compiles, Q/q is available, but some failing tests, awww :)
Read more... $ perl harness op/64bitint.t op/pack.t op/sprintf2.t (15 kB)
And the other new test failures
Read more... $ perl harness ../dist/Math-BigInt/t/bare_mbi.t ../dist/Math-BigInt/t/bigintpm.t ../dist/Math-BigInt/t/sub_mbi.t (3 kB)
Oh well :) Thanks
| [reply] [d/l] [select] |
|
|