#!/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) {
		die "parse error: $_";
	}
	next unless $arch eq $hostarch;

	my $modlistdir="";
	if (-d "modules/$arch-$flavour") {
		$modlistdir="modules/$arch-$flavour";
	}
	elsif (-d "modules/$flavour") {
		$modlistdir="modules/$flavour";
	}
	else {
		$modlistdir="modules/$arch";
	}

	my $extraname="";
	if ($suffix =~ /^[yY]/) {
		$extraname="-$kernelversion-$flavour";
	}
	elsif ($suffix =~ /^-.+/) {
		$extraname="$suffix";
	}
	
	if (-e "$modlistdir/kernel-image") {
		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.
		my $libdir;
		if (-d "$sourcedir/usr/lib/kernel-image-$kernelversion-$flavour") {
			$libdir = "kernel-image";
		} elsif (-d "$sourcedir/usr/lib/linux-image-$kernelversion-$flavour") {
			$libdir = "linux-image";
		}

		if (defined $libdir) {
			doit("install", "-d",
				"debian/kernel-image-$kernelversion-$flavour-di/usr/lib");
			doit("cp", "-a",
				"$sourcedir/usr/lib/$libdir-$kernelversion-$flavour",
				"debian/kernel-image-$kernelversion-$flavour-di/usr/lib/$libdir-$installedname");
		}
	}

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