Hi,

Currently, when out-of-date(1) is used, with packages installed from "mystuff" 
directory, these packages are reported as "not found in the official ports 
tree".

I don't know if I miss-used out-of-date or not... In doubt I ask. Feel free to 
correct me if need.


Here, a naive proposal to include support of mystuff directory in 
out-of-date(1).

Index: out-of-date
===================================================================
RCS file: /cvs/ports/infrastructure/bin/out-of-date,v
retrieving revision 1.5
diff -u -p -r1.5 out-of-date
--- out-of-date 7 May 2012 15:57:51 -0000       1.5
+++ out-of-date 16 Dec 2012 10:56:36 -0000
@@ -82,6 +82,8 @@ sub collect_port_versions
                my ($dir) = split(/,/, $subdir);
                if (-d "$portsdir/$dir") {
                        push(@subdirs, $subdir);
+               } elsif (-d "$portsdir/mystuff/$dir") {
+                       push(@subdirs, $subdir);
                } else {
                        push(@$notfound, $subdir);
                }





An other proposal is to skip any directory existence test, and push $subdir in 
@$notfound, during the parsing of make output. It would allow to used 
out-of-date(1) in conjonction with some customized mk.conf (usage of 
PORTSDIR_PATH for example, and "mystuff" directory in particular).


Index: out-of-date
===================================================================
RCS file: /cvs/ports/infrastructure/bin/out-of-date,v
retrieving revision 1.5
diff -u -p -r1.5 out-of-date
--- out-of-date 7 May 2012 15:57:51 -0000       1.5
+++ out-of-date 16 Dec 2012 13:10:55 -0000
@@ -77,24 +77,14 @@ sub collect_port_versions
 {
        my ($pkg, $portsdir, $notfound) = @_;
 
-       my @subdirs = ();
-       for my $subdir (keys %$pkg) {
-               my ($dir) = split(/,/, $subdir);
-               if (-d "$portsdir/$dir") {
-                       push(@subdirs, $subdir);
-               } else {
-                       push(@$notfound, $subdir);
-               }
-       }
-
-       my $cmd = "cd $portsdir && SUBDIR=\"".join(' ', @subdirs)
+       my $cmd = "cd $portsdir && SUBDIR=\"".join(' ', keys %$pkg)
            ."\" FULLPATH=Yes REPORT_PROBLEM=true make 
".'show=FULLPKGNAME\${SUBPACKAGE} '
            ."2>&1";
 
        my $port  = {};
        my $error = {};
        my $count = 0;
-       my $total = scalar @subdirs;
+       my $total = scalar keys %$pkg;
 
        $state->progress->set_header("Collecting port versions");
        my $fh = open_cmd($cmd);
@@ -105,6 +95,12 @@ sub collect_port_versions
                        $subdir = $1;
                        $count++;
                        $state->progress->show($count, $total);
+                       next;
+               }
+               if (/^\>\> Broken dependency:\s+(\S+)\s+non existent/) {
+                       $count++;
+                       $state->progress->show($count, $total);
+                       push(@$notfound, $1);
                        next;
                }
                next unless $_ or $subdir;


-- 
Sébastien Marie

Reply via email to