]> xenbits.xensource.com Git - people/aperard/osstest.git/commitdiff
backports handling: Refactor kernel deb handling
authorIan Jackson <ian.jackson@eu.citrix.com>
Tue, 17 Jan 2017 15:08:21 +0000 (15:08 +0000)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Sun, 22 Jan 2017 23:44:34 +0000 (23:44 +0000)
Introduce private function $kdeb->().  No functional change.

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Osstest/Debian.pm

index 52527bf3ab9ef01a388ea8acd65f98d644bf57f1..5a083c296b1a8434b1047343caf3bf3ee68e3c1f 100644 (file)
@@ -1114,32 +1114,45 @@ END
        $kp = "need-kernel-deb-wheezy-backports" if $kp eq "need-kernel-deb-armmp";
        $kp =~ s/need-kernel-deb-$ho->{Suite}-// or next;
 
-       my $kern = "$d_i/$kp.deb";
-       my $kurl = create_webfile($ho, "kernel", sub {
-           copy($kern, $_[0])
-               or die "Copy kernel $kern failed: $!";
-        });
-
-       my $ird = "$d_i/initramfs-tools.deb";
-       my $iurl = create_webfile($ho, "initramfs-tools", sub {
-           copy($ird, $_[0])
-               or die "Copy initramfs-tools $ird failed: $!";
-        });
-
-       preseed_hook_command($ho, 'late_command', $sfx, <<END);
+        my $cmds = <<END;
 #!/bin/sh
 set -ex
 
 r=/target
 
-$preseed_wget -O \$r/tmp/kern.deb $kurl
-$preseed_wget -O \$r/tmp/initramfs-tools.deb $iurl
+END
+
+        my @kdebs;
+        my $kdeb = sub {
+            my ($what, $file) = @_;
+
+            logm("for late_command using $what $file");
+            my $furl = create_webfile($ho, $what, sub {
+               copy($file, $_[0]) or die "Copy $what $file failed: $!";
+            });
+            my $tmpfn = "/tmp/$what.deb";
+
+            $cmds .= <<END;
+$preseed_wget -O \$r$tmpfn $furl
+END
+            push @kdebs, $tmpfn;
+        };
+
+        my $kern = "$d_i/$kp.deb";
+        $kdeb->("kernel", $kern);
+
+        my $ird = "$d_i/initramfs-tools.deb";
+        $kdeb->("initramfs-tools", $ird);
+
+        $cmds .= <<END;
 
 # This will fail due to dependencies...
-in-target dpkg -i /tmp/kern.deb /tmp/initramfs-tools.deb || true
+in-target dpkg -i @kdebs || true
 # ... Now fix everything up...
 in-target apt-get install -f -y
 END
+
+       preseed_hook_command($ho, 'late_command', $sfx, $cmds);
     }
 
     if ( $ho->{Flags}{'need-uboot-bootscr'} ) {