#!/usr/bin/perl
# Generate a debian/control from the control stub, the kernel-versions
# files, and the package-list.
use strict;
use warnings;

use File::Basename;
use lib dirname (__FILE__);
use KernelWedge qw(CONFIG_DIR CONTROL_FIELDS
		   read_package_lists for_each_package package_enabled);

my @builddeps;

die 'invalid arguments' if @ARGV != 3;
my $versions = [[@ARGV]];
my $packages = read_package_lists();

for_each_package($packages, $versions, sub {
	my ($arch, $kernelversion, $flavour, $template) = @_;

	my %override;
	$override{Architecture}=$arch;
	$override{Package}=$template->("Package")."-".$kernelversion."-".$flavour."-di";
	$override{'Package-Type'}="udeb";
	$override{'Kernel-Version'}=$kernelversion."-".$flavour;

	print "\n";
		
	if (! defined $template->("Section") || $template->("Section") !~ /debian-installer$/) {
		$override{Section}="debian-installer";
	}

	if (defined $template->("Depends")) {
		$override{Depends}=join(", ",
				   map { $_."-".$kernelversion."-".$flavour."-di" }
				   # Remove force marker.
				   map { s/!$//; $_ }
				   # If the dep is not built for this arch,
				   # skip it, unless it's forced.
				   grep { package_enabled($packages, $_, $arch, $flavour) || /!$/ }
				   split(", ", $template->("Depends")));
	}
		
	foreach my $field (CONTROL_FIELDS) {
		my $value = $override{$field} || $template->($field);
		if ($field eq 'Provides') {
			if (defined $value) {
				print $field.": ".$template->("Package").", ".$value."\n";
			}
			else {
				print $field.": ".$template->("Package")."\n";
			}
		}
		else {
			print $field.": ".$value."\n" if defined $value;
		}
	}
});
