Skip Menu |

This queue is for tickets about the Data-Alias CPAN distribution.

Report information
The Basics
Id: 67764
Status: resolved
Priority: 0/
Queue: Data-Alias

People
Owner: Nobody in particular
Requestors: RANDIR [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 1.11
Fixed in: (no value)



Subject: Test suit failure on Freebsd
Perl on freebsd, starting from 5.8.8, has a merged from 5.8.9 defined-or operator patch. But t/29_alias_dorassign.t test fails on it: prove t/29_alias_dorassign.t t/29_alias_dorassign.t .. Unsupported alias target at t/29_alias_dorassign.t line 25. # Looks like your test exited with 2 before it could output anything. t/29_alias_dorassign.t .. Dubious, test returned 2 (wstat 512, 0x200) Failed 12/12 subtests Test Summary Report ------------------- t/29_alias_dorassign.t (Wstat: 512 Tests: 0 Failed: 0) Non-zero exit status: 2 Parse errors: Bad plan. You planned 12 tests but ran 0. Files=1, Tests=0, 1 wallclock secs ( 0.02 usr 0.02 sys + 0.01 cusr 0.00 csys = 0.04 CPU) Result: FAIL This issue is present since 1.11 perl -V Summary of my perl5 (revision 5 version 8 subversion 8) configuration: Platform: osname=freebsd, osvers=7.2-stable, archname=amd64-freebsd uname='freebsd sigeon.ru 7.2-stable freebsd 7.2-stable #0: tue nov 3 08:27:31 msk 2009 root@sigeon.ru:usrobjusrsrcsyssigeon amd64 ' config_args='' hint=previous, useposix=true, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=y, bincompat5005=undef Compiler: cc='cc', ccflags ='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include', optimize='-O -march=nocona -g -ggdb3', cppflags='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include' ccversion='', gccversion='4.2.1 20070719 [FreeBSD]', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags =' -Wl,-E -L/usr/local/lib' libpth=/usr/lib /usr/local/lib libs=-lm -lcrypt -lutil -lthr perllibs=-lm -lcrypt -lutil -lthr libc=, so=so, useshrplib=false, libperl=libperl.a gnulibc_version='' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' ' cccdlflags='-DPIC -fPIC', lddlflags='-shared -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: MYMALLOC USE_64_BIT_ALL USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO Locally applied patches: defined-or Built under freebsd Compiled at Sep 3 2010 01:37:51 @INC: /usr/local/lib/perl5/site_perl/5.8.8/amd64-freebsd /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl /usr/local/lib/perl5/5.8.8/amd64-freebsd /usr/local/lib/perl5/5.8.8 .
Subject: Re: [rt.cpan.org #67764] Test suit failure on Freebsd
Date: Tue, 26 Apr 2011 16:15:53 +0100
To: Sergey Aleynikov via RT <bug-Data-Alias [...] rt.cpan.org>
From: Zefram <zefram [...] fysh.org>
Thanks for the report. The problem is about how Data-Alias can detect, at compile time, whether the defined-or operator exists. Prior to 1.11 it looked for the presence of the pp_dorassign() function, but in Perl 5.13.9 pp_dorassign() got merged into pp_defined() so that test broke. From 1.11 Data-Alias has just looked at the Perl version number, but as you've found that breaks on your mutant 5.8. I don't see any way to reliably detect the existence of an opcode, independent of Perl version number, from within the C preprocessor. Do you have a way? If we can't come up with something clean, I may have to resort to a pre-compilation feature test. -zefram
I think that #ifdef pp_dorassign #define DA_HAVE_OP_DORASSIGN 1 #else #define DA_HAVE_OP_DORASSIGN (PERL_COMBI_VERSION >= 5009000) #endif should do the trick. BTW, 5.8.9 that officially has defined-or operator also seems to be cut off by current check.
Subject: Re: [rt.cpan.org #67764] Test suit failure on Freebsd
Date: Tue, 26 Apr 2011 17:56:30 +0100
To: Sergey Aleynikov via RT <bug-Data-Alias [...] rt.cpan.org>
From: Zefram <zefram [...] fysh.org>
Sergey Aleynikov via RT wrote: Show quoted text
>#ifdef pp_dorassign >#define DA_HAVE_OP_DORASSIGN 1 >#else >#define DA_HAVE_OP_DORASSIGN (PERL_COMBI_VERSION >= 5009000) >#endif
That's an option, thanks. Show quoted text
>BTW, 5.8.9 that officially has defined-or operator >also seems to be cut off by current check.
Standard 5.8.9 does not have defined-or. Any 5.8.9 with defined-or is a mutant, just like your 5.8.8. -zefram
Fixed in Data-Alias-1.14, just uploaded to CPAN.