Files
pkgsrc-ng/pkgtools/revbump/files/check-cvs-diff
2016-01-21 23:40:00 +01:00

100 lines
2.9 KiB
Perl

#!@PERL@ -w
# -*- perl -*-
#
# read output of (cd /usr/pkgsrc; cvs diff -u ) and check if
# py{27,34} and ruby200 string are left in buildlink3.mk.
# They are then modified to Variable representation.
#"
use strict;
use Getopt::Std;
our(@ARGV);
my (%opts);
my($my_name) = $0;
$my_name =~ s#(.*)/##;
sub usage(){
print <<HELP;
$my_name:
Read cvs diff -u output (of named file) and substitute
if the string py27, py34 or ruby200 is found in the corresponding
changes in diff.
Synopsys:
$my_name [-h] [-p pkgsrc_dir] [-v] [cvs-diff-u_output-file]
Where:
-h Show this help
-p pkgsrc directory other than /usr/pkgsrc
-v verbose (not actually implemented yet)
cvs-diff-u_output_file:
The name of input. Usually the file including 'cvs diff -u'
output (default cvs-diff)
See Also:
revbump(1) for how to use it.
HELP
}
sub main() {
my ($PKGSRCDIR);
my ($CVS_DIFF) = 'cvs-diff';
my ($file_to_edit);
my ($stay, $mod) = (0,0);
my ($Makefile, $buildlink3, $other) = (0, 0, 0);
$PKGSRCDIR = $ENV{PKGSRCDIR};
if (! $PKGSRCDIR) {
$PKGSRCDIR = "/usr/pkgsrc";
}
getopts('hvp:',\%opts);
if ($ARGV[0]) { $CVS_DIFF = $ARGV[0]}
if ($opts{'p'}) { $PKGSRCDIR = $opts{'p'}; }
if ($opts{'h'}) { usage() ; exit ;}
# for using rename, unlink
chdir $PKGSRCDIR;
open(CVS_DIFF, $CVS_DIFF) || die "Problem opening file $CVS_DIFF: $!\n";
while(<CVS_DIFF>){
# Looking for the +++ filename line in cvs diff (supposed to use 'cvs diff -u')
$file_to_edit = '';
if ( /^\+\+\+ (\S+)/) {
$file_to_edit = $1; }
if ( $file_to_edit && -f $file_to_edit ) {
if ( $file_to_edit =~ /Makefile$/ ) { $Makefile++;}
elsif ( $file_to_edit =~ /buildlink3.mk$/ ) { $buildlink3++;
# print __LINE__, ' ', $file_to_edit,"\n";
my ($new_file) = $file_to_edit. '.new';
my ($edit) = 0;
open(NEW, "> $new_file" ) || print STDERR "Problem to write $edit: $! \n";
open(EDIT, $file_to_edit ) || print STDERR "Problem opening file $file_to_edit: $! \n";
while(<EDIT>) {
if ( /^BUILDLINK.*py27/ ) { $_=~ s/py27/\${PYPKGPREFIX}/ ; $edit++;}
if ( /^BUILDLINK.*py34/ ) { $_=~ s/py34/\${PYPKGPREFIX}/ ;
print STDERR " py34 found at $file_to_edit\n";
; $edit++;}
if ( /^BUILDLINK.*ruby200/ ) { $_=~ s/ruby200/\${RUBY_PKGPREFIX}/ ; $edit++;}
print NEW $_;
}
close(EDIT);
close(NEW);
if ($edit) { unlink $file_to_edit;
rename $new_file, $file_to_edit;
$mod++;}
else {
$stay++;
unlink $new_file; };
} else { $other++; print STDERR " (other) ", $file_to_edit,"\n"}
}
}
close(CVS_DIFF);
printf STDERR "Makefile: %4d\n", $Makefile;
printf STDERR "buildlink3.mk: %4d\n", $buildlink3;
printf STDERR " Modified: %4d\n", $mod;
printf STDERR " Untouched: %4d\n", $stay;
printf STDERR "Other: %4d\n", $other;
}
main();
exit;