[Midnightbsd-cvs] mports: bumper.pl: add bumper.

ctriv at midnightbsd.org ctriv at midnightbsd.org
Wed Nov 7 14:54:06 EST 2007


Log Message:
-----------
add bumper.  Bumps port revisions based on makefile vars.

Added Files:
-----------
    mports/Tools/scripts:
        bumper.pl (r1.1)

-------------- next part --------------
--- /dev/null
+++ Tools/scripts/bumper.pl
@@ -0,0 +1,77 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+use lib qw(/usr/mports/Tools/lib);
+
+use Mport::Utils qw(recurse_ports make_var);
+
+use File::Temp qw(tempfile);
+use File::Copy qw(move copy);
+
+sub fgrep (&@);
+
+my ($wanted) = @ARGV;
+
+recurse_ports {
+  if (make_var($wanted)) {
+    print "Bumping $_[0]... "
+    bump_portrevision(shift);
+    print "done.\n";
+  }
+};
+
+
+sub bump_portrevision {
+  my ($port) = @_;
+
+  my $makefile = "$port/Makefile";
+  my ($tmp, $tmpname) = tempfile();
+  
+  if (fgrep { m/PORTREVISION/ } $makefile) {  
+    open(my $in, '<', $makefile) || die "Couldn't open $makefile: $!\n";
+    
+    local $_;
+    while (<$in>) {
+      if (m/^(PORTREVISION\s*\??=\s*)(\d+)/) {
+        $_ = $1 . ($2 + 1);
+      }
+      print $tmp $_;
+    }
+    close($in) || die "Couldn't close $makefile: $!\n";
+  } else {
+    open(my $in, '<', $makefile) || die "Couldn't open $makefile: $!\n";
+        
+    local $_;
+    while (<$in>) {
+      if (m/PORTVERSION=(\s*)/) {
+        $_ .= "PORTREVISION=${1}1\n";
+      }
+      print $tmp $_;
+    }
+    
+    close($in) || die "Couldn't close $makefile: $!\n";
+  }
+  
+  move($tmpname, $makefile) || die "Couldn't move $tmpname to $makefile: $!\n";
+}
+  
+  
+sub fgrep (&@) {
+  my ($code, @files) = @_;
+  my ($fh, $ret);
+
+  foreach my $file (@files) {
+    open($fh, '<', $file) || die "Couldn't open $file: $!\n";
+    while (local $_ = <$fh>) {
+      if ($code->()) {
+        close($fh) || die "Couldn't close $file: $!\n";
+        return 1;
+      }
+    }
+    close($fh) || die "Couldn't close $file: $!\n";
+  }
+  
+  return;
+}
+


More information about the Midnightbsd-cvs mailing list