[error]
when no job now, $initrds is null, execute my-qemu.sh will hangs.
lys@crystal ~/compass-ci/providers% ./my-qemu.sh
hostname: vm-2p8g.lys-3917841
mac: 0a-4b-33-a0-96-69
DoneDone % Total % Received % Xferd Average Speed Time Time Time
Current
Dload Upload Total Spent Left Speed
100 79 100 79 0 0 19750 0 --:--:-- --:--:-- --:--:-- 19750
lys@crystal ~/compass-ci/providers/qemu% cat --help
cat Copy standard input to standard output.
when input is null, script will hang to waiting for input.
[how]
function set_options():
cat $initrds > $initrd
before: execut cat command, then check
after: check kernel, check initrds, if not null, execute cat command.
in addition, check_option_value -> check_kernel, check_initrds, check_qemu convenient to call as needed.
Signed-off-by: Liu Yinsi <liuyinsi(a)163.com>
---
providers/qemu/kvm.sh | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/providers/qemu/kvm.sh b/providers/qemu/kvm.sh
index 4d05964..b4e87fc 100755
--- a/providers/qemu/kvm.sh
+++ b/providers/qemu/kvm.sh
@@ -53,7 +53,7 @@ parse_ipxe_script()
done < $ipxe_script
}
-check_option_value()
+check_kernel()
{
[ -n "$kernel" ] || {
log_info "Can not find job for current hostname: $hostname."
@@ -64,10 +64,16 @@ check_option_value()
log_error "Can not find kernel file or kernel file is empty: $kernel."
exit 1
}
-
+}
+
+check_qemu()
+{
# debian has both qemu-system-x86_64 and qemu-system-riscv64 command
[[ $kernel =~ 'riscv64' ]] && qemu=qemu-system-riscv64
+}
+check_initrds()
+{
[ -n "$initrds" ] || {
log_error "The current initrds is null."
exit 1
@@ -118,6 +124,8 @@ set_qemu()
do
command -v "$qemu" > /dev/null && break
done
+
+ check_qemu
}
print_message()
@@ -209,8 +217,10 @@ write_logfile
parse_ipxe_script
+check_kernel
+check_initrds
+
set_options
-check_option_value
print_message
--
2.23.0