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.