[Midnightbsd-cvs] mports: Utils.pm: Add recurse_ports.

ctriv at midnightbsd.org ctriv at midnightbsd.org
Wed Sep 5 15:25:36 EDT 2007


Log Message:
-----------
Add recurse_ports.  Only export symbols on request.

Modified Files:
--------------
    mports/Tools/lib/Mport:
        Utils.pm (r1.1 -> r1.2)

-------------- next part --------------
Index: Utils.pm
===================================================================
RCS file: /home/cvs/mports/Tools/lib/Mport/Utils.pm,v
retrieving revision 1.1
retrieving revision 1.2
diff -LTools/lib/Mport/Utils.pm -LTools/lib/Mport/Utils.pm -u -r1.1 -r1.2
--- Tools/lib/Mport/Utils.pm
+++ Tools/lib/Mport/Utils.pm
@@ -5,12 +5,14 @@
 use strict;
 use warnings;
 use Exporter ();
+use Cwd ();
 use Text::ParseWords qw(shellwords);
-use Mport::Globals qw($MAKE);
+
+use Mport::Globals qw($MAKE $ROOT);
 
 *import = \&Exporter::import;
 
-our @EXPORT = qw(make_var);
+our @EXPORT_OK = qw(make_var recurse_ports);
 
 sub make_var {
   my $vars  = join(' ', map { "-V $_" } @_);
@@ -22,8 +24,31 @@
     return $ret;
   }
 }
+
+sub recurse_ports (&) {
+  my ($code) = @_;
+  my $orig = Cwd::getcwd();
+  
+  _do_recurse($code, $ROOT);
   
+  chdir($orig);
+}
 
+sub _do_recurse {
+  my ($code, $cwd) = @_;
+  
+  chdir($cwd);
+  
+  my @dirs = make_var('SUBDIR');
+  
+  if (@dirs) {
+    foreach my $dir (@dirs) {
+      _do_recurse($code, "$cwd/$dir");
+    }
+  } else {
+    $code->($cwd);
+  }
+}      
 
 1;
 __END__


More information about the Midnightbsd-cvs mailing list