Add Larry Shatzer's VERSION verifying script.
Jarkko Hietaniemi [Fri, 16 Nov 2001 00:37:36 +0000 (00:37 +0000)]
p4raw-id: //depot/perl@13033

Porting/checkVERSION.pl [new file with mode: 0644]
Porting/pumpkin.pod

diff --git a/Porting/checkVERSION.pl b/Porting/checkVERSION.pl
new file mode 100644 (file)
index 0000000..9ad2ff5
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/bin/perl -w
+
+#
+# Check the tree against missing VERSIONs.
+#
+# Originally by Larry Shatzer
+#
+
+use strict;
+use File::Find;
+
+find(
+     sub {
+        return unless -f;
+        if (/\.pm$/ && $File::Find::name !~ m:/t/:) { # pm but not in a test
+            unless (parse_file($_)) {
+                print "$File::Find::name\n";
+            }
+        }
+     }, @ARGV ? shift : ".");
+
+sub parse_file {
+    my $parsefile = shift;
+
+    my $result;
+
+    open(FH,$parsefile) or warn "Could not open '$parsefile': $!";
+
+    my $inpod = 0;
+    while (<FH>) {
+       $inpod = /^=(?!cut)/ ? 1 : /^=cut/ ? 0 : $inpod;
+       next if $inpod || /^\s*\#/;
+       chomp;
+       next unless /([\$*])(([\w\:\']*)\bVERSION)\b.*\=/;
+       my $eval = qq{
+           package ExtUtils::MakeMaker::_version;
+           no strict;
+           local $1$2;
+           \$$2=undef; do {
+               $_
+           }; \$$2
+       };
+       no warnings;
+       $result = eval($eval);
+       warn "Could not eval '$eval' in $parsefile: $@" if $@;
+       $result = "undef" unless defined $result;
+       last;
+    }
+    close FH;
+    return $result;
+}
+
index ee866ec..42f4428 100644 (file)
@@ -241,6 +241,9 @@ some or all of the modules File::Basename, File::Spec, File::Path, and
 File::Copy to become aware of your native filesystem syntax and
 peculiarities.
 
+Remember to have a $VERSION in the modules.  You can use the
+Porting/checkVERSION.pl script for checking this.
+
 =item documentation
 
 If your operating system comes from outside UNIX you almost certainly