[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [OSSTEST v6 04/24] Debian: refactor code to add preseed commands to the preseed file



Call it from ts-debian-hvm-install.

This means that, in future, ts-debian-di-install can use
preseed_hook_command and preseed_hook_installscript.

The existing opencoded use of d-i/late_command in the guest preseed
needs to become a preseed_hook_command so as not to clash with the use
of preseed_hook_cmds().

This requires also adding a #! line and the "set -ex" boilerplate
which in turn requires slightly rewriting the /boot/EFI handling part
to also work if the system is not installed for EFI (in which case
grubx64.efi isn't installed). Previously this would have needlessly
created the directory and then ignored the error from cp.

The ssh authorized keys bit isn't touched since it works as is and
will go away in a subsequent patch.

Apart from no longer creating /target/boot/efi/EFI/boot when it is not
needed there is no functional change for now.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Cc: longtaox.pang@xxxxxxxxx
---
v6: Move existing d-i/late_command preseed to use preseed_hook_command
v5: Extended commit message
v3: New patch
---
 Osstest/Debian.pm     | 16 +++++++++++-----
 ts-debian-hvm-install | 20 +++++++++++++++-----
 2 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/Osstest/Debian.pm b/Osstest/Debian.pm
index acdaaa8..0656ba4 100644
--- a/Osstest/Debian.pm
+++ b/Osstest/Debian.pm
@@ -37,7 +37,7 @@ BEGIN {
                       %preseed_cmds
                       preseed_base
                       preseed_create
-                      preseed_hook_command preseed_hook_installscript
+                      preseed_hook_command preseed_hook_installscript 
preseed_hook_cmds
                       di_installcmdline_core
                       );
     %EXPORT_TAGS = ( );
@@ -913,10 +913,7 @@ d-i partman-auto/expert_recipe string                      
                \\
 
 END
 
-    foreach my $di_key (keys %preseed_cmds) {
-        $preseed_file .= "d-i preseed/$di_key string ".
-            (join ' && ', @{ $preseed_cmds{$di_key} }). "\n";
-    }
+    $preseed_file .= preseed_hook_cmds();
 
     if ($ho->{Flags}{'no-di-kernel'}) {
        $preseed_file .= <<END;
@@ -960,4 +957,13 @@ chmod +x '$installer_pathname'
 END
 }
 
+sub preseed_hook_cmds () {
+    my $preseed;
+    foreach my $di_key (keys %preseed_cmds) {
+        $preseed .= "d-i preseed/$di_key string ".
+            (join ' && ', @{ $preseed_cmds{$di_key} }). "\n";
+    }
+    return $preseed;
+}
+
 1;
diff --git a/ts-debian-hvm-install b/ts-debian-hvm-install
index cfd5144..c5e094c 100755
--- a/ts-debian-hvm-install
+++ b/ts-debian-hvm-install
@@ -70,13 +70,23 @@ d-i partman-auto/expert_recipe string \\
                 .
 
 d-i apt-setup/cdrom/set-first boolean false
+END
 
-d-i preseed/late_command string \\
-        in-target mkdir -p /boot/efi/EFI/boot; \\
-        in-target cp /boot/efi/EFI/debian/grubx64.efi 
/boot/efi/EFI/boot/bootx64.efi ;\\
-        in-target mkdir -p /root/.ssh; \\
-        in-target sh -c "echo -e '$authkeys'> /root/.ssh/authorized_keys";
+preseed_hook_command($gho, 'late_command', '', <<END);
+#!/bin/sh
+set -ex
+
+b=/target/boot/efi/EFI
+if [ -e \$b/debian/grubx64.efi ] ; then
+    mkdir -p \$b/boot
+    cp \$b/debian/grubx64.efi \$b/boot/bootx64.efi
+fi
+in-target mkdir -p /root/.ssh
+in-target sh -c "echo -e '$authkeys'> /root/.ssh/authorized_keys"
 END
+
+    $preseed_file .= preseed_hook_cmds();
+
     return $preseed_file;
 }
 
-- 
2.1.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.