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 <kraxel@redhat.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Acked-by: Jiewen Yao <Jiewen.yao@intel.com>
Message-Id: <20240222101358.67818-12-kraxel@redhat.com>
This commit is contained in:
Gerd Hoffmann 2024-02-22 11:13:57 +01:00 committed by mergify[bot]
parent 8d7c48e0e7
commit bc982869dd

View File

@ -5,6 +5,7 @@
# SPDX-License-Identifier: BSD-2-Clause-Patent # SPDX-License-Identifier: BSD-2-Clause-Patent
## ##
import os import os
import shutil
import logging import logging
import io import io
@ -181,7 +182,8 @@ class PlatformBuilder( UefiBuilder, BuildSettingsManager):
def FlashRomImage(self): def FlashRomImage(self):
VirtualDrive = os.path.join(self.env.GetValue("BUILD_OUTPUT_BASE"), "VirtualDrive") 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") OutputPath_FV = os.path.join(self.env.GetValue("BUILD_OUTPUT_BASE"), "FV")
if (self.env.GetValue("QEMU_SKIP") and if (self.env.GetValue("QEMU_SKIP") and
@ -189,6 +191,14 @@ class PlatformBuilder( UefiBuilder, BuildSettingsManager):
logging.info("skipping qemu boot test") logging.info("skipping qemu boot test")
return 0 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 # QEMU must be on the path
# #