Checking if your kit is complete... Looks good Writing Makefile for Devel::PPPort cp PPPort.pm blib/lib/Devel/PPPort.pm /home/cpanrun/build/5.6.1/bin/perl -Iblib/arch -Iblib/lib -I/home/cpanrun/build/5.6.1/lib/5.6.1/i686-linux-thread-multi -I/home/cpanrun/build/5.6.1/lib/5.6.1 PPPort_xs.PL RealPPPort.xs adding XS code from parts/inc/MY_CXT adding XS code from parts/inc/SvPV adding XS code from parts/inc/SvREFCNT adding XS code from parts/inc/Sv_set adding XS code from parts/inc/call adding XS code from parts/inc/cop adding XS code from parts/inc/exception adding XS code from parts/inc/grok adding XS code from parts/inc/limits adding XS code from parts/inc/mPUSH adding XS code from parts/inc/magic adding XS code from parts/inc/memory adding XS code from parts/inc/misc adding XS code from parts/inc/newCONSTSUB adding XS code from parts/inc/newRV adding XS code from parts/inc/pvs adding XS code from parts/inc/shared_pv adding XS code from parts/inc/snprintf adding XS code from parts/inc/strlfuncs adding XS code from parts/inc/sv_xpvf adding XS code from parts/inc/threads adding XS code from parts/inc/uv adding XS code from parts/inc/variables adding XS code from parts/inc/warn /home/cpanrun/build/5.6.1/bin/perl -I/home/cpanrun/build/5.6.1/lib/5.6.1/i686-linux-thread-multi -I/home/cpanrun/build/5.6.1/lib/5.6.1 /home/cpanrun/build/5.6.1/lib/5.6.1/ExtUtils/xsubpp -noprototypes -typemap /home/cpanrun/build/5.6.1/lib/5.6.1/ExtUtils/typemap -typemap typemap RealPPPort.xs > RealPPPort.xsc && mv RealPPPort.xsc RealPPPort.c /home/cpanrun/build/5.6.1/bin/perl -Iblib/arch -Iblib/lib -I/home/cpanrun/build/5.6.1/lib/5.6.1/i686-linux-thread-multi -I/home/cpanrun/build/5.6.1/lib/5.6.1 ppport_h.PL ppport.h gcc -c -DUSE_REENTRANT_API -D_GNU_SOURCE -D_REENTRANT -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"3.13\" -DXS_VERSION=\"3.13\" -fpic -I/home/cpanrun/build/5.6.1/lib/5.6.1/i686-linux-thread-multi/CORE RealPPPort.c gcc -c -DUSE_REENTRANT_API -D_GNU_SOURCE -D_REENTRANT -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"3.13\" -DXS_VERSION=\"3.13\" -fpic -I/home/cpanrun/build/5.6.1/lib/5.6.1/i686-linux-thread-multi/CORE module2.c gcc -c -DUSE_REENTRANT_API -D_GNU_SOURCE -D_REENTRANT -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"3.13\" -DXS_VERSION=\"3.13\" -fpic -I/home/cpanrun/build/5.6.1/lib/5.6.1/i686-linux-thread-multi/CORE module3.c Running Mkbootstrap for Devel::PPPort () chmod 644 PPPort.bs rm -f blib/arch/auto/Devel/PPPort/PPPort.so LD_RUN_PATH="" gcc -shared RealPPPort.o module2.o module3.o -o blib/arch/auto/Devel/PPPort/PPPort.so chmod 755 blib/arch/auto/Devel/PPPort/PPPort.so cp PPPort.bs blib/arch/auto/Devel/PPPort/PPPort.bs chmod 644 blib/arch/auto/Devel/PPPort/PPPort.bs Manifying blib/man3/Devel::PPPort.3 PERL_DL_NONLAZY=1 /home/cpanrun/build/5.6.1/bin/perl -Iblib/arch -Iblib/lib -I/home/cpanrun/build/5.6.1/lib/5.6.1/i686-linux-thread-multi -I/home/cpanrun/build/5.6.1/lib/5.6.1 -e 'use Test::Harness qw(&runtests $verbose); $verbose=1; runtests @ARGV;' t/*.t t/MY_CXT............1..3 ok 1 ok 2 ok 3 ok t/SvPV..............1..20 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok t/SvREFCNT..........1..14 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok t/Sv_set............1..5 ok 1 ok 2 ok 3 ok 4 ok 5 ok t/call..............1..46 # --- 0 args, G_SCALAR --- ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 # --- 3 args, G_SCALAR --- ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 # --- 0 args, G_ARRAY --- ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 # --- 3 args, G_ARRAY --- ok 22 ok 23 ok 24 ok 25 ok 26 ok 27 ok 28 # --- 0 args, G_DISCARD --- ok 29 ok 30 ok 31 ok 32 ok 33 ok 34 ok 35 # --- 3 args, G_DISCARD --- ok 36 ok 37 ok 38 ok 39 ok 40 ok 41 ok 42 ok 43 ok 44 ok 45 ok 46 ok t/cop...............1..2 # MyPackage ok 1 # t/cop.t ok 2 ok t/exception.........1..7 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok t/grok..............1..10 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok t/limits............1..4 ok 1 ok 2 ok 3 ok 4 ok t/mPUSH.............1..8 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok t/magic.............1..15 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok t/memory............1..1 ok 1 ok t/misc..............1..38 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 ok 27 ok 28 ok 29 ok 30 ok 31 ok 32 ok 33 ok 34 ok 35 ok 36 ok 37 ok 38 ok t/newCONSTSUB.......1..3 ok 1 ok 2 ok 3 ok t/newRV.............1..2 ok 1 ok 2 ok t/podtest...........1..6 # checking HACKERS ok 1 # skip: Test::Pod >= 0.95 required # checking PPPort.pm ok 2 # skip: Test::Pod >= 0.95 required # checking ppport.h ok 3 # skip: Test::Pod >= 0.95 required # checking soak ok 4 # skip: Test::Pod >= 0.95 required # checking devel/regenerate ok 5 # skip: Test::Pod >= 0.95 required # checking devel/buildperl.pl ok 6 # skip: Test::Pod >= 0.95 required ok, 6/6 skipped: Test::Pod >= 0.95 required t/ppphtest..........1..229 ok 1 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing test.xs *** # | Perl_newSViv(); # *** evaluating test code *** # | my $o = ppport(qw(--help)); # | ok($o =~ /^Usage:.*ppport\.h/m); # | ok($o =~ /--help/m); # | # | $o = ppport(qw(--version)); # | ok($o =~ /^This is.*ppport.*\d+\.\d+(?:_?\d+)?\.$/); # | # | $o = ppport(qw(--nochanges)); # | ok($o =~ /^Scanning.*test\.xs/mi); # | ok($o =~ /Analyzing.*test\.xs/mi); # | ok(matches($o, '^Scanning', 'm'), 1); # | ok(matches($o, 'Analyzing', 'm'), 1); # | ok($o =~ /Uses Perl_newSViv instead of newSViv/); # | # | $o = ppport(qw(--quiet --nochanges)); # | ok($o =~ /^\s*$/); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --help *** # | # | Usage: /home/cpanrun/build/5.6.1/bin/perl ppport.h [options] [source files] # | # | Searches current directory for files if no [source files] are given # | # | --help show short help # | # | --version show version # | # | --patch=file write one patch file with changes # | --copy=suffix write changed copies with suffix # | --diff=program use diff program and options # | # | --compat-version=version provide compatibility with Perl version # | --cplusplus accept C++ comments # | # | --quiet don't output anything except fatal errors # | --nodiag don't show diagnostics # | --nohints don't show hints # | --nochanges don't suggest changes # | --nofilter don't filter input files # | # | --strip strip all script and doc functionality from # | ppport.h # | # | --list-provided list provided API # | --list-unsupported list unsupported API # | --api-info=name show Perl API portability information # | # | See perldoc ppport.h for details. # | ok 2 ok 3 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --version *** # | This is ppport.h 3.13. ok 4 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges *** # | Scanning ./test.xs ... # | === Analyzing ./test.xs === # | *** Uses Perl_newSViv instead of newSViv # | Analysis completed # | 1 potentially required change detected ok 5 ok 6 ok 7 ok 8 ok 9 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --quiet --nochanges *** # | ok 10 ok 11 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing MyExt.xs *** # | newSVuv(); # | // newSVpv(); # | XPUSHs(foo); # | /* grok_bin(); */ # *** writing MyExt.ra *** # | #include "ppport.h" # | newSVuv(); # | /* newSVpv(); */ # | XPUSHs(foo); # | /* grok_bin(); */ # *** writing MyExt.rb *** # | #include "ppport.h" # | newSVuv(); # | // newSVpv(); # | XPUSHs(foo); # | /* grok_bin(); */ # *** evaluating test code *** # | # check if C and C++ comments are filtered correctly # | # | my $o = ppport(qw(--copy=a)); # | ok($o =~ /^Scanning.*MyExt\.xs/mi); # | ok($o =~ /Analyzing.*MyExt\.xs/mi); # | ok(matches($o, '^Scanning', 'm'), 1); # | ok($o =~ /^Needs to include.*ppport\.h/m); # | ok($o !~ /^Uses grok_bin/m); # | ok($o !~ /^Uses newSVpv/m); # | ok($o =~ /Uses 1 C\+\+ style comment/m); # | ok(eq_files('MyExt.xsa', 'MyExt.ra')); # | # | # check if C++ are left untouched with --cplusplus # | # | $o = ppport(qw(--copy=b --cplusplus)); # | ok($o =~ /^Scanning.*MyExt\.xs/mi); # | ok($o =~ /Analyzing.*MyExt\.xs/mi); # | ok(matches($o, '^Scanning', 'm'), 1); # | ok($o =~ /^Needs to include.*ppport\.h/m); # | ok($o !~ /^Uses grok_bin/m); # | ok($o !~ /^Uses newSVpv/m); # | ok($o !~ /Uses \d+ C\+\+ style comment/m); # | ok(eq_files('MyExt.xsb', 'MyExt.rb')); # | # | unlink qw(MyExt.xsa MyExt.xsb); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --copy=a *** # | Scanning ./MyExt.xs ... # | === Analyzing ./MyExt.xs === # | Uses newSVuv, which depends on newSViv, newSVnv # | Needs to include 'ppport.h' # | *** Uses 1 C++ style comment, which is not portable # | Analysis completed # | Writing copy of './MyExt.xs' with changes to './MyExt.xsa' ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 # File: MyExt.xsa # | #include "ppport.h" # | newSVuv(); # | /* newSVpv(); */ # | XPUSHs(foo); # | /* grok_bin(); */ # File: MyExt.ra # | #include "ppport.h" # | newSVuv(); # | /* newSVpv(); */ # | XPUSHs(foo); # | /* grok_bin(); */ ok 19 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --copy=b --cplusplus *** # | Scanning ./MyExt.xs ... # | === Analyzing ./MyExt.xs === # | Uses newSVuv, which depends on newSViv, newSVnv # | Needs to include 'ppport.h' # | Analysis completed # | Writing copy of './MyExt.xs' with changes to './MyExt.xsb' ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 # File: MyExt.xsb # | #include "ppport.h" # | newSVuv(); # | // newSVpv(); # | XPUSHs(foo); # | /* grok_bin(); */ # File: MyExt.rb # | #include "ppport.h" # | newSVuv(); # | // newSVpv(); # | XPUSHs(foo); # | /* grok_bin(); */ ok 27 ok 28 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing file1.xs *** # | #define NEED_newCONSTSUB # | #define NEED_sv_2pv_flags # | #include "ppport.h" # | # | newCONSTSUB(); # | SvPV_nolen(); # | PL_expect = 0; # *** writing file2.xs *** # | mXPUSHp(foo); # *** evaluating test code *** # | my $o = ppport(qw(--nochanges file1.xs)); # | ok($o =~ /^Scanning.*file1\.xs/mi); # | ok($o =~ /Analyzing.*file1\.xs/mi); # | ok($o !~ /^Scanning.*file2\.xs/mi); # | ok($o =~ /^Uses newCONSTSUB/m); # | ok($o =~ /^Uses SvPV_nolen.*depends.*sv_2pv_flags/m); # | ok($o =~ /WARNING: PL_expect/m); # | ok($o =~ /hint for newCONSTSUB/m); # | ok($o =~ /^Looks good/m); # | # | $o = ppport(qw(--nochanges --nohints file1.xs)); # | ok($o =~ /^Scanning.*file1\.xs/mi); # | ok($o =~ /Analyzing.*file1\.xs/mi); # | ok($o !~ /^Scanning.*file2\.xs/mi); # | ok($o =~ /^Uses newCONSTSUB/m); # | ok($o =~ /^Uses SvPV_nolen.*depends.*sv_2pv_flags/m); # | ok($o =~ /WARNING: PL_expect/m); # | ok($o !~ /hint for newCONSTSUB/m); # | ok($o =~ /^Looks good/m); # | # | $o = ppport(qw(--nochanges --nohints --nodiag file1.xs)); # | ok($o =~ /^Scanning.*file1\.xs/mi); # | ok($o =~ /Analyzing.*file1\.xs/mi); # | ok($o !~ /^Scanning.*file2\.xs/mi); # | ok($o !~ /^Uses newCONSTSUB/m); # | ok($o !~ /^Uses SvPV_nolen/m); # | ok($o =~ /WARNING: PL_expect/m); # | ok($o !~ /hint for newCONSTSUB/m); # | ok($o =~ /^Looks good/m); # | # | $o = ppport(qw(--nochanges --quiet file1.xs)); # | ok($o =~ /^\s*$/); # | # | $o = ppport(qw(--nochanges file2.xs)); # | ok($o =~ /^Scanning.*file2\.xs/mi); # | ok($o =~ /Analyzing.*file2\.xs/mi); # | ok($o !~ /^Scanning.*file1\.xs/mi); # | ok($o =~ /^Uses mXPUSHp/m); # | ok($o =~ /^Needs to include.*ppport\.h/m); # | ok($o !~ /^Looks good/m); # | ok($o =~ /^1 potentially required change detected/m); # | # | $o = ppport(qw(--nochanges --nohints file2.xs)); # | ok($o =~ /^Scanning.*file2\.xs/mi); # | ok($o =~ /Analyzing.*file2\.xs/mi); # | ok($o !~ /^Scanning.*file1\.xs/mi); # | ok($o =~ /^Uses mXPUSHp/m); # | ok($o =~ /^Needs to include.*ppport\.h/m); # | ok($o !~ /^Looks good/m); # | ok($o =~ /^1 potentially required change detected/m); # | # | $o = ppport(qw(--nochanges --nohints --nodiag file2.xs)); # | ok($o =~ /^Scanning.*file2\.xs/mi); # | ok($o =~ /Analyzing.*file2\.xs/mi); # | ok($o !~ /^Scanning.*file1\.xs/mi); # | ok($o !~ /^Uses mXPUSHp/m); # | ok($o !~ /^Needs to include.*ppport\.h/m); # | ok($o !~ /^Looks good/m); # | ok($o =~ /^1 potentially required change detected/m); # | # | $o = ppport(qw(--nochanges --quiet file2.xs)); # | ok($o =~ /^\s*$/); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges file1.xs *** # | Scanning file1.xs ... # | === Analyzing file1.xs === # | Uses PL_expect # | *** WARNING: PL_expect # | *** Do not use this variable. It is internal to the perl parser # | *** and may change or even be removed in the future. Note that # | *** as of perl 5.9.5 you cannot assign to this variable anymore. # | Uses SvPV_nolen, which depends on SV_GMAGIC, SvPVX, sv_2pv_flags, sv_2pv # | Uses newCONSTSUB, which depends on Nullch, PERL_BCDVERSION, PERL_REVISION, PERL_SUBVERSION, PERL_VERSION, PL_copline, PL_curcop, PL_curstash, PL_hints, PL_sv_no, newSTATEOP, newSUB, newSVOP, newSVpv, start_subparse # | --- hint for newCONSTSUB --- # | Returns a CV* as of perl-5.7.1. This return value is not supported # | by Devel::PPPort. # | Analysis completed (1 warning) # | Looks good ok 29 ok 30 ok 31 ok 32 ok 33 ok 34 ok 35 ok 36 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --nohints file1.xs *** # | Scanning file1.xs ... # | === Analyzing file1.xs === # | Uses PL_expect # | *** WARNING: PL_expect # | *** Do not use this variable. It is internal to the perl parser # | *** and may change or even be removed in the future. Note that # | *** as of perl 5.9.5 you cannot assign to this variable anymore. # | Uses SvPV_nolen, which depends on SV_GMAGIC, SvPVX, sv_2pv_flags, sv_2pv # | Uses newCONSTSUB, which depends on Nullch, PERL_BCDVERSION, PERL_REVISION, PERL_SUBVERSION, PERL_VERSION, PL_copline, PL_curcop, PL_curstash, PL_hints, PL_sv_no, newSTATEOP, newSUB, newSVOP, newSVpv, start_subparse # | Analysis completed (1 warning) # | Looks good ok 37 ok 38 ok 39 ok 40 ok 41 ok 42 ok 43 ok 44 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --nohints --nodiag file1.xs *** # | Scanning file1.xs ... # | === Analyzing file1.xs === # | *** WARNING: PL_expect # | *** Do not use this variable. It is internal to the perl parser # | *** and may change or even be removed in the future. Note that # | *** as of perl 5.9.5 you cannot assign to this variable anymore. # | Analysis completed (1 warning) # | Looks good ok 45 ok 46 ok 47 ok 48 ok 49 ok 50 ok 51 ok 52 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --quiet file1.xs *** # | ok 53 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges file2.xs *** # | Scanning file2.xs ... # | === Analyzing file2.xs === # | Uses mXPUSHp, which depends on EXTEND, PUSHmortal, PUSHs, sv_newmortal, STMT_END, STMT_START, sv_setpvn_mg, SvSETMAGIC, sv_setpvn # | Needs to include 'ppport.h' # | Analysis completed # | 1 potentially required change detected ok 54 ok 55 ok 56 ok 57 ok 58 ok 59 ok 60 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --nohints file2.xs *** # | Scanning file2.xs ... # | === Analyzing file2.xs === # | Uses mXPUSHp, which depends on EXTEND, PUSHmortal, PUSHs, sv_newmortal, STMT_END, STMT_START, sv_setpvn_mg, SvSETMAGIC, sv_setpvn # | Needs to include 'ppport.h' # | Analysis completed # | 1 potentially required change detected ok 61 ok 62 ok 63 ok 64 ok 65 ok 66 ok 67 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --nohints --nodiag file2.xs *** # | Scanning file2.xs ... # | === Analyzing file2.xs === # | Analysis completed # | 1 potentially required change detected ok 68 ok 69 ok 70 ok 71 ok 72 ok 73 ok 74 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --quiet file2.xs *** # | ok 75 ok 76 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing FooBar.xs *** # | newSViv(); # | XPUSHs(foo); # | grok_bin(); # *** evaluating test code *** # | my $o = ppport(qw(--nochanges)); # | ok($o =~ /^Scanning.*FooBar\.xs/mi); # | ok($o =~ /Analyzing.*FooBar\.xs/mi); # | ok(matches($o, '^Scanning', 'm'), 1); # | ok($o !~ /^Looks good/m); # | ok($o =~ /^Uses grok_bin/m); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges *** # | Scanning ./FooBar.xs ... # | === Analyzing ./FooBar.xs === # | Uses grok_bin, which depends on PERL_SCAN_ALLOW_UNDERSCORES, PERL_SCAN_DISALLOW_PREFIX, PERL_SCAN_GREATER_THAN_UV_MAX, PERL_SCAN_SILENT_ILLDIGIT, UVSIZE, IVSIZE, warn # | File needs grok_bin, adding static request # | Needs to include 'ppport.h' # | Analysis completed # | 1 potentially required change detected ok 77 ok 78 ok 79 ok 80 ok 81 ok 82 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing second.h *** # | three # *** writing First.xs *** # | one # *** writing sub/third.c *** # | four # *** writing foobar.xyz *** # | two # *** evaluating test code *** # | my $o = ppport(qw(--nochanges)); # | ok($o =~ /^Scanning.*First\.xs/mi); # | ok($o =~ /Analyzing.*First\.xs/mi); # | ok($o =~ /^Scanning.*second\.h/mi); # | ok($o =~ /Analyzing.*second\.h/mi); # | ok($o =~ /^Scanning.*sub.*third\.c/mi); # | ok($o =~ /Analyzing.*sub.*third\.c/mi); # | ok($o !~ /^Scanning.*foobar/mi); # | ok(matches($o, '^Scanning', 'm'), 3); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges *** # | Scanning ./second.h ... # | Scanning ./First.xs ... # | Scanning ./sub/third.c ... # | === Analyzing ./second.h === # | Analysis completed # | Looks good # | === Analyzing ./First.xs === # | Analysis completed # | Looks good # | === Analyzing ./sub/third.c === # | Analysis completed # | Looks good ok 83 ok 84 ok 85 ok 86 ok 87 ok 88 ok 89 ok 90 ok 91 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing test.xs *** # | #define NEED_foobar # *** evaluating test code *** # | my $o = ppport(qw(--nochanges)); # | ok($o =~ /Possibly wrong #define NEED_foobar in.*test.xs/i); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges *** # | Scanning ./test.xs ... # | *** Possibly wrong #define NEED_foobar in ./test.xs # | === Analyzing ./test.xs === # | Analysis completed # | Looks good ok 92 ok 93 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing mod3.c *** # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | grok_oct(); # | eval_pv(); # *** writing mod1.cr *** # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | #define NEED_grok_bin_GLOBAL # | #include "ppport.h" # | # | newCONSTSUB(); # | grok_bin(); # | { # | Perl_croak (aTHX_ "foo"); # | Perl_sv_catpvf(aTHX); /* I know it's wrong ;-) */ # | } # *** writing mod4.c *** # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | START_MY_CXT; # *** writing mod2.cr *** # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | # | newSViv(); # | # | /* # | eval_pv(); # | */ # *** writing mod5.c *** # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | #include "ppport.h" # | call_pv(); # *** writing main.xs *** # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | #define NEED_newCONSTSUB # | #define NEED_grok_hex_GLOBAL # | #include "ppport.h" # | # | newCONSTSUB(); # | grok_hex(); # | Perl_grok_bin(aTHX_ foo, bar); # | # | /* some comment */ # | # | perl_eval_pv(); # | grok_bin(); # | Perl_grok_bin(bar, sv_no); # *** writing mod3.cr *** # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | #define NEED_grok_oct # | #include "ppport.h" # | # | grok_oct(); # | eval_pv(); # *** writing mod1.c *** # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | #define NEED_grok_bin_GLOBAL # | #define NEED_newCONSTSUB # | #include "ppport.h" # | # | newCONSTSUB(); # | grok_bin(); # | { # | Perl_croak ("foo"); # | Perl_sv_catpvf(); /* I know it's wrong ;-) */ # | } # *** writing main.xsr *** # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | #define NEED_eval_pv_GLOBAL # | #define NEED_grok_hex # | #define NEED_newCONSTSUB_GLOBAL # | #include "ppport.h" # | # | newCONSTSUB(); # | grok_hex(); # | grok_bin(foo, bar); # | # | /* some comment */ # | # | eval_pv(); # | grok_bin(); # | grok_bin(bar, PL_sv_no); # *** writing mod4.cr *** # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | #include "ppport.h" # | # | START_MY_CXT; # *** writing mod2.c *** # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | #define NEED_eval_pv # | #include "ppport.h" # | # | newSViv(); # | # | /* # | eval_pv(); # | */ # *** evaluating test code *** # | # And now some complex "real-world" example # | # | my $o = ppport(qw(--copy=f)); # | for (qw(main.xs mod1.c mod2.c mod3.c mod4.c mod5.c)) { # | ok($o =~ /^Scanning.*\Q$_\E/mi); # | ok($o =~ /Analyzing.*\Q$_\E/i); # | } # | ok(matches($o, '^Scanning', 'm'), 6); # | # | ok(matches($o, '^Writing copy of', 'm'), 5); # | ok(!-e "mod5.cf"); # | # | for (qw(main.xs mod1.c mod2.c mod3.c mod4.c)) { # | ok($o =~ /^Writing copy of.*\Q$_\E.*with changes/mi); # | ok(-e "${_}f"); # | ok(eq_files("${_}f", "${_}r")); # | unlink "${_}f"; # | } # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --copy=f *** # | Scanning ./mod3.c ... # | Scanning ./mod4.c ... # | Scanning ./mod5.c ... # | Scanning ./main.xs ... # | Scanning ./mod1.c ... # | Scanning ./mod2.c ... # | === Analyzing ./mod3.c === # | Uses eval_pv, which depends on G_SCALAR, GvSV, POPs, PUSHMARK, PUTBACK, SPAGAIN, SvPVx, SvREFCNT_dec, SvTRUE, croak, dSP, eval_sv, newSVpv # | Uses grok_oct, which depends on PERL_SCAN_ALLOW_UNDERSCORES, PERL_SCAN_GREATER_THAN_UV_MAX, PERL_SCAN_SILENT_ILLDIGIT, UVSIZE, IVSIZE, warn # | File needs grok_oct, adding static request # | Needs to include 'ppport.h' # | Analysis completed # | Writing copy of './mod3.c' with changes to './mod3.cf' # | === Analyzing ./mod4.c === # | Uses START_MY_CXT # | Needs to include 'ppport.h' # | Analysis completed # | Writing copy of './mod4.c' with changes to './mod4.cf' # | === Analyzing ./mod5.c === # | Uses call_pv # | Analysis completed # | Looks good # | === Analyzing ./main.xs === # | *** Uses Perl_grok_bin instead of grok_bin # | *** Uses perl_eval_pv instead of eval_pv # | *** Uses sv_no instead of PL_sv_no # | Uses PL_sv_no # | Uses aTHX_ # | Uses eval_pv, which depends on G_SCALAR, GvSV, POPs, PUSHMARK, PUTBACK, SPAGAIN, SvPVx, SvREFCNT_dec, SvTRUE, croak, dSP, eval_sv, newSVpv # | Uses grok_bin, which depends on PERL_SCAN_ALLOW_UNDERSCORES, PERL_SCAN_DISALLOW_PREFIX, PERL_SCAN_GREATER_THAN_UV_MAX, PERL_SCAN_SILENT_ILLDIGIT, UVSIZE, IVSIZE, warn # | Uses grok_hex, which depends on PERL_SCAN_ALLOW_UNDERSCORES, PERL_SCAN_DISALLOW_PREFIX, PERL_SCAN_GREATER_THAN_UV_MAX, PERL_SCAN_SILENT_ILLDIGIT, PL_hexdigit, UVSIZE, IVSIZE, warn # | Uses newCONSTSUB, which depends on Nullch, PERL_BCDVERSION, PERL_REVISION, PERL_SUBVERSION, PERL_VERSION, PL_copline, PL_curcop, PL_curstash, PL_hints, PL_sv_no, newSTATEOP, newSUB, newSVOP, newSVpv, start_subparse # | --- hint for newCONSTSUB --- # | Returns a CV* as of perl-5.7.1. This return value is not supported # | by Devel::PPPort. # | No need to define NEED_newCONSTSUB when already needed globally # | No need to define NEED_grok_hex_GLOBAL when only used in this file # | Files [./mod3.c ./main.xs] need eval_pv, adding global request # | File needs grok_hex, adding static request # | Files [./main.xs ./mod1.c] need newCONSTSUB, adding global request # | Analysis completed # | Writing copy of './main.xs' with changes to './main.xsf' # | === Analyzing ./mod1.c === # | *** Doesn't pass interpreter argument aTHX to Perl_croak # | *** Doesn't pass interpreter argument aTHX to Perl_sv_catpvf # | Uses grok_bin, which depends on PERL_SCAN_ALLOW_UNDERSCORES, PERL_SCAN_DISALLOW_PREFIX, PERL_SCAN_GREATER_THAN_UV_MAX, PERL_SCAN_SILENT_ILLDIGIT, UVSIZE, IVSIZE, warn # | Uses newCONSTSUB, which depends on Nullch, PERL_BCDVERSION, PERL_REVISION, PERL_SUBVERSION, PERL_VERSION, PL_copline, PL_curcop, PL_curstash, PL_hints, PL_sv_no, newSTATEOP, newSUB, newSVOP, newSVpv, start_subparse # | No need to define NEED_newCONSTSUB when already needed globally # | Analysis completed # | Writing copy of './mod1.c' with changes to './mod1.cf' # | === Analyzing ./mod2.c === # | No need to define NEED_eval_pv if eval_pv is never used # | No need to include 'ppport.h' # | Analysis completed # | Writing copy of './mod2.c' with changes to './mod2.cf' ok 94 ok 95 ok 96 ok 97 ok 98 ok 99 ok 100 ok 101 ok 102 ok 103 ok 104 ok 105 ok 106 ok 107 ok 108 ok 109 ok 110 # File: main.xsf # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | #define NEED_eval_pv_GLOBAL # | #define NEED_grok_hex # | #define NEED_newCONSTSUB_GLOBAL # | #include "ppport.h" # | # | newCONSTSUB(); # | grok_hex(); # | grok_bin(foo, bar); # | # | /* some comment */ # | # | eval_pv(); # | grok_bin(); # | grok_bin(bar, PL_sv_no); # File: main.xsr # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | #define NEED_eval_pv_GLOBAL # | #define NEED_grok_hex # | #define NEED_newCONSTSUB_GLOBAL # | #include "ppport.h" # | # | newCONSTSUB(); # | grok_hex(); # | grok_bin(foo, bar); # | # | /* some comment */ # | # | eval_pv(); # | grok_bin(); # | grok_bin(bar, PL_sv_no); ok 111 ok 112 ok 113 # File: mod1.cf # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | #define NEED_grok_bin_GLOBAL # | #include "ppport.h" # | # | newCONSTSUB(); # | grok_bin(); # | { # | Perl_croak (aTHX_ "foo"); # | Perl_sv_catpvf(aTHX); /* I know it's wrong ;-) */ # | } # File: mod1.cr # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | #define NEED_grok_bin_GLOBAL # | #include "ppport.h" # | # | newCONSTSUB(); # | grok_bin(); # | { # | Perl_croak (aTHX_ "foo"); # | Perl_sv_catpvf(aTHX); /* I know it's wrong ;-) */ # | } ok 114 ok 115 ok 116 # File: mod2.cf # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | # | newSViv(); # | # | /* # | eval_pv(); # | */ # File: mod2.cr # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | # | # | newSViv(); # | # | /* # | eval_pv(); # | */ ok 117 ok 118 ok 119 # File: mod3.cf # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | #define NEED_grok_oct # | #include "ppport.h" # | # | grok_oct(); # | eval_pv(); # File: mod3.cr # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | #define NEED_grok_oct # | #include "ppport.h" # | # | grok_oct(); # | eval_pv(); ok 120 ok 121 ok 122 # File: mod4.cf # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | #include "ppport.h" # | # | START_MY_CXT; # File: mod4.cr # | #include "EXTERN.h" # | #include "perl.h" # | #include "XSUB.h" # | #include "ppport.h" # | # | START_MY_CXT; ok 123 ok 124 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing FooBar.xs *** # | grok_hex(); # *** evaluating test code *** # | my $o = ppport(qw(--nochanges)); # | ok($o =~ /Uses grok_hex/m); # | ok($o !~ /Looks good/m); # | # | $o = ppport(qw(--nochanges --compat-version=5.8.0)); # | ok($o !~ /Uses grok_hex/m); # | ok($o =~ /Looks good/m); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges *** # | Scanning ./FooBar.xs ... # | === Analyzing ./FooBar.xs === # | Uses grok_hex, which depends on PERL_SCAN_ALLOW_UNDERSCORES, PERL_SCAN_DISALLOW_PREFIX, PERL_SCAN_GREATER_THAN_UV_MAX, PERL_SCAN_SILENT_ILLDIGIT, PL_hexdigit, UVSIZE, IVSIZE, warn # | File needs grok_hex, adding static request # | Needs to include 'ppport.h' # | Analysis completed # | 1 potentially required change detected ok 125 ok 126 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --compat-version=5.8.0 *** # | Scanning ./FooBar.xs ... # | === Analyzing ./FooBar.xs === # | Analysis completed # | Looks good ok 127 ok 128 ok 129 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing FooBar.xs *** # | SvPVutf8_force(); # *** evaluating test code *** # | my $o = ppport(qw(--nochanges)); # | ok($o =~ /Uses SvPVutf8_force, which may not be portable/m); # | # | $o = ppport(qw(--nochanges --compat-version=5.5.3)); # | ok($o =~ /Uses SvPVutf8_force, which may not be portable/m); # | # | $o = ppport(qw(--nochanges --compat-version=5.005_03)); # | ok($o =~ /Uses SvPVutf8_force, which may not be portable/m); # | # | $o = ppport(qw(--nochanges --compat-version=5.6.0)); # | ok($o !~ /Uses SvPVutf8_force/m); # | # | $o = ppport(qw(--nochanges --compat-version=5.006)); # | ok($o !~ /Uses SvPVutf8_force/m); # | # | $o = ppport(qw(--nochanges --compat-version=5.999.999)); # | ok($o !~ /Uses SvPVutf8_force/m); # | # | $o = ppport(qw(--nochanges --compat-version=6.0.0)); # | ok($o =~ /Only Perl 5 is supported/m); # | # | $o = ppport(qw(--nochanges --compat-version=5.1000.999)); # | ok($o =~ /Invalid version number: 5.1000.999/m); # | # | $o = ppport(qw(--nochanges --compat-version=5.999.1000)); # | ok($o =~ /Invalid version number: 5.999.1000/m); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges *** # | Scanning ./FooBar.xs ... # | === Analyzing ./FooBar.xs === # | *** WARNING: Uses SvPVutf8_force, which may not be portable below perl 5.6.0, even with 'ppport.h' # | Analysis completed (1 warning) # | Looks good ok 130 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --compat-version=5.5.3 *** # | Scanning ./FooBar.xs ... # | === Analyzing ./FooBar.xs === # | *** WARNING: Uses SvPVutf8_force, which may not be portable below perl 5.6.0, even with 'ppport.h' # | Analysis completed (1 warning) # | Looks good ok 131 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --compat-version=5.005_03 *** # | Scanning ./FooBar.xs ... # | === Analyzing ./FooBar.xs === # | *** WARNING: Uses SvPVutf8_force, which may not be portable below perl 5.6.0, even with 'ppport.h' # | Analysis completed (1 warning) # | Looks good ok 132 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --compat-version=5.6.0 *** # | Scanning ./FooBar.xs ... # | === Analyzing ./FooBar.xs === # | Analysis completed # | Looks good ok 133 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --compat-version=5.006 *** # | Scanning ./FooBar.xs ... # | === Analyzing ./FooBar.xs === # | Analysis completed # | Looks good ok 134 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --compat-version=5.999.999 *** # | Scanning ./FooBar.xs ... # | === Analyzing ./FooBar.xs === # | Analysis completed # | Looks good ok 135 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --compat-version=6.0.0 *** # | Only Perl 5 is supported ok 136 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --compat-version=5.1000.999 *** # | Invalid version number: 5.1000.999 ok 137 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --compat-version=5.999.1000 *** # | Invalid version number: 5.999.1000 ok 138 ok 139 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing foo.c *** # | #include "ppport.h" # | # | call_pv(); # *** writing FooBar.xs *** # | #define NEED_grok_numeric_radix # | #define NEED_grok_number # | #include "ppport.h" # | # | GROK_NUMERIC_RADIX(); # | grok_number(); # *** evaluating test code *** # | my $o = ppport(qw(--nochanges)); # | ok($o !~ /potentially required change/); # | ok(matches($o, '^Looks good', 'm'), 2); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges *** # | Scanning ./foo.c ... # | Scanning ./FooBar.xs ... # | === Analyzing ./foo.c === # | Uses call_pv # | Analysis completed # | Looks good # | === Analyzing ./FooBar.xs === # | Uses GROK_NUMERIC_RADIX, which depends on grok_numeric_radix, IN_LOCALE, IN_LOCALE_COMPILETIME, PL_hints, IN_LOCALE_RUNTIME, PL_curcop, IN_PERL_COMPILETIME, PL_compiling, SvPV, dTHR, dNOOP, PERL_UNUSED_DECL, memEQ # | Uses grok_number, which depends on GROK_NUMERIC_RADIX, grok_numeric_radix, IN_LOCALE, IN_LOCALE_COMPILETIME, PL_hints, IN_LOCALE_RUNTIME, PL_curcop, IN_PERL_COMPILETIME, PL_compiling, SvPV, dTHR, dNOOP, PERL_UNUSED_DECL, memEQ, IS_NUMBER_GREATER_THAN_UV_MAX, IS_NUMBER_INFINITY, IS_NUMBER_IN_UV, IS_NUMBER_NAN, IS_NUMBER_NEG, IS_NUMBER_NOT_INT, isDIGIT, isSPACE # | Analysis completed # | Looks good ok 140 ok 141 ok 142 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** evaluating test code *** # | # check --api-info option # | # | my $o = ppport(qw(--api-info=INT2PTR)); # | my %found = map {($_ => 1)} $o =~ /^===\s+(\w+)\s+===/mg; # | ok(scalar keys %found, 1); # | ok(exists $found{INT2PTR}); # | ok(matches($o, '^Supported at least starting from perl-5\.6\.0\.', 'm'), 1); # | ok(matches($o, '^Support by .*ppport.* provided back to perl-5\.003\.', 'm'), 1); # | # | $o = ppport(qw(--api-info=Zero)); # | %found = map {($_ => 1)} $o =~ /^===\s+(\w+)\s+===/mg; # | ok(scalar keys %found, 1); # | ok(exists $found{Zero}); # | ok(matches($o, '^No portability information available\.', 'm'), 1); # | # | $o = ppport(qw(--api-info=/Zero/)); # | %found = map {($_ => 1)} $o =~ /^===\s+(\w+)\s+===/mg; # | ok(scalar keys %found, 2); # | ok(exists $found{Zero}); # | ok(exists $found{ZeroD}); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --api-info=INT2PTR *** # | # | === INT2PTR === # | # | Supported at least starting from perl-5.6.0. # | Support by ppport.h provided back to perl-5.003. # | Depends on: PTRV. # | ok 143 ok 144 ok 145 ok 146 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --api-info=Zero *** # | # | === Zero === # | # | No portability information available. # | ok 147 ok 148 ok 149 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --api-info=/Zero/ *** # | # | === Zero === # | # | No portability information available. # | # | === ZeroD === # | # | Supported at least starting from perl-5.9.2. # | Support by ppport.h provided back to perl-5.003. # | ok 150 ok 151 ok 152 ok 153 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** evaluating test code *** # | # check --list-provided option # | # | my @o = ppport(qw(--list-provided)); # | my %p; # | my $fail = 0; # | for (@o) { # | my($name, $flags) = /^(\w+)(?:\s+\[(\w+(?:,\s+\w+)*)\])?$/ or $fail++; # | exists $p{$name} and $fail++; # | $p{$name} = defined $flags ? { map { ($_ => 1) } $flags =~ /(\w+)/g } : ''; # | } # | ok(@o > 100); # | ok($fail, 0); # | # | ok(exists $p{call_sv}); # | ok(not ref $p{call_sv}); # | # | ok(exists $p{grok_bin}); # | ok(ref $p{grok_bin}, 'HASH'); # | ok(scalar keys %{$p{grok_bin}}, 2); # | ok($p{grok_bin}{explicit}); # | ok($p{grok_bin}{depend}); # | # | ok(exists $p{gv_stashpvn}); # | ok(ref $p{gv_stashpvn}, 'HASH'); # | ok(scalar keys %{$p{gv_stashpvn}}, 2); # | ok($p{gv_stashpvn}{depend}); # | ok($p{gv_stashpvn}{hint}); # | # | ok(exists $p{sv_catpvf_mg}); # | ok(ref $p{sv_catpvf_mg}, 'HASH'); # | ok(scalar keys %{$p{sv_catpvf_mg}}, 2); # | ok($p{sv_catpvf_mg}{explicit}); # | ok($p{sv_catpvf_mg}{depend}); # | # | ok(exists $p{PL_signals}); # | ok(ref $p{PL_signals}, 'HASH'); # | ok(scalar keys %{$p{PL_signals}}, 1); # | ok($p{PL_signals}{explicit}); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --list-provided *** # | _aMY_CXT [depend] # | _pMY_CXT [depend] # | aMY_CXT # | aMY_CXT_ [depend] # | aTHX # | aTHX_ # | aTHXR [depend] # | aTHXR_ [depend] # | AvFILLp [depend] # | boolSV [depend] # | call_argv # | call_method # | call_pv # | call_sv # | ckWARN [depend] # | CopFILE [depend] # | CopFILE_set [depend] # | CopFILEAV [depend] # | CopFILEGV [depend] # | CopFILEGV_set [depend] # | CopFILESV [depend] # | CopSTASH [depend] # | CopSTASH_eq [depend] # | CopSTASH_set [depend] # | CopSTASHPV [depend] # | CopSTASHPV_set [depend] # | CopyD # | dAX [depend] # | dAXMARK [depend] # | DEFSV [depend] # | dITEMS [depend] # | dMY_CXT [depend] # | dMY_CXT_SV [depend] # | dNOOP [depend] # | dTHR [depend] # | dTHX [depend] # | dTHXa [depend] # | dTHXoa [depend] # | dTHXR [depend] # | dUNDERBAR [depend] # | dVAR [depend] # | dXCPT # | dXSTARG [depend] # | END_EXTERN_C # | ERRSV [depend] # | eval_pv [explicit, depend] # | eval_sv # | EXTERN_C # | get_av # | get_cv # | get_hv # | get_sv # | grok_bin [explicit, depend] # | grok_hex [explicit, depend] # | grok_number [explicit, depend] # | grok_numeric_radix [explicit, depend] # | GROK_NUMERIC_RADIX [depend] # | grok_oct [explicit, depend] # | gv_stashpvn [depend, hint] # | hv_fetchs [depend] # | hv_stores [depend] # | IN_LOCALE [depend] # | IN_LOCALE_COMPILETIME [depend] # | IN_LOCALE_RUNTIME [depend] # | IN_PERL_COMPILETIME [depend] # | INT2PTR [depend] # | IS_NUMBER_GREATER_THAN_UV_MAX # | IS_NUMBER_IN_UV # | IS_NUMBER_INFINITY # | IS_NUMBER_NAN # | IS_NUMBER_NEG # | IS_NUMBER_NOT_INT # | IVdf # | IVSIZE # | IVTYPE # | load_module [explicit, depend] # | memEQ # | memNE # | MoveD # | mPUSHi [depend] # | mPUSHn [depend] # | mPUSHp [depend] # | mPUSHu [depend] # | mXPUSHi [depend] # | mXPUSHn [depend] # | mXPUSHp [depend] # | mXPUSHu [depend] # | MY_CXT # | MY_CXT_CLONE [depend] # | MY_CXT_INIT [depend] # | my_snprintf [explicit, depend] # | my_strlcat [explicit] # | my_strlcpy [explicit] # | newCONSTSUB [explicit, depend, hint] # | newRV_inc [depend] # | newRV_noinc [explicit, depend] # | newSVpvn [depend] # | newSVpvn_share [explicit, depend] # | newSVpvs [depend] # | newSVuv [depend] # | Newx # | Newxc # | Newxz # | NOOP # | NUM2PTR [depend] # | NVef # | NVff # | NVgf # | NVTYPE # | packWARN # | PERL_ABS # | PERL_BCDVERSION [depend] # | PERL_GCC_BRACE_GROUPS_FORBIDDEN # | PERL_HASH [depend] # | PERL_INT_MAX [depend] # | PERL_INT_MIN [depend] # | PERL_LONG_MAX [depend] # | PERL_LONG_MIN [depend] # | PERL_MAGIC_arylen # | PERL_MAGIC_backref # | PERL_MAGIC_bm # | PERL_MAGIC_collxfrm # | PERL_MAGIC_dbfile # | PERL_MAGIC_dbline # | PERL_MAGIC_defelem # | PERL_MAGIC_env # | PERL_MAGIC_envelem # | PERL_MAGIC_ext # | PERL_MAGIC_fm # | PERL_MAGIC_glob # | PERL_MAGIC_isa # | PERL_MAGIC_isaelem # | PERL_MAGIC_mutex # | PERL_MAGIC_nkeys # | PERL_MAGIC_overload # | PERL_MAGIC_overload_elem # | PERL_MAGIC_overload_table # | PERL_MAGIC_pos # | PERL_MAGIC_qr # | PERL_MAGIC_regdata # | PERL_MAGIC_regdatum # | PERL_MAGIC_regex_global # | PERL_MAGIC_shared # | PERL_MAGIC_shared_scalar # | PERL_MAGIC_sig # | PERL_MAGIC_sigelem # | PERL_MAGIC_substr # | PERL_MAGIC_sv # | PERL_MAGIC_taint # | PERL_MAGIC_tied # | PERL_MAGIC_tiedelem # | PERL_MAGIC_tiedscalar # | PERL_MAGIC_utf8 # | PERL_MAGIC_uvar # | PERL_MAGIC_uvar_elem # | PERL_MAGIC_vec # | PERL_MAGIC_vstring # | PERL_QUAD_MAX [depend] # | PERL_QUAD_MIN [depend] # | PERL_REVISION # | PERL_SCAN_ALLOW_UNDERSCORES # | PERL_SCAN_DISALLOW_PREFIX # | PERL_SCAN_GREATER_THAN_UV_MAX # | PERL_SCAN_SILENT_ILLDIGIT # | PERL_SHORT_MAX [depend] # | PERL_SHORT_MIN [depend] # | PERL_SIGNALS_UNSAFE_FLAG # | PERL_SUBVERSION # | PERL_UCHAR_MAX # | PERL_UCHAR_MIN # | PERL_UINT_MAX # | PERL_UINT_MIN # | PERL_ULONG_MAX # | PERL_ULONG_MIN # | PERL_UNUSED_ARG # | PERL_UNUSED_CONTEXT [depend] # | PERL_UNUSED_DECL # | PERL_UNUSED_VAR # | PERL_UQUAD_MAX # | PERL_UQUAD_MIN # | PERL_USE_GCC_BRACE_GROUPS # | PERL_USHORT_MAX # | PERL_USHORT_MIN # | PERL_VERSION # | PL_compiling # | PL_copline [warning] # | PL_curcop # | PL_curstash # | PL_DBsignal # | PL_DBsingle # | PL_DBsub # | PL_DBtrace # | PL_debstash # | PL_defgv # | PL_diehook # | PL_dirty # | PL_dowarn # | PL_errgv # | PL_expect [warning] # | PL_hexdigit # | PL_hints # | PL_laststatval # | PL_na # | PL_no_modify # | PL_perl_destruct_level # | PL_perldb # | PL_ppaddr [hint] # | PL_rsfp [warning] # | PL_rsfp_filters [warning] # | PL_signals [explicit] # | PL_stack_base # | PL_stack_sp # | PL_statcache # | PL_stdingv # | PL_Sv # | PL_sv_arenaroot # | PL_sv_no # | PL_sv_undef # | PL_sv_yes # | PL_tainted # | PL_tainting # | pMY_CXT # | pMY_CXT_ [depend] # | Poison [depend] # | PoisonFree [depend] # | PoisonNew [depend] # | PoisonWith # | pTHX # | pTHX_ # | PTR2IV [depend] # | PTR2NV [depend] # | PTR2ul [depend] # | PTR2UV [depend] # | PTRV # | PUSHmortal [depend] # | PUSHu [depend] # | SAVE_DEFSV [depend] # | START_EXTERN_C # | START_MY_CXT # | STMT_END # | STMT_START # | STR_WITH_LEN # | sv_2pv_flags [explicit, depend] # | sv_2pv_nolen [depend, hint] # | sv_2pvbyte [explicit, depend, hint] # | sv_2pvbyte_nolen [depend] # | sv_2uv [depend] # | sv_catpv_mg [depend] # | sv_catpvf_mg [explicit, depend] # | sv_catpvf_mg_nocontext [explicit, depend] # | sv_catpvn_mg [depend] # | sv_catpvn_nomg [depend] # | sv_catpvs [depend] # | sv_catsv_mg [depend] # | sv_catsv_nomg [depend] # | SV_CONST_RETURN # | SV_COW_DROP_PV # | SV_COW_SHARED_HASH_KEYS # | SV_GMAGIC # | SV_HAS_TRAILING_NUL # | SV_IMMEDIATE_UNREF # | sv_magic_portable [depend, hint] # | SV_MUTABLE_RETURN # | SV_NOSTEAL # | sv_pvn_force_flags [explicit, depend] # | sv_pvn_nomg [depend] # | sv_setiv_mg [depend] # | sv_setnv_mg [depend] # | sv_setpv_mg [depend] # | sv_setpvf_mg [explicit, depend] # | sv_setpvf_mg_nocontext [explicit, depend] # | sv_setpvn_mg [depend] # | sv_setpvs [depend] # | sv_setsv_mg [depend] # | sv_setsv_nomg [depend] # | sv_setuv [depend] # | sv_setuv_mg [depend] # | SV_SMAGIC # | sv_usepvn_mg [depend] # | SV_UTF8_NO_ENCODING # | sv_uv [depend, hint] # | sv_vcatpvf [depend] # | sv_vcatpvf_mg [depend] # | sv_vsetpvf [depend] # | sv_vsetpvf_mg [depend] # | SVf # | SvGETMAGIC [depend] # | SvIV_nomg [depend] # | SvMAGIC_set [depend] # | SvPV_const [depend] # | SvPV_flags [depend] # | SvPV_flags_const [depend] # | SvPV_flags_const_nolen [depend] # | SvPV_flags_mutable [depend] # | SvPV_force [depend] # | SvPV_force_flags [depend] # | SvPV_force_flags_mutable [depend] # | SvPV_force_flags_nolen [depend] # | SvPV_force_mutable [depend] # | SvPV_force_nolen [depend] # | SvPV_force_nomg [depend] # | SvPV_force_nomg_nolen [depend] # | SvPV_mutable [depend] # | SvPV_nolen [depend] # | SvPV_nolen_const [depend] # | SvPV_nomg [depend] # | SvPV_nomg_const [depend] # | SvPV_nomg_const_nolen [depend] # | SvPVbyte [depend, hint] # | SvPVX_const [depend] # | SvPVX_mutable [depend] # | SvREFCNT_inc [depend] # | SvREFCNT_inc_NN [depend] # | SvREFCNT_inc_simple [depend] # | SvREFCNT_inc_simple_NN [depend] # | SvREFCNT_inc_simple_void [depend] # | SvREFCNT_inc_simple_void_NN [depend] # | SvREFCNT_inc_void [depend] # | SvREFCNT_inc_void_NN [depend] # | SvRV_set [depend] # | SvSHARED_HASH [depend] # | SvSTASH_set [depend] # | SvUOK [depend] # | SvUV [depend] # | SvUV_nomg [depend] # | SvUV_set [depend] # | SvUVX [depend] # | SvUVx [depend] # | SvUVXx [depend] # | SvVSTRING_mg [depend] # | UNDERBAR [depend] # | UTF8_MAXBYTES # | UVof # | UVSIZE [depend] # | UVTYPE [depend] # | UVuf # | UVXf # | UVxf # | vload_module [explicit, depend] # | vnewSVpvf [explicit, depend] # | WARN_ALL # | WARN_AMBIGUOUS # | WARN_ASSERTIONS # | WARN_BAREWORD # | WARN_CLOSED # | WARN_CLOSURE # | WARN_DEBUGGING # | WARN_DEPRECATED # | WARN_DIGIT # | WARN_EXEC # | WARN_EXITING # | WARN_GLOB # | WARN_INPLACE # | WARN_INTERNAL # | WARN_IO # | WARN_LAYER # | WARN_MALLOC # | WARN_MISC # | WARN_NEWLINE # | WARN_NUMERIC # | WARN_ONCE # | WARN_OVERFLOW # | WARN_PACK # | WARN_PARENTHESIS # | WARN_PIPE # | WARN_PORTABLE # | WARN_PRECEDENCE # | WARN_PRINTF # | WARN_PROTOTYPE # | WARN_QW # | WARN_RECURSION # | WARN_REDEFINE # | WARN_REGEXP # | WARN_RESERVED # | WARN_SEMICOLON # | WARN_SEVERE # | WARN_SIGNAL # | WARN_SUBSTR # | WARN_SYNTAX # | WARN_TAINT # | WARN_THREADS # | WARN_UNINITIALIZED # | WARN_UNOPENED # | WARN_UNPACK # | WARN_UNTIE # | WARN_UTF8 # | WARN_VOID # | warner [explicit, depend] # | XCPT_CATCH # | XCPT_RETHROW # | XCPT_TRY_END [depend] # | XCPT_TRY_START [depend] # | XPUSHmortal [depend] # | XPUSHu [depend] # | XSprePUSH [depend] # | XSRETURN [depend] # | XSRETURN_UV [depend] # | XST_mUV [depend] # | ZeroD ok 154 ok 155 ok 156 ok 157 ok 158 ok 159 ok 160 ok 161 ok 162 ok 163 ok 164 ok 165 ok 166 ok 167 ok 168 ok 169 ok 170 ok 171 ok 172 ok 173 ok 174 ok 175 ok 176 ok 177 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** evaluating test code *** # | # check --list-unsupported option # | # | my @o = ppport(qw(--list-unsupported)); # | my %p; # | my $fail = 0; # | for (@o) { # | my($name, $ver) = /^(\w+)\s*\.+\s*([\d._]+)$/ or $fail++; # | exists $p{$name} and $fail++; # | $p{$name} = $ver; # | } # | ok(@o > 100); # | ok($fail, 0); # | # | ok(exists $p{utf8_distance}); # | ok($p{utf8_distance}, '5.6.0'); # | # | ok(exists $p{save_generic_svref}); # | ok($p{save_generic_svref}, '5.005_03'); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --list-unsupported *** # | apply_attrs_string ...................... 5.6.1 # | atfork_lock ............................. 5.7.3 # | atfork_unlock ........................... 5.7.3 # | av_arylen_p ............................. 5.9.3 # | av_create_and_push ...................... 5.9.5 # | av_create_and_unshift_one ............... 5.9.5 # | av_delete ............................... 5.6.0 # | av_exists ............................... 5.6.0 # | block_gimme ............................. 5.004 # | bytes_from_utf8 ......................... 5.7.1 # | bytes_to_utf8 ........................... 5.6.1 # | call_atexit ............................. 5.6.0 # | call_list ............................... 5.004 # | calloc .................................. 5.7.2 # | cast_i32 ................................ 5.6.0 # | cast_iv ................................. 5.6.0 # | cast_ulong .............................. 5.6.0 # | cast_uv ................................. 5.6.0 # | ckwarn .................................. 5.9.3 # | ckwarn_d ................................ 5.9.3 # | csighandler ............................. 5.9.3 # | custom_op_desc .......................... 5.7.3 # | custom_op_name .......................... 5.7.3 # | cv_const_sv ............................. 5.004 # | cx_dump ................................. 5.005 # | deb ..................................... 5.7.3 # | debop ................................... 5.005 # | debprofdump ............................. 5.005 # | debstack ................................ 5.7.3 # | debstackptrs ............................ 5.7.3 # | delimcpy ................................ 5.004 # | despatch_signals ........................ 5.7.1 # | dMULTICALL .............................. 5.9.3 # | do_binmode .............................. 5.004_05 # | do_gv_dump .............................. 5.6.0 # | do_gvgv_dump ............................ 5.6.0 # | do_hv_dump .............................. 5.6.0 # | do_magic_dump ........................... 5.6.0 # | do_op_dump .............................. 5.6.0 # | do_open ................................. 5.004 # | do_open9 ................................ 5.6.0 # | do_openn ................................ 5.7.1 # | do_pmop_dump ............................ 5.6.0 # | do_sv_dump .............................. 5.6.0 # | doing_taint ............................. 5.8.1 # | doref ................................... 5.9.3 # | dump_all ................................ 5.6.0 # | dump_eval ............................... 5.6.0 # | dump_form ............................... 5.6.0 # | dump_indent ............................. 5.6.0 # | dump_packsubs ........................... 5.6.0 # | dump_sub ................................ 5.6.0 # | dump_vindent ............................ 5.6.0 # | fbm_compile ............................. 5.005 # | fbm_instr ............................... 5.005 # | find_runcv .............................. 5.8.1 # | find_rundefsvoffset ..................... 5.9.2 # | form .................................... 5.004 # | G_VOID .................................. 5.004 # | get_context ............................. 5.6.0 # | get_cvn_flags ........................... 5.9.5 # | get_op_descs ............................ 5.005 # | get_op_names ............................ 5.005 # | get_ppaddr .............................. 5.6.0 # | get_vtbl ................................ 5.005_03 # | getcwd_sv ............................... 5.7.2 # | GIMME_V ................................. 5.004 # | gv_autoload4 ............................ 5.004 # | gv_const_sv ............................. 5.9.3 # | gv_dump ................................. 5.6.0 # | gv_efullname3 ........................... 5.004 # | gv_efullname4 ........................... 5.6.1 # | gv_fetchfile_flags ...................... 5.9.5 # | gv_fetchmeth_autoload ................... 5.7.3 # | gv_fetchmethod_autoload ................. 5.004 # | gv_fetchpvn_flags ....................... 5.9.2 # | gv_fetchsv .............................. 5.9.2 # | gv_fullname3 ............................ 5.004 # | gv_fullname4 ............................ 5.6.1 # | gv_handler .............................. 5.7.1 # | gv_name_set ............................. 5.9.4 # | gv_stashpvs ............................. 5.9.3 # | HEf_SVKEY ............................... 5.004 # | HeHASH .................................. 5.004 # | HeKEY ................................... 5.004 # | HeKLEN .................................. 5.004 # | HePV .................................... 5.004 # | HeSVKEY ................................. 5.004 # | HeSVKEY_force ........................... 5.004 # | HeSVKEY_set ............................. 5.004 # | HeVAL ................................... 5.004 # | hv_assert ............................... 5.9.5 # | hv_clear_placeholders ................... 5.9.1 # | hv_delayfree_ent ........................ 5.004 # | hv_delete_ent ........................... 5.004 # | hv_eiter_p .............................. 5.9.3 # | hv_eiter_set ............................ 5.9.3 # | hv_exists_ent ........................... 5.004 # | hv_fetch_ent ............................ 5.004 # | hv_free_ent ............................. 5.004 # | hv_iterkeysv ............................ 5.004 # | hv_iternext_flags ....................... 5.8.0 # | hv_ksplit ............................... 5.004 # | hv_name_set ............................. 5.9.3 # | hv_placeholders_get ..................... 5.9.3 # | hv_placeholders_p ....................... 5.9.3 # | hv_placeholders_set ..................... 5.9.3 # | hv_riter_p .............................. 5.9.3 # | hv_riter_set ............................ 5.9.3 # | hv_scalar ............................... 5.9.1 # | hv_store_ent ............................ 5.004 # | hv_store_flags .......................... 5.8.0 # | ibcmp_locale ............................ 5.004 # | ibcmp_utf8 .............................. 5.7.3 # | init_i18nl10n ........................... 5.6.0 # | init_i18nl14n ........................... 5.6.0 # | init_stacks ............................. 5.005 # | init_tm ................................. 5.7.2 # | is_lvalue_sub ........................... 5.7.1 # | is_uni_alnum ............................ 5.6.0 # | is_uni_alnum_lc ......................... 5.6.0 # | is_uni_alnumc ........................... 5.6.0 # | is_uni_alnumc_lc ........................ 5.6.0 # | is_uni_alpha ............................ 5.6.0 # | is_uni_alpha_lc ......................... 5.6.0 # | is_uni_ascii ............................ 5.6.0 # | is_uni_ascii_lc ......................... 5.6.0 # | is_uni_cntrl ............................ 5.6.0 # | is_uni_cntrl_lc ......................... 5.6.0 # | is_uni_digit ............................ 5.6.0 # | is_uni_digit_lc ......................... 5.6.0 # | is_uni_graph ............................ 5.6.0 # | is_uni_graph_lc ......................... 5.6.0 # | is_uni_idfirst .......................... 5.6.0 # | is_uni_idfirst_lc ....................... 5.6.0 # | is_uni_lower ............................ 5.6.0 # | is_uni_lower_lc ......................... 5.6.0 # | is_uni_print ............................ 5.6.0 # | is_uni_print_lc ......................... 5.6.0 # | is_uni_punct ............................ 5.6.0 # | is_uni_punct_lc ......................... 5.6.0 # | is_uni_space ............................ 5.6.0 # | is_uni_space_lc ......................... 5.6.0 # | is_uni_upper ............................ 5.6.0 # | is_uni_upper_lc ......................... 5.6.0 # | is_uni_xdigit ........................... 5.6.0 # | is_uni_xdigit_lc ........................ 5.6.0 # | is_utf8_alnum ........................... 5.6.0 # | is_utf8_alnumc .......................... 5.6.0 # | is_utf8_alpha ........................... 5.6.0 # | is_utf8_ascii ........................... 5.6.0 # | is_utf8_char ............................ 5.6.0 # | is_utf8_cntrl ........................... 5.6.0 # | is_utf8_digit ........................... 5.6.0 # | is_utf8_graph ........................... 5.6.0 # | is_utf8_idcont .......................... 5.8.0 # | is_utf8_idfirst ......................... 5.6.0 # | is_utf8_lower ........................... 5.6.0 # | is_utf8_mark ............................ 5.6.0 # | is_utf8_print ........................... 5.6.0 # | is_utf8_punct ........................... 5.6.0 # | is_utf8_space ........................... 5.6.0 # | is_utf8_string .......................... 5.6.1 # | is_utf8_string_loc ...................... 5.8.1 # | is_utf8_string_loclen ................... 5.9.3 # | is_utf8_upper ........................... 5.6.0 # | is_utf8_xdigit .......................... 5.6.0 # | magic_dump .............................. 5.6.0 # | malloc .................................. 5.7.2 # | mess .................................... 5.6.0 # | mfree ................................... 5.7.2 # | mg_length ............................... 5.005 # | mg_size ................................. 5.005 # | mini_mktime ............................. 5.7.2 # | mro_get_linear_isa ...................... 5.9.5 # | mro_get_linear_isa_c3 ................... 5.9.5 # | mro_get_linear_isa_dfs .................. 5.9.5 # | mro_method_changed_in ................... 5.9.5 # | MULTICALL ............................... 5.9.5 # | my_atof ................................. 5.6.0 # | my_atof2 ................................ 5.7.2 # | my_dirfd ................................ 5.9.5 # | my_failure_exit ......................... 5.004 # | my_fflush_all ........................... 5.6.0 # | my_fork ................................. 5.7.3 # | my_memcmp ............................... 5.004 # | my_pclose ............................... 5.004 # | my_popen ................................ 5.004 # | my_popen_list ........................... 5.7.1 # | my_socketpair ........................... 5.7.3 # | my_sprintf .............................. 5.9.3 # | my_strftime ............................. 5.7.2 # | my_vsnprintf ............................ 5.9.4 # | new_collate ............................. 5.6.0 # | new_ctype ............................... 5.6.0 # | new_numeric ............................. 5.6.0 # | new_stackinfo ........................... 5.005 # | new_version ............................. 5.9.0 # | newANONATTRSUB .......................... 5.6.0 # | newATTRSUB .............................. 5.6.0 # | newGIVENOP .............................. 5.9.3 # | newHVhv ................................. 5.005 # | newSV_type .............................. 5.9.5 # | newSVhek ................................ 5.9.3 # | newSVpvf ................................ 5.004 # | newSVpvs_share .......................... 5.9.3 # | newWHENOP ............................... 5.9.3 # | newWHILEOP .............................. 5.9.3 # | newXS ................................... 5.6.0 # | newXS_flags ............................. 5.9.4 # | newXSproto .............................. 5.6.0 # | nothreadhook ............................ 5.8.0 # | op_dump ................................. 5.6.0 # | op_null ................................. 5.7.2 # | op_refcnt_lock .......................... 5.9.2 # | op_refcnt_unlock ........................ 5.9.2 # | pack_cat ................................ 5.7.3 # | packlist ................................ 5.8.1 # | pad_sv .................................. 5.9.5 # | perl_destruct ........................... 5.7.3 # | perl_parse .............................. 5.6.0 # | Perl_signbit ............................ 5.9.5 # | PerlIO_clearerr ......................... 5.7.3 # | PerlIO_close ............................ 5.7.3 # | PerlIO_context_layers ................... 5.9.4 # | PerlIO_eof .............................. 5.7.3 # | PerlIO_error ............................ 5.7.3 # | PerlIO_fileno ........................... 5.7.3 # | PerlIO_fill ............................. 5.7.3 # | PerlIO_flush ............................ 5.7.3 # | PerlIO_get_base ......................... 5.7.3 # | PerlIO_get_bufsiz ....................... 5.7.3 # | PerlIO_get_cnt .......................... 5.7.3 # | PerlIO_get_ptr .......................... 5.7.3 # | PerlIO_read ............................. 5.7.3 # | PerlIO_seek ............................. 5.7.3 # | PerlIO_set_cnt .......................... 5.7.3 # | PerlIO_set_ptrcnt ....................... 5.7.3 # | PerlIO_setlinebuf ....................... 5.7.3 # | PerlIO_stderr ........................... 5.7.3 # | PerlIO_stdin ............................ 5.7.3 # | PerlIO_stdout ........................... 5.7.3 # | PerlIO_tell ............................. 5.7.3 # | PerlIO_unread ........................... 5.7.3 # | PerlIO_write ............................ 5.7.3 # | PL_modglobal ............................ 5.005 # | pmop_dump ............................... 5.6.0 # | POP_MULTICALL ........................... 5.9.5 # | POPpbytex ............................... 5.7.1 # | POPpx ................................... 5.005_03 # | pregcomp ................................ 5.9.5 # | ptr_table_clear ......................... 5.9.5 # | ptr_table_fetch ......................... 5.9.5 # | ptr_table_free .......................... 5.9.5 # | ptr_table_new ........................... 5.9.5 # | ptr_table_split ......................... 5.9.5 # | ptr_table_store ......................... 5.9.5 # | PUSH_MULTICALL .......................... 5.9.5 # | pv_display .............................. 5.6.0 # | pv_escape ............................... 5.9.4 # | pv_pretty ............................... 5.9.4 # | pv_uni_display .......................... 5.7.3 # | re_compile .............................. 5.9.5 # | re_intuit_start ......................... 5.9.5 # | re_intuit_string ........................ 5.6.0 # | realloc ................................. 5.7.2 # | ref ..................................... 5.9.3 # | reg_named_buff_all ...................... 5.9.5 # | reg_named_buff_exists ................... 5.9.5 # | reg_named_buff_fetch .................... 5.9.5 # | reg_named_buff_firstkey ................. 5.9.5 # | reg_named_buff_nextkey .................. 5.9.5 # | reg_named_buff_scalar ................... 5.9.5 # | reg_stringify ........................... 5.9.5 # | regclass_swash .......................... 5.9.4 # | regdump ................................. 5.005 # | regexec_flags ........................... 5.005 # | regfree_internal ........................ 5.9.5 # | reginitcolors ........................... 5.6.0 # | regnext ................................. 5.005 # | require_pv .............................. 5.6.0 # | rsignal ................................. 5.004 # | rsignal_state ........................... 5.004 # | runops_debug ............................ 5.005 # | runops_standard ......................... 5.005 # | safesyscalloc ........................... 5.6.0 # | safesysfree ............................. 5.6.0 # | safesysmalloc ........................... 5.6.0 # | safesysrealloc .......................... 5.6.0 # | save_aelem .............................. 5.004_05 # | save_alloc .............................. 5.6.0 # | save_bool ............................... 5.8.1 # | save_destructor ......................... 5.6.0 # | save_destructor_x ....................... 5.6.0 # | save_generic_pvref ...................... 5.6.1 # | save_generic_svref ...................... 5.005_03 # | save_gp ................................. 5.004 # | save_helem .............................. 5.004_05 # | save_hints .............................. 5.005 # | save_I16 ................................ 5.004 # | save_I8 ................................. 5.6.0 # | save_iv ................................. 5.005 # | save_mortalizesv ........................ 5.7.1 # | save_padsv .............................. 5.7.1 # | save_re_context ......................... 5.6.0 # | save_set_svflags ........................ 5.9.0 # | save_shared_pvref ....................... 5.7.3 # | save_vptr ............................... 5.6.0 # | savepvs ................................. 5.9.3 # | savesharedpv ............................ 5.7.3 # | savesharedpvn ........................... 5.9.5 # | savestack_grow_cnt ...................... 5.8.1 # | savesvpv ................................ 5.9.2 # | scan_bin ................................ 5.6.0 # | scan_num ................................ 5.7.1 # | scan_version ............................ 5.9.1 # | scan_vstring ............................ 5.9.5 # | screaminstr ............................. 5.005 # | seed .................................... 5.8.1 # | set_context ............................. 5.6.0 # | set_numeric_local ....................... 5.6.0 # | set_numeric_radix ....................... 5.6.0 # | set_numeric_standard .................... 5.6.0 # | share_hek ............................... 5.004 # | sortsv .................................. 5.7.3 # | sortsv_flags ............................ 5.9.3 # | start_subparse .......................... 5.004 # | stashpv_hvname_match .................... 5.9.5 # | str_to_version .......................... 5.6.0 # | sv_2iv_flags ............................ 5.9.1 # | sv_2pvutf8 .............................. 5.6.0 # | sv_2pvutf8_nolen ........................ 5.6.0 # | sv_2uv_flags ............................ 5.9.1 # | sv_cat_decode ........................... 5.8.1 # | sv_catpvf ............................... 5.004 # | sv_catpvf_mg ............................ 5.004 # | sv_catpvn_flags ......................... 5.7.2 # | sv_catsv_flags .......................... 5.7.2 # | sv_cmp_locale ........................... 5.004 # | sv_compile_2op .......................... 5.8.1 # | sv_copypv ............................... 5.7.3 # | sv_derived_from ......................... 5.004 # | sv_does ................................. 5.9.4 # | sv_force_normal ......................... 5.6.0 # | sv_force_normal_flags ................... 5.7.1 # | sv_gets ................................. 5.004 # | sv_iv ................................... 5.005 # | sv_len_utf8 ............................. 5.6.0 # | sv_magic_portable ....................... 5.004 # | sv_magicext ............................. 5.7.3 # | sv_nolocking ............................ 5.7.3 # | sv_nosharing ............................ 5.7.3 # | sv_nv ................................... 5.005 # | sv_peek ................................. 5.005 # | sv_pos_b2u .............................. 5.6.0 # | sv_pos_u2b .............................. 5.6.0 # | sv_pv ................................... 5.6.0 # | sv_pvbyte ............................... 5.6.0 # | sv_pvbyten .............................. 5.6.0 # | sv_pvbyten_force ........................ 5.6.0 # | sv_pvutf8 ............................... 5.6.0 # | sv_pvutf8n .............................. 5.6.0 # | sv_pvutf8n_force ........................ 5.6.0 # | sv_recode_to_utf8 ....................... 5.7.3 # | sv_rvweaken ............................. 5.6.0 # | sv_setpvf ............................... 5.004 # | sv_setpvf_mg ............................ 5.004 # | sv_setpviv .............................. 5.8.1 # | sv_setpviv_mg ........................... 5.8.1 # | sv_setref_uv ............................ 5.7.1 # | sv_setsv_flags .......................... 5.7.2 # | sv_taint ................................ 5.004 # | sv_tainted .............................. 5.004 # | sv_true ................................. 5.005 # | sv_uni_display .......................... 5.7.3 # | sv_unref_flags .......................... 5.7.1 # | sv_untaint .............................. 5.004 # | sv_usepvn_flags ......................... 5.9.4 # | sv_utf8_decode .......................... 5.6.0 # | sv_utf8_downgrade ....................... 5.6.0 # | sv_utf8_encode .......................... 5.6.0 # | sv_utf8_upgrade ......................... 5.7.1 # | sv_utf8_upgrade_flags ................... 5.7.2 # | sv_vcatpvf .............................. 5.004 # | sv_vcatpvf_mg ........................... 5.004 # | sv_vcatpvfn ............................. 5.004 # | sv_vsetpvf .............................. 5.004 # | sv_vsetpvf_mg ........................... 5.004 # | sv_vsetpvfn ............................. 5.004 # | SvGAMAGIC ............................... 5.6.1 # | SvIOK_notUV ............................. 5.6.0 # | SvIOK_only_UV ........................... 5.6.0 # | SvIOK_UV ................................ 5.6.0 # | SvIsCOW ................................. 5.8.3 # | SvIsCOW_shared_hash ..................... 5.8.3 # | SvLOCK .................................. 5.7.3 # | SvPOK_only_UTF8 ......................... 5.6.0 # | SvPVbyte_force .......................... 5.9.2 # | SvPVbyte_nolen .......................... 5.6.0 # | SvPVbytex ............................... 5.6.0 # | SvPVbytex_force ......................... 5.6.0 # | SvPVutf8 ................................ 5.6.0 # | SvPVutf8_force .......................... 5.6.0 # | SvPVutf8_nolen .......................... 5.6.0 # | SvPVutf8x ............................... 5.6.0 # | SvPVutf8x_force ......................... 5.6.0 # | SvRX .................................... 5.9.5 # | SvRXOK .................................. 5.9.5 # | SvSetMagicSV ............................ 5.004 # | SvSetMagicSV_nosteal .................... 5.004 # | SvSetSV_nosteal ......................... 5.004 # | SvSHARE ................................. 5.7.3 # | SvTAINTED ............................... 5.004 # | SvTAINTED_off ........................... 5.004 # | SvTAINTED_on ............................ 5.004 # | SvUNLOCK ................................ 5.7.3 # | SvUOK ................................... 5.6.0 # | SvUTF8 .................................. 5.6.0 # | SvUTF8_off .............................. 5.6.0 # | SvUTF8_on ............................... 5.6.0 # | SvVOK ................................... 5.8.1 # | swash_fetch ............................. 5.7.2 # | swash_init .............................. 5.6.0 # | tmps_grow ............................... 5.6.0 # | to_uni_fold ............................. 5.7.3 # | to_uni_lower ............................ 5.7.3 # | to_uni_lower_lc ......................... 5.6.0 # | to_uni_title ............................ 5.7.3 # | to_uni_title_lc ......................... 5.6.0 # | to_uni_upper ............................ 5.7.3 # | to_uni_upper_lc ......................... 5.6.0 # | to_utf8_case ............................ 5.7.3 # | to_utf8_fold ............................ 5.7.3 # | to_utf8_lower ........................... 5.7.3 # | to_utf8_title ........................... 5.7.3 # | to_utf8_upper ........................... 5.7.3 # | unpack_str .............................. 5.7.3 # | unpackstring ............................ 5.8.1 # | unsharepvn .............................. 5.004 # | upg_version ............................. 5.9.5 # | utf16_to_utf8 ........................... 5.6.1 # | utf16_to_utf8_reversed .................. 5.6.1 # | utf8_distance ........................... 5.6.0 # | utf8_hop ................................ 5.6.0 # | utf8_length ............................. 5.7.1 # | utf8_to_bytes ........................... 5.6.1 # | utf8_to_uvchr ........................... 5.7.1 # | utf8_to_uvuni ........................... 5.7.1 # | utf8n_to_uvuni .......................... 5.7.1 # | uvchr_to_utf8_flags ..................... 5.7.3 # | uvuni_to_utf8 ........................... 5.7.1 # | uvuni_to_utf8_flags ..................... 5.7.3 # | vcmp .................................... 5.9.0 # | vcroak .................................. 5.6.0 # | vdeb .................................... 5.7.3 # | vform ................................... 5.6.0 # | vmess ................................... 5.6.0 # | vnewSVpvf ............................... 5.004 # | vnormal ................................. 5.9.2 # | vnumify ................................. 5.9.0 # | vstringify .............................. 5.9.0 # | vverify ................................. 5.9.3 # | vwarn ................................... 5.6.0 # | vwarner ................................. 5.6.0 # | warner .................................. 5.004 ok 178 ok 179 ok 180 ok 181 ok 182 ok 183 ok 184 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing Makefile.PL *** # | newSViv(); # *** writing foo.o *** # | newSViv(); # *** writing foo.cpp *** # | newSViv(); # *** evaluating test code *** # | # check --nofilter option # | # | my $o = ppport(qw(--nochanges)); # | ok($o =~ /^Scanning.*foo\.cpp/mi); # | ok($o =~ /Analyzing.*foo\.cpp/mi); # | ok(matches($o, '^Scanning', 'm'), 1); # | ok(matches($o, 'Analyzing', 'm'), 1); # | # | $o = ppport(qw(--nochanges foo.cpp foo.o Makefile.PL)); # | ok($o =~ /Skipping the following files \(use --nofilter to avoid this\):/m); # | ok(matches($o, '^\|\s+foo\.o', 'mi'), 1); # | ok(matches($o, '^\|\s+Makefile\.PL', 'mi'), 1); # | ok($o =~ /^Scanning.*foo\.cpp/mi); # | ok($o =~ /Analyzing.*foo\.cpp/mi); # | ok(matches($o, '^Scanning', 'm'), 1); # | ok(matches($o, 'Analyzing', 'm'), 1); # | # | $o = ppport(qw(--nochanges --nofilter foo.cpp foo.o Makefile.PL)); # | ok($o =~ /^Scanning.*foo\.cpp/mi); # | ok($o =~ /Analyzing.*foo\.cpp/mi); # | ok($o =~ /^Scanning.*foo\.o/mi); # | ok($o =~ /Analyzing.*foo\.o/mi); # | ok($o =~ /^Scanning.*Makefile/mi); # | ok($o =~ /Analyzing.*Makefile/mi); # | ok(matches($o, '^Scanning', 'm'), 3); # | ok(matches($o, 'Analyzing', 'm'), 3); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges *** # | Scanning ./foo.cpp ... # | === Analyzing ./foo.cpp === # | Analysis completed # | Looks good ok 185 ok 186 ok 187 ok 188 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges foo.cpp foo.o Makefile.PL *** # | *** Skipping the following files (use --nofilter to avoid this): # | | foo.o # | | Makefile.PL # | Scanning foo.cpp ... # | === Analyzing foo.cpp === # | Analysis completed # | Looks good ok 189 ok 190 ok 191 ok 192 ok 193 ok 194 ok 195 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --nofilter foo.cpp foo.o Makefile.PL *** # | Scanning foo.cpp ... # | Scanning foo.o ... # | Scanning Makefile.PL ... # | === Analyzing foo.cpp === # | Analysis completed # | Looks good # | === Analyzing foo.o === # | Analysis completed # | Looks good # | === Analyzing Makefile.PL === # | Analysis completed # | Looks good ok 196 ok 197 ok 198 ok 199 ok 200 ok 201 ok 202 ok 203 ok 204 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing MyExt.xs *** # | PL_signals = 123; # | if (PL_signals == 42) # | foo(); # *** writing MyExt.ra *** # | #define NEED_PL_signals # | #include "ppport.h" # | PL_signals = 123; # | if (PL_signals == 42) # | foo(); # *** evaluating test code *** # | # check if explicit variables are handled propery # | # | my $o = ppport(qw(--copy=a)); # | ok($o =~ /^Needs to include.*ppport\.h/m); # | ok($o =~ /^Uses PL_signals/m); # | ok($o =~ /^File needs PL_signals, adding static request/m); # | ok(eq_files('MyExt.xsa', 'MyExt.ra')); # | # | unlink qw(MyExt.xsa); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --copy=a *** # | Scanning ./MyExt.xs ... # | === Analyzing ./MyExt.xs === # | Uses PL_signals # | File needs PL_signals, adding static request # | Needs to include 'ppport.h' # | Analysis completed # | Writing copy of './MyExt.xs' with changes to './MyExt.xsa' ok 205 ok 206 ok 207 # File: MyExt.xsa # | #define NEED_PL_signals # | #include "ppport.h" # | PL_signals = 123; # | if (PL_signals == 42) # | foo(); # File: MyExt.ra # | #define NEED_PL_signals # | #include "ppport.h" # | PL_signals = 123; # | if (PL_signals == 42) # | foo(); ok 208 ok 209 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing file.xs *** # | #include "ppport.h" # | SvUOK # | PL_copline # *** evaluating test code *** # | my $o = ppport(qw(--nochanges file.xs)); # | ok($o =~ /^Uses PL_copline/m); # | ok($o =~ /WARNING: PL_copline/m); # | ok($o =~ /^Uses SvUOK/m); # | ok($o =~ /WARNING: Uses SvUOK, which may not be portable/m); # | ok($o =~ /^Analysis completed \(2 warnings\)/m); # | ok($o =~ /^Looks good/m); # | # | $o = ppport(qw(--nochanges --compat-version=5.8.0 file.xs)); # | ok($o =~ /^Uses PL_copline/m); # | ok($o =~ /WARNING: PL_copline/m); # | ok($o !~ /WARNING: Uses SvUOK, which may not be portable/m); # | ok($o =~ /^Analysis completed \(1 warning\)/m); # | ok($o =~ /^Looks good/m); # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges file.xs *** # | Scanning file.xs ... # | === Analyzing file.xs === # | Uses PL_copline # | *** WARNING: PL_copline # | *** Do not use this variable. It is internal to the perl parser # | *** and may change or even be removed in the future. Note that # | *** as of perl 5.9.5 you cannot assign to this variable anymore. # | Uses SvUOK, which depends on SvIOK_UV # | *** WARNING: Uses SvUOK, which may not be portable below perl 5.6.0, even with 'ppport.h' # | Analysis completed (2 warnings) # | Looks good ok 210 ok 211 ok 212 ok 213 ok 214 ok 215 # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --nochanges --compat-version=5.8.0 file.xs *** # | Scanning file.xs ... # | === Analyzing file.xs === # | Uses PL_copline # | *** WARNING: PL_copline # | *** Do not use this variable. It is internal to the perl parser # | *** and may change or even be removed in the future. Note that # | *** as of perl 5.9.5 you cannot assign to this variable anymore. # | Analysis completed (1 warning) # | Looks good ok 216 ok 217 ok 218 ok 219 ok 220 ok 221 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing file.xsr *** # | #include "ppport.h" # | a_string = "sv_undef" # | a_char = 'sv_yes' # | #define SOMETHING PL_defgv # | /* C-comment: sv_tainted */ # | # # | # This is just a big XS comment using sv_no # | # # | /* The following, is NOT an XS comment! */ # | # define SOMETHING_ELSE PL_defgv + \ # | PL_sv_undef # *** writing file.xs *** # | a_string = "sv_undef" # | a_char = 'sv_yes' # | #define SOMETHING defgv # | /* C-comment: sv_tainted */ # | # # | # This is just a big XS comment using sv_no # | # # | /* The following, is NOT an XS comment! */ # | # define SOMETHING_ELSE defgv + \ # | sv_undef # *** evaluating test code *** # | my $o = ppport(qw(--copy=f)); # | # | for (qw(file.xs)) { # | ok($o =~ /^Writing copy of.*\Q$_\E.*with changes/mi); # | ok(-e "${_}f"); # | ok(eq_files("${_}f", "${_}r")); # | unlink "${_}f"; # | } # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --copy=f *** # | Scanning ./file.xs ... # | === Analyzing ./file.xs === # | *** Uses defgv instead of PL_defgv # | *** Uses sv_undef instead of PL_sv_undef # | Uses PL_defgv # | Uses PL_sv_undef # | Needs to include 'ppport.h' # | Analysis completed # | Writing copy of './file.xs' with changes to './file.xsf' ok 222 ok 223 # File: file.xsf # | #include "ppport.h" # | a_string = "sv_undef" # | a_char = 'sv_yes' # | #define SOMETHING PL_defgv # | /* C-comment: sv_tainted */ # | # # | # This is just a big XS comment using sv_no # | # # | /* The following, is NOT an XS comment! */ # | # define SOMETHING_ELSE PL_defgv + \ # | PL_sv_undef # File: file.xsr # | #include "ppport.h" # | a_string = "sv_undef" # | a_char = 'sv_yes' # | #define SOMETHING PL_defgv # | /* C-comment: sv_tainted */ # | # # | # This is just a big XS comment using sv_no # | # # | /* The following, is NOT an XS comment! */ # | # define SOMETHING_ELSE PL_defgv + \ # | PL_sv_undef ok 224 ok 225 # # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # # *** writing file.xsr *** # | #define NEED_sv_2pv_flags # | #define NEED_vnewSVpvf # | #define NEED_warner # | #include "ppport.h" # | Perl_croak_nocontext("foo"); # | Perl_croak(aTHX_ "bar"); # | croak("foo"); # | croak_nocontext("foo"); # | Perl_warner_nocontext("foo"); # | Perl_warner(aTHX_ "foo"); # | warner_nocontext("foo"); # | warner("foo"); # *** writing file.xs *** # | #define NEED_sv_2pv_flags # | #define NEED_vnewSVpvf # | #define NEED_warner # | #include "ppport.h" # | Perl_croak_nocontext("foo"); # | Perl_croak("bar"); # | croak("foo"); # | croak_nocontext("foo"); # | Perl_warner_nocontext("foo"); # | Perl_warner("foo"); # | warner_nocontext("foo"); # | warner("foo"); # *** evaluating test code *** # | my $o = ppport(qw(--copy=f)); # | # | for (qw(file.xs)) { # | ok($o =~ /^Writing copy of.*\Q$_\E.*with changes/mi); # | ok(-e "${_}f"); # | ok(eq_files("${_}f", "${_}r")); # | unlink "${_}f"; # | } # *** running /home/cpanrun/build/5.6.1/bin/perl ppport.h --copy=f *** # | Scanning ./file.xs ... # | === Analyzing ./file.xs === # | *** Doesn't pass interpreter argument aTHX to Perl_croak # | *** Doesn't pass interpreter argument aTHX to Perl_warner # | Uses warner, which depends on PERL_UNUSED_ARG, SvPV_nolen, SV_GMAGIC, SvPVX, sv_2pv_flags, sv_2pv, sv_2mortal, vnewSVpvf, newSV, sv_vsetpvfn, warn # | *** WARNING: Uses warner, which may not be portable below perl 5.004, even with 'ppport.h' # | Analysis completed (1 warning) # | Writing copy of './file.xs' with changes to './file.xsf' ok 226 ok 227 # File: file.xsf # | #define NEED_sv_2pv_flags # | #define NEED_vnewSVpvf # | #define NEED_warner # | #include "ppport.h" # | Perl_croak_nocontext("foo"); # | Perl_croak(aTHX_ "bar"); # | croak("foo"); # | croak_nocontext("foo"); # | Perl_warner_nocontext("foo"); # | Perl_warner(aTHX_ "foo"); # | warner_nocontext("foo"); # | warner("foo"); # File: file.xsr # | #define NEED_sv_2pv_flags # | #define NEED_vnewSVpvf # | #define NEED_warner # | #include "ppport.h" # | Perl_croak_nocontext("foo"); # | Perl_croak(aTHX_ "bar"); # | croak("foo"); # | croak_nocontext("foo"); # | Perl_warner_nocontext("foo"); # | Perl_warner(aTHX_ "foo"); # | warner_nocontext("foo"); # | warner("foo"); ok 228 ok 229 ok t/pvs...............1..7 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok t/shared_pv.........1..1 ok 1 ok t/snprintf..........1..2 ok 1 ok 2 ok t/strlfuncs.........1..13 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok t/sv_xpvf...........1..9 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok t/threads...........1..2 ok 1 ok 2 ok t/uv................1..10 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok t/variables.........1..37 ok 1 ok 2 ok 3 ok 4 ok 5 ok 6 ok 7 ok 8 ok 9 ok 10 ok 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 17 ok 18 ok 19 ok 20 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 ok 27 ok 28 ok 29 ok 30 ok 31 ok 32 ok 33 ok 34 ok 35 ok 36 ok 37 ok t/warn..............1..5 ok 1 ok 2 ok 3 ok 4 ok 5 ok All tests successful, 6 subtests skipped. Files=26, Tests=499, 53 wallclock secs (51.60 cusr + 1.62 csys = 53.22 CPU) Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/i686-linux-thread-multi/auto/Devel/PPPort/PPPort.so Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/i686-linux-thread-multi/auto/Devel/PPPort/PPPort.bs Installing /home/cpanrun/build/5.6.1/lib/site_perl/5.6.1/i686-linux-thread-multi/Devel/PPPort.pm Installing /home/cpanrun/build/5.6.1/man/man3/Devel::PPPort.3 Appending installation info to /home/cpanrun/build/5.6.1/lib/5.6.1/i686-linux-thread-multi/perllocal.pod