#! /usr/bin/perl

-x 'inplace/bin/ghc-pkg' or die "inplace ghc-pkg not executable or present";

open PKG, 'inplace/bin/ghc-pkg list --simple-output |'
    or die "ghc-pkg list failed: $!";

my @ignored = ('ghc', 'rts');
my %ignored;
$ignored{$_}++ for @ignored;
my %pkgver;
my %renamed;
$renamed{"parsec"} = "parsec3";

my @pkgs;
while (<PKG>) {
    y/A-Z/a-z/;
    my $pkgstring = $_;
    LOOP: while ($pkgstring =~ m,([^ ]*?)-(\d[\d.]*) ?,g) {
	my $pkg = $1;
	next if exists $ignored{$pkg};
	$pkg = $renamed{$pkg} if exists $renamed{$pkg};
	$pkgver{$pkg} = $2;
	push @pkgs, $pkg;
    }
}
close PKG;

my $buf;
open DEV, '>debian/ghc.substvars';
$buf = "provided-devs=";
foreach (sort @pkgs) {$buf .= "libghc-$_-dev (= $pkgver{$_}), ";}
$buf =~ s#(.*), #$1#;
print DEV $buf."\n";

$buf = "conflicting-devs=";
foreach (sort @pkgs) {
	$buf .= "libghc-$_-dev (<< $pkgver{$_}+), ";
}
$buf =~ s#(.*), #$1#;
print DEV $buf."\n";
close DEV;

open PROF, '>debian/ghc-prof.substvars';
print PROF 'provided-profs=';
$buf = "";
foreach (@pkgs) {$buf .= "libghc-$_-prof (= $pkgver{$_}), ";}
$buf =~ s#(.*), #$1#;
print PROF $buf."\n";
close PROF;

open DOC, '>debian/ghc-doc.substvars';
print DOC 'provided-docs=';
$buf = "";
foreach (@pkgs) {$buf .= "libghc-$_-doc (= $pkgver{$_}), ";}
$buf =~ s#(.*), #$1#;
print DOC $buf."\n";
close DOC;
