#!/usr/bin/perl

$cp=$0; $cp=~s/mksched$//; require "$cp/common.pl";

$cmd='./mk.chk';

@std=('R','stats','utils','graphics','grDevices','lattice','tcltk','base');
foreach (@std) { $pfn{$_}='R'; }

use DBI;

sub src2bin {
    my $dfn = $_[0];
    $dfn =~ s:CRAN/src/contrib:$target/bin/$ver:;
    $dfn =~ s/tar.gz$/tgz/;
    $dfn;
}

$dbargs = {AutoCommit => 1,
           PrintError => 1};

$dbh = DBI->connect("dbi:SQLite:dbname=$root/packages.db","","",$dbargs);
if ($dbh->err()) { die "ERROR on connect: $DBI::errstr\n"; }

$q = $dbh->prepare("SELECT name, file, depends, suggests, imports, enhances FROM pkgs;");
if ($dbh->err()) { die "ERROR on prepare query: $DBI::errstr\n"; }
$q->execute;
if ($dbh->err()) { die "ERROR on execute query: $DBI::errstr\n"; }
while ((@r = $q->fetchrow_array)) {
    $ad="$r[2],$r[3],$r[4]"; $ad=~s/\(.*?\)//g; $ad=~s/\s+//g; $ad=~s/,+/,/; $ad=~s/^,//; $ad=~s/,+$//;
    # print "$r[0] <- $ad\n";
    $p{$r[0]}=$ad;
    $pfn{$r[0]}=$r[1];
}
$q->finish;
$dbh->disconnect;
$all='';
foreach(sort(keys(%pfn))) {
    $fn=$pfn{$_};
    @dl = split ',', $p{$_};
    $cd = '';
    foreach $d (@dl) {
	if ($pfn{$d} eq '') {
	    $mp{$d}=1;
	} elsif ($pfn{$d} ne 'R') {
	    $dfn = src2bin($pfn{$d});
	    $cd .= " $dfn";
	}
    }
    print src2bin($fn).": $fn$cd\n\t$cmd $_\n\n";
    $all.=src2bin($fn)." ";
}

chop $all;
print "\n\nall: $all\n\n";
#print "$root/$target/bin/$ver/%.tgz: $root/CRAN/src/contrib/%.tar.gz\n\t./mk.chk `echo $@|sed 's:$root/$target/bin/$ver/::'|sed 's:_.*::'` 

print "# missing packages:";
foreach(sort(keys(%mp))) { print " $_"; }
print "\n";