[Midnightbsd-cvs] mports: Utils.pm: Add support for setting your own root and chdir
ctriv at midnightbsd.org
ctriv at midnightbsd.org
Mon Nov 5 11:52:38 EST 2007
Log Message:
-----------
Add support for setting your own root and chdir failure callbacks to
recurse_ports();
Modified Files:
--------------
mports/Tools/lib/Mport:
Utils.pm (r1.4 -> r1.5)
-------------- next part --------------
Index: Utils.pm
===================================================================
RCS file: /home/cvs/mports/Tools/lib/Mport/Utils.pm,v
retrieving revision 1.4
retrieving revision 1.5
diff -LTools/lib/Mport/Utils.pm -LTools/lib/Mport/Utils.pm -u -r1.4 -r1.5
--- Tools/lib/Mport/Utils.pm
+++ Tools/lib/Mport/Utils.pm
@@ -25,19 +25,22 @@
}
}
-sub recurse_ports (&) {
- my ($code) = @_;
+sub recurse_ports (&;@) {
+ my ($code, %args) = @_;
my $orig = Cwd::getcwd();
- _do_recurse($code, $ROOT);
+ my $root = $args{root} || $ROOT;
+ my $nochdir = $args{nochdir} || sub { die "Couldn't chdir to @_: $!" };
+
+ _do_recurse($code, $root, $nochdir);
chdir($orig);
}
sub _do_recurse {
- my ($code, $cwd) = @_;
+ my ($code, $cwd, $nochdir) = @_;
- chdir($cwd) || die "Couldn't chdir to $cwd: $!\n";
+ chdir($cwd) || do { $nochdir->($cwd); return };
# Calling make is expensive. Only do so if we need to.
if (-e 'pkg-descr' || -e 'pkg-plist') {
@@ -54,7 +57,7 @@
close($make);
if (@dirs) {
foreach my $dir (@dirs) {
- _do_recurse($code, "$cwd/$dir");
+ _do_recurse($code, "$cwd/$dir", $nochdir);
}
}
More information about the Midnightbsd-cvs
mailing list