In perl.git, the branch smoke-me/nicholas/diag-from-MANIFEST has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/2d5ae03c563967f5daebf0c2f3b84cec348d3649?hp=de19dead5ea4c0494ce36818d909a44f25573257>

- Log -----------------------------------------------------------------
commit 2d5ae03c563967f5daebf0c2f3b84cec348d3649
Author: Nicholas Clark <n...@ccl4.org>
Date:   Wed Feb 13 17:06:59 2013 +0100

    Extend t/porting/diag.t to cover code in DynaLoader.
    
    This seems a reasonable extension to cover, as it's arguably part of the
    core, because it has to be linked into the perl executable, and handled
    differently from everything else, even "static" extensions.
    
    This reveals that DynaLoader can generate a previously undocumented warning,
    so document this.

M       pod/perldiag.pod
M       t/porting/diag.t

commit c56a57a2d88592295aba1be82ad3249ee8b4288c
Author: Nicholas Clark <n...@ccl4.org>
Date:   Wed Feb 13 16:28:13 2013 +0100

    Extend t/porting/diag.t to cover various other C-like files.
    
    Specifically C++ source, and files related to perly.y and x2p/a2p.y
    This catches an error in an XS module embedded into the (moribund) Symbian
    port, which we need to skip.

M       t/porting/diag.t

commit acca7199583723a77c2fdf2a8b278a7c9c1e52a8
Author: Nicholas Clark <n...@ccl4.org>
Date:   Wed Feb 13 15:34:04 2013 +0100

    t/porting/diag.t now reads files from MANIFEST, instead of scanning the 
disk.
    
    This does less work, and avoids both files duplicated by the build system,
    and false positives due to temporary files left by developers.

M       t/porting/diag.t
-----------------------------------------------------------------------

Summary of changes:
 pod/perldiag.pod |    9 +++++++++
 t/porting/diag.t |   23 +++++++++++------------
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/pod/perldiag.pod b/pod/perldiag.pod
index ef69cd1..c5fdbb6 100644
--- a/pod/perldiag.pod
+++ b/pod/perldiag.pod
@@ -998,6 +998,15 @@ e.g. open(FH, ">:nosuchlayer", "somefile").
 (F) List assignment to %ENV is not supported on some systems, notably
 VMS.
 
+=item Can't make loaded symbols global on this platform while loading %s
+
+(W) A module passed the flag 0x01 to DynaLoader::dl_load_file() to request
+that symbols from the stated file are made available globally within the
+process, but that functionality is not available on this platform.  Whilst
+the module likely will still work, this may prevent the perl interpreter
+from loading other XS-based extensions which need to link directly to
+functions defined in the C or XS code in the stated file.
+
 =item Can't modify %s in %s
 
 (F) You aren't allowed to assign to the item indicated, or otherwise try
diff --git a/t/porting/diag.t b/t/porting/diag.t
index a37b338..73e5bae 100644
--- a/t/porting/diag.t
+++ b/t/porting/diag.t
@@ -191,19 +191,17 @@ my $specialformats =
  join '|', sort { length $b cmp length $a } keys %specialformats;
 my $specialformats_re = qr/%$format_modifiers"\s*($specialformats)(\s*")?/;
 
-# Recursively descend looking for source files.
-my @todo = sort <*>;
-while (@todo) {
-  my $todo = shift @todo;
-  next if $todo ~~ ['t', 'lib', 'ext', 'dist', 'cpan'];
-  # opmini.c is just a copy of op.c, so there's no need to check again.
-  next if $todo eq 'opmini.c';
-  if (-d $todo) {
-    unshift @todo, sort glob "$todo/*";
-  } elsif ($todo =~ m/\.[ch]$/) {
-    check_file($todo);
-  }
+open my $fh, '<', 'MANIFEST' or die "Can't open MANIFEST: $!";
+while (my $file = <$fh>) {
+    chomp $file;
+    $file =~ s/\s+.*//;
+    next unless $file =~ /\.(?:c|cpp|h|xs|y)\z/ or $file =~ /^perly\./;
+    # OS/2 extensions have never been migrated to ext/, hence the special case:
+    next if $file =~ m!\A(?:ext|dist|cpan|lib|t|os2/OS2)/!
+            && $file !~ m!\Aext/DynaLoader/!;
+    check_file($file);
 }
+close $fh or die $!;
 
 # Standardize messages with variants into the form that appears
 # in perldiag.pod -- useful for things without a diag_listed_as annotation
@@ -559,6 +557,7 @@ Not an XSUB reference
 Operator or semicolon missing before %c%s
 Pattern subroutine nesting without pos change exceeded limit in regex
 Perl %s required--this is only %s, stopped
+PerlApp::TextQuery: no arguments, please
 POSIX syntax [%c %c] is reserved for future extensions in regex; marked by <-- 
HERE in m/%s/
 ptr wrong %p != %p fl=%x nl=%p e=%p for %d
 Recompile perl with -DDEBUGGING to use -D switch (did you mean -d ?)

--
Perl5 Master Repository

Reply via email to