Add cmpVERSION.pl from Slaven for comparing two
Jarkko Hietaniemi [Wed, 13 Aug 2003 13:46:18 +0000 (13:46 +0000)]
Perl source trees for modules that have changed
but have the same version numbers.

p4raw-id: //depot/perl@20678

MANIFEST
Porting/cmpVERSION.pl [new file with mode: 0644]

index 09d6300..694c562 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -2398,6 +2398,7 @@ Porting/apply             Apply patches sent by mail
 Porting/check83.pl     Check whether we are 8.3-friendly
 Porting/checkURL.pl    Check whether we have working URLs
 Porting/checkVERSION.pl        Check whether we have $VERSIONs
+Porting/cmpVERSION.pl  Compare whether two trees have changed modules
 Porting/config.sh      Sample config.sh
 Porting/config_H       Sample config.h
 Porting/Contract       Social contract for contributed modules in Perl core
diff --git a/Porting/cmpVERSION.pl b/Porting/cmpVERSION.pl
new file mode 100644 (file)
index 0000000..b335476
--- /dev/null
@@ -0,0 +1,38 @@
+#!/usr/bin/perl -w
+
+#
+# cmpVERSION - compare two Perl source trees for modules
+# that have identical version numbers but different contents.
+#
+# Original by slaven@rezic.de, modified by jhi.
+#
+
+use strict;
+
+use ExtUtils::MakeMaker;
+use File::Compare;
+use File::Find;
+use File::Spec::Functions qw(rel2abs abs2rel catfile catdir curdir);
+
+for (@ARGV[0, 1]) {
+    die "$0: '$_' does not look like Perl directory\n"
+       unless -f catfile($_, "perl.h") && -d catdir($_, "Porting");
+}
+
+my $dir2 = rel2abs($ARGV[1]);
+chdir $ARGV[0] or die "$0: chdir '$ARGV[0]' failed: $!\n";
+
+my @wanted;
+find(
+     sub { /\.pm$/ &&
+              do { my $file2 =
+                       catfile(catdir($dir2, $File::Find::dir), $_);
+                   return if compare($_, $file2) == 0;
+                   my $version1 = eval {MM->parse_version($_)};
+                   my $version2 = eval {MM->parse_version($file2)};
+                   push @wanted, $File::Find::name
+                       if $version1 eq $version2
+               } }, curdir);
+print map { $_, "\n" } sort @wanted;
+
+