From 39056384375b791bd8b65afe6edb2edfdc500674 Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Thu, 22 May 2025 17:37:58 +0100 Subject: [PATCH] CI: Use bash arrays to simplify dom0 rootfs construction MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For Qubes, this requires switching from sh to bash. This reduces the number of times the target filename needs to be written to 1. Expand the comment to explain the concatenation constraints. No functional change. Signed-off-by: Andrew Cooper Reviewed-by: Stefano Stabellini Reviewed-by: Marek Marczykowski-Górecki --- automation/scripts/qubes-x86-64.sh | 18 ++++++++++++----- .../scripts/xilinx-smoke-dom0-x86_64.sh | 20 ++++++++++++------- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/automation/scripts/qubes-x86-64.sh b/automation/scripts/qubes-x86-64.sh index 8e86940c6e..f338a67e05 100755 --- a/automation/scripts/qubes-x86-64.sh +++ b/automation/scripts/qubes-x86-64.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash set -ex -o pipefail @@ -22,6 +22,8 @@ domU_type="pvh" domU_vif="'bridge=xenbr0'," domU_extra_config= retrieve_xml= +dom0_rootfs_extra_comp=() +dom0_rootfs_extra_uncomp=() case "${test_variant}" in ### test: smoke test & smoke test PVH & smoke test HVM & smoke test PVSHIM @@ -187,10 +189,16 @@ Kernel \r on an \m (\l) rm -rf rootfs fi -# Dom0 rootfs -cp binaries/ucode.cpio binaries/dom0-rootfs.cpio.gz -cat binaries/rootfs.cpio.gz >> binaries/dom0-rootfs.cpio.gz -cat binaries/xen-tools.cpio.gz >> binaries/dom0-rootfs.cpio.gz +# Dom0 rootfs. The order of concatenation is important; ucode wants to come +# first, and all uncompressed must be ahead of compressed. +dom0_rootfs_parts=( + binaries/ucode.cpio + "${dom0_rootfs_extra_uncomp[@]}" + binaries/rootfs.cpio.gz + binaries/xen-tools.cpio.gz + "${dom0_rootfs_extra_comp[@]}" +) +cat "${dom0_rootfs_parts[@]}" > binaries/dom0-rootfs.cpio.gz # test-local configuration mkdir -p rootfs diff --git a/automation/scripts/xilinx-smoke-dom0-x86_64.sh b/automation/scripts/xilinx-smoke-dom0-x86_64.sh index 8f02fa73bd..2d4fe43509 100755 --- a/automation/scripts/xilinx-smoke-dom0-x86_64.sh +++ b/automation/scripts/xilinx-smoke-dom0-x86_64.sh @@ -28,6 +28,8 @@ extra = "root=/dev/ram0 console=hvc0" memory = 512 ' DOMU_CFG_EXTRA="" +dom0_rootfs_extra_comp=() +dom0_rootfs_extra_uncomp=() # Select test variant. if [ "${TEST}" = "ping" ]; then @@ -71,6 +73,7 @@ do sleep 1 done | argo-exec -p 28333 -d 0 -- /bin/echo " + dom0_rootfs_extra_comp+=(binaries/argo.cpio.gz) DOM0_CMD=" insmod /lib/modules/\$(uname -r)/updates/xen-argo.ko xl -vvv create /etc/xen/domU.cfg @@ -103,13 +106,16 @@ find . | cpio -H newc -o | gzip >> ../binaries/domU-rootfs.cpio.gz cd .. rm -rf rootfs -# Dom0 rootfs -cp binaries/ucode.cpio binaries/dom0-rootfs.cpio.gz -cat binaries/rootfs.cpio.gz >> binaries/dom0-rootfs.cpio.gz -cat binaries/xen-tools.cpio.gz >> binaries/dom0-rootfs.cpio.gz -if [[ "${TEST}" == argo ]]; then - cat binaries/argo.cpio.gz >> binaries/dom0-rootfs.cpio.gz -fi +# Dom0 rootfs. The order of concatenation is important; ucode wants to come +# first, and all uncompressed must be ahead of compressed. +dom0_rootfs_parts=( + binaries/ucode.cpio + "${dom0_rootfs_extra_uncomp[@]}" + binaries/rootfs.cpio.gz + binaries/xen-tools.cpio.gz + "${dom0_rootfs_extra_comp[@]}" +) +cat "${dom0_rootfs_parts[@]}" > binaries/dom0-rootfs.cpio.gz # test-local configuration mkdir -p rootfs