CC: | bug-AnyEvent [...] rt.cpan.org |
Subject: | ScanDeps incompatible with AnyEvent (Perl 5.14, AnyEvent 5.34, PAR 1.00.2) |
Date: | Thu, 30 Jun 2011 15:46:29 -0700 |
To: | bug-PAR [...] rt.cpan.org |
From: | Scott Hutton <schutton [...] cisco.com> |
PAR emits this error while trying to compile AnyEvent:
<<<<<
$ pp -c -M AnyEvent -M AnyEvent::Impl::EV -M EV -o repeng {SCRIPTNAME}
Variable "@models" is not available at T7uor6 line 1259.
SYSTEM ERROR in compiling /usr/local/lib/perl5/site_perl/5.14.1/mach/AnyEvent.pm: 65280 at /usr/local/lib/perl5/site_perl/5.14.1/Module/ScanDeps.pm line 1241.
Show quoted text
>>>>>
The problem stems from something that's being done with WARNING_BITS. This is a pruned version of the script that ScanDeps was using, and reproduces the problem:
Show quoted text>>>>>
#use Module::ScanDeps::DataFeed 'KaVvk9.out';
sub {
package AnyEvent;# basically a tuned-down version of common::sensesub common_sense {
# from common:.sense 3.4
${^WARNING_BITS} ^= ${^WARNING_BITS} ^ "\x3c\x3f\x33\x00\x0f\xf0\x0f\xc0\xf0\xfc\x33\x00";
# use strict vars subs - NO UTF-8, as Util.pm doesn't like this atm. (uts46data.pl)
$^H |= 0x00000600;
}
BEGIN { AnyEvent::common_sense }
use Carp ();
our $VERSION = '5.34';
our $MODEL;
our $AUTOLOAD;
our @ISA;
our @REGISTRY;
our $VERBOSE;
my @models = ( );
sub detect() {
@models;
}
}
<<<<<
Problem encountered with:
perl 5, version 14, subversion 1 (v5.14.1) built for i386-freebsd-64int
AnyEvent version 5.34
PAR 1.00.2
Changing the "my" to an "our" allows compilation to complete, as does eliminating the WARNING_BITS/^H modifications.
Cc'ing the AnyEvent bug list in case it makes more sense to address the problem from that side.
-Scott Hutton
Software Engineer, Cisco Systems, Inc.