On Mon, Dec 17, 2012 at 08:02:24PM +0100, Sébastien Marie wrote:
> Hi,
> 
> As my previous message seems to get very small audience, I rewrite it... 
> please excuse my previous mail, which was bad written.
> 
> The purpose is to permit the use of out-of-date(1) with customized 
> mk.conf(5), in particular the usage of PORTSDIR_PATH (search path for package 
> specifications).
> 
> The patch replace the search of path of installed packages, from a directory 
> existence check, to something that let make search the patch for us, and 
> parse the errors (in order to set not-found packages).
> 
> My use case is the "mystuff" directory (with is included by default in 
> PORTSDIR_PATH). With the patch, packages build from mystuff are found by 
> out-of-date (and so, reported as not up-to-date if there are), else there are 
> reported as "not found".
> 
> If this proposal is not good, please let me know.
> 
> Thanks.
> -- 
> Sebastien Marie
> 
> 
> 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;
Seems fairly reasonable at first glance. Sorry about not responding earlier,
real job is intruding too much recently.

Thanks.

Reply via email to