#!/usr/bin/perl

$stampdb="/Builds/packages/stampdb";
$pkg='';
$spkg='';
$dir=shift;
if ($dir eq '') {
    print STDERR "\n Usage: mk.PACKAGES <directory>\n\n";
    exit 1;
}

$dbroot=$ENV{DBROOT};
$dbroot="/Builds/packages/cache.db" if ($dbroot eq '');

sub processIt {
    print "Adding $last ...";

# we should have no bundles anymore
#    $ft="bundle";
#    foreach (@r) { s/[\r\n]+//g; };
#    if ($r[0] eq '') {
#	$ft="package";
#	@r=`tar fvxzO $lastfull $lastpre/DESCRIPTION 2> /dev/null`;
#    }
    $ft="package";
    if ( ! -e "$stampdb" ) {
	@r=`tar fvxzO $lastfull $lastpre/DESCRIPTION 2> /dev/null`;
    } else {
	@r=`$stampdb '-d=$dbroot' '$lastfull'`;
	if ($r[0] eq '') {
	    system "tar fvxzO $lastfull $lastpre/DESCRIPTION 2> /dev/null | $stampdb -a '-d=$dbroot' '$lastfull'";
	    @r=`$stampdb '-d=$dbroot' '$lastfull'`;
	    if ($r[0] eq '') {
		@r=`tar fvxzO $lastfull $lastpre/DESCRIPTION 2> /dev/null`;
	    }
	}
    }
    $url='';
    $lastac=0;
    foreach (@r) {
        s/[\r\n]+//g; $pkg.="$_\n";
        $url=$1 if (/URL: (.*)/);
	if (/^Package:/||/^Bundle:/||/^Contains:/||/^Version:/||/^Depends:/||/^Imports:/||/^Suggests:/||/^Title:/||/^Archs:/||/^Built:/) { $lastac=1; } elsif (!/^\s+\S/) { $lastac=0; }
        $spkg.="$_\n" if ($lastac > 0);
    }
    $pkg.="\n"; $spkg.="\n";
    push @pkgs,$last;
    $urls{$last}=$url;
    print " $ft\n";
}

@f=<$dir/*.tgz>;
$last=''; $lastpre='';
foreach(@f) {
    s/[\r\n]+//g;
    $full=$_;
    s/.*\/([^\/]+)$/$1/;
    ($pre,$ver)=split '_';
    processIt if ($pre ne $lastpre && $lastpre ne '');
    $last=$_;
    $lastfull=$full;
    $lastpre=$pre;
}
processIt if ($last ne '');

open OUT,">$dir/PACKAGES";
print OUT $spkg;
close OUT;