Diff for /loncom/build/filecompare.pl between versions 1.14 and 1.15

version 1.14, 2004/07/02 22:04:50 version 1.15, 2014/06/09 05:14:12
Line 77  Options (before file/dir names): Line 77  Options (before file/dir names):
    N=2: same as N=1 except without md5sum     N=2: same as N=1 except without md5sum
    N=3: md5sum=same --> 1; age<0 --> 2     N=3: md5sum=same --> 1; age<0 --> 2
    N=4: cvstime>0 --> 2     N=4: cvstime>0 --> 2
      N=5: md5sum=same --> 1; cvstime<0 and sha1sum from dns_checksums=different --> 2;
      N=6: md5sum=same --> 1; age<0 and sha1sum from dns_checksums=different --> 2;   
   
 The third way to pass arguments is set by the -s flag.  The third way to pass arguments is set by the -s flag.
 filecompare.pl -s SOURCE=[source] TARGET=[target] MODE=[mode] LOC1 LOC2  filecompare.pl -s SOURCE=[source] TARGET=[target] MODE=[mode] LOC1 LOC2
Line 103  unless (@ARGV) { Line 105  unless (@ARGV) {
 #   size similarity (bytes)  #   size similarity (bytes)
 #   line count difference  #   line count difference
 #   number of different lines  #   number of different lines
   #   sha1sum similarity to checksum for same file in installed version
 #  #
 # Quantities of comparison:  # Quantities of comparison:
 #   existence (no,yes); other values become 'n/a'  #   existence (no,yes); other values become 'n/a'
Line 112  unless (@ARGV) { Line 115  unless (@ARGV) {
 #   size similarity (byte difference)  #   size similarity (byte difference)
 #   line count difference (integer)  #   line count difference (integer)
 #   number of different lines (integer)  #   number of different lines (integer)
   #   sha1sum ("same" or "different") 
   
 # ---------------------------------------------------------------- Dependencies  # ---------------------------------------------------------------- Dependencies
 # implementing from unix command line (assuming bash)  # implementing from unix command line (assuming bash)
 # md5sum, diff, wc -l  # md5sum, diff, wc -l, sha1sum
   
 # ---------------------------------------------- Process command line arguments  # ---------------------------------------------- Process command line arguments
 # Flags (before file/dir names):  # Flags (before file/dir names):
Line 240  my %OUTPUT=( Line 244  my %OUTPUT=(
          'size'=>(sub {print 'size: '.@_[0];return;}),           'size'=>(sub {print 'size: '.@_[0];return;}),
          'lines'=>(sub {print 'lines: '.@_[0];return;}),           'lines'=>(sub {print 'lines: '.@_[0];return;}),
          'diffs'=>(sub {print 'diffs: '.@_[0];return;}),           'diffs'=>(sub {print 'diffs: '.@_[0];return;}),
            'sha1sum'=>(sub {print 'sha1sum: '.@_[0];return;}),
 );  );
   
 my %MEASURE=(  my %MEASURE=(
Line 275  my %MEASURE=( Line 280  my %MEASURE=(
  my $rv2=`diff $file1 $file2 | grep '^>' | wc -l`;   my $rv2=`diff $file1 $file2 | grep '^>' | wc -l`;
  chop $rv2; $rv2=~s/^\s+//; $rv2=~s/\s+$//;   chop $rv2; $rv2=~s/^\s+//; $rv2=~s/\s+$//;
  return ($rv1,$rv2); } ),   return ($rv1,$rv2); } ),
            'sha1sum'=>( sub { my ($file1,$file2)=@_;
                             if (open(my $fh,"</etc/loncapa-release.prev")) {
                                 my $loncaparev = <$fh>;
                                 close($fh);
                                 chomp($loncaparev);
                                 $loncaparev =~ s/^\QLON-CAPA release \E//;
                                 $loncaparev =~ s/\-\d{8}$//;
                                 my ($rv1)=split(/ /,`sha1sum $file2`); chomp $rv1;
                                 my $checksum;
                                 if ($loncaparev eq 'CVS_HEAD') {
                                     return ($rv1,$checksum);
                                 }
                                 elsif (open(my $fh,"<../../loncom/dns_checksums/$loncaparev.tab")) {
                                     while (<$fh>) {
                                         chomp();
                                         if (/^\Q$file2\E,[\d\.]+,(\w+)$/) {
                                             $checksum = $1;
                                             last;
                                         }
                                     }
                                     close($fh);
                                     return ($rv1,$checksum);
                                 }
                             }
                             return('n/a','n/a'); }),
 );  );
   
 FLOOP: foreach my $file (@files) {  FLOOP: foreach my $file (@files) {
Line 290  FLOOP: foreach my $file (@files) { Line 320  FLOOP: foreach my $file (@files) {
     }      }
     my ($existence1,$existence2)=&{$MEASURE{'existence'}}($file1,$file2);      my ($existence1,$existence2)=&{$MEASURE{'existence'}}($file1,$file2);
     my $existence=$existence1.':'.$existence2;      my $existence=$existence1.':'.$existence2;
     my ($cvstime,$md5sum,$age,$size,$lines,$diffs);      my ($cvstime,$md5sum,$age,$size,$lines,$diffs,$sha1sum);
     if ($existence1 eq 'no' or $existence2 eq 'no') {      if ($existence1 eq 'no' or $existence2 eq 'no') {
         $md5sum='n/a';          $md5sum='n/a';
         $age='n/a';          $age='n/a';
Line 298  FLOOP: foreach my $file (@files) { Line 328  FLOOP: foreach my $file (@files) {
         $size='n/a';          $size='n/a';
         $lines='n/a';          $lines='n/a';
         $diffs='n/a';          $diffs='n/a';
           $sha1sum='n/a';
     }      }
     else {      else {
  if ($buildmode) {   if ($buildmode) {
     my ($cvstime1,$cvstime2)=&{$MEASURE{'cvstime'}}($file1,$file2);      my ($cvstime1,$cvstime2)=&{$MEASURE{'cvstime'}}($file1,$file2);
     $cvstime=$cvstime1-$cvstime2;      $cvstime=$cvstime1-$cvstime2;
  }              my ($sha1sumfile,$checksum) = &{$MEASURE{'sha1sum'}}($file1,$file2); 
               $sha1sum='n/a';
               unless ($checksum eq 'n/a') {
                   if ($sha1sumfile && $checksum) { 
                       if ($sha1sumfile eq $checksum) {
                           $sha1sum='same';
                       }
                       else {
                           $sha1sum='different';
                       }
                   }
       }
           }
  else {   else {
     $cvstime='n/a';      $cvstime='n/a';
               $sha1sum='n/a';
  }   }
         my ($age1,$age2)=&{$MEASURE{'age'}}($file1,$file2);          my ($age1,$age2)=&{$MEASURE{'age'}}($file1,$file2);
         $age=$age1-$age2;          $age=$age1-$age2;
Line 468  FLOOP: foreach my $file (@files) { Line 512  FLOOP: foreach my $file (@files) {
     exit(0);      exit(0);
  }   }
     }      }
       elsif ($buildmode==5) { # -b5
           if ($md5sum eq 'same') {
               exit(1);
           }
           elsif ($cvstime<0) {
               if ($sha1sum eq 'same') {
                   exit(0);
               }
               else {
                   exit(2);
               }
           }
           else {
               exit(0);
           }
       }
       elsif ($buildmode==6) { # -b6
           if ($md5sum eq 'same') {
               exit(1);
           }
           elsif ($age<0) {
               if ($sha1sum eq 'same') {
                   exit(0);
               }
               else {
                   exit(2);
               }
           }
           else {
               exit(0);
           }
       }
   
     if ($showflag) {      if ($showflag) {
  print "$file";   print "$file";
  if ($verbose==1) {   if ($verbose==1) {
Line 479  FLOOP: foreach my $file (@files) { Line 556  FLOOP: foreach my $file (@files) {
     print &{$OUTPUT{'age'}}($age);      print &{$OUTPUT{'age'}}($age);
     print "\t";      print "\t";
     print &{$OUTPUT{'md5sum'}}($md5sum);      print &{$OUTPUT{'md5sum'}}($md5sum);
               print "\t";
               print &{$OUTPUT{'sha1sum'}}($sha1sum);
     print "\t";      print "\t";
     print &{$OUTPUT{'size'}}($size);      print &{$OUTPUT{'size'}}($size);
     print "\t";      print "\t";
     print &{$OUTPUT{'lines'}}($lines);      print &{$OUTPUT{'lines'}}($lines);
     print "\t";      print "\t";
     print &{$OUTPUT{'diffs'}}($diffs);      print &{$OUTPUT{'diffs'}}($diffs);
               
  }   }
  print "\n";   print "\n";
     }      }

Removed from v.1.14  
changed lines
  Added in v.1.15


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>