From bc982869dd3e69ffd374fd968d378b5d954f66e8 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Thu, 22 Feb 2024 11:13:57 +0100 Subject: OvmfPkg/CI: copy shell to virtual drive Place the EFI shell as EFI/BOOT/BOOT{ARCH}.EFI on the virtual drive. This allows the "run to shell" CI test case to work even in case the shell is not included in the firmware image. This is needed because an followup patch will exclude the shell from secure boot enabled firmware images. Signed-off-by: Gerd Hoffmann Acked-by: Laszlo Ersek Acked-by: Jiewen Yao Message-Id: <20240222101358.67818-12-kraxel@redhat.com> --- OvmfPkg/PlatformCI/PlatformBuildLib.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/PlatformCI/PlatformBuildLib.py b/OvmfPkg/PlatformCI/PlatformBuildLib.py index f829738cdd..00d454954b 100644 --- a/OvmfPkg/PlatformCI/PlatformBuildLib.py +++ b/OvmfPkg/PlatformCI/PlatformBuildLib.py @@ -5,6 +5,7 @@ # SPDX-License-Identifier: BSD-2-Clause-Patent ## import os +import shutil import logging import io @@ -181,7 +182,8 @@ class PlatformBuilder( UefiBuilder, BuildSettingsManager): def FlashRomImage(self): VirtualDrive = os.path.join(self.env.GetValue("BUILD_OUTPUT_BASE"), "VirtualDrive") - os.makedirs(VirtualDrive, exist_ok=True) + VirtualDriveBoot = os.path.join(VirtualDrive, "EFI", "BOOT") + os.makedirs(VirtualDriveBoot, exist_ok=True) OutputPath_FV = os.path.join(self.env.GetValue("BUILD_OUTPUT_BASE"), "FV") if (self.env.GetValue("QEMU_SKIP") and @@ -189,6 +191,14 @@ class PlatformBuilder( UefiBuilder, BuildSettingsManager): logging.info("skipping qemu boot test") return 0 + # copy shell to VirtualDrive + for arch in self.env.GetValue("TARGET_ARCH").split(): + src = os.path.join(self.env.GetValue("BUILD_OUTPUT_BASE"), arch, "Shell.efi") + dst = os.path.join(VirtualDriveBoot, f'BOOT{arch}.EFI') + if os.path.exists(src): + logging.info("copy %s -> %s", src, dst) + shutil.copyfile(src, dst) + # # QEMU must be on the path # -- cgit v1.2.3