#!/usr/bin/perl -w
# Create and populate the package build directories.

sub doit {
	print "\t".join(" ", @_)."\n";
	my $ret=(system(@_) >> 8);
	if ($ret != 0) {
		die "command exited with status $ret\n";
	}
}

my $hostarch=`dpkg-architecture -qDEB_HOST_ARCH`;
chomp $hostarch;

my $sourcedir=$ENV{SOURCEDIR};
if (! defined $sourcedir) {
	$sourcedir="";
}

open(KVERS, "kernel-versions") || die "kernel-versions: $!";
my $version = 0;
while (<KVERS>) {
	chomp;
	next if /^#/ || ! length;

	my ($arch, $kernelversion, $flavour, $installedname, $suffix, $builddep)=split(' ', $_, 6);
	if (! length $arch || ! length $kernelversion ||
	    ! length $installedname || ! length $flavour || 
	    ! length $builddep ) {
		die "parse error: $_";
	}
	next unless $arch eq $hostarch;

	my $extraname="";
	if ($suffix =~ /^[yY]/) {
		$extraname="-$kernelversion-$flavour";
	}
	elsif ($suffix =~ /^-.+/) {
		$extraname="$suffix";
	}
	
	if (-e "$sourcedir/boot/vmlinux-$installedname") {
		doit("install", "-D", "-m", 644,
			"$sourcedir/boot/vmlinux-$installedname",
			"debian/kernel-image-$kernelversion-$flavour-di/boot/vmlinux$extraname");
	}
	else {
		doit("install", "-D", "-m", 644,
			"$sourcedir/boot/vmlinuz-$installedname",
			"debian/kernel-image-$kernelversion-$flavour-di/boot/vmlinuz$extraname");
	}
	doit("install", "-D", "-m", 644,
		"$sourcedir/boot/System.map-$installedname",
		"debian/kernel-image-$kernelversion-$flavour-di/boot/System.map$extraname")
	      if -e "$sourcedir/boot/System.map-$installedname";

	# Include extra files to help the d-i build process build kernels
	# for certain subarchitectures. This is powerpc-specific at the
	# moment.
	if (-d "$sourcedir/usr/lib/kernel-image-$kernelversion-$flavour") {
		doit("install", "-d",
			"debian/kernel-image-$kernelversion-$flavour-di/usr/lib");
		doit("cp", "-a",
			"$sourcedir/usr/lib/kernel-image-$kernelversion-$flavour",
			"debian/kernel-image-$kernelversion-$flavour-di/usr/lib/kernel-image-$installedname");
	}

	doit("kernel-wedge", "copy-modules", $kernelversion, $flavour, $installedname);
	doit("kernel-wedge", "find-dups", "$kernelversion-$flavour");
}
close KVERS;
