$ git diff --patch-with-stat --summary 47dd268c9b32620a18f573ebea45547306d4c7ac..41490d0eeb4327542765d40698d5e39c2b6c3531
.abf.yml | 5 +-
VirtualBox-5.0.10-no-bundles.patch | 114 +++------
boot-efi-boot.patch | 253 ++++++++++++++++++++
firmware-build-fixes.patch | 374 ++++++++++++++++++++++++++++++
vbox-6.1.6-firmware-build-python3.9.patch | 46 ++++
virtualbox-6.1.16-python3.9.patch | 12 +
virtualbox.spec | 88 ++++---
7 files changed, 779 insertions(+), 113 deletions(-)
create mode 100644 boot-efi-boot.patch
create mode 100644 firmware-build-fixes.patch
create mode 100644 vbox-6.1.6-firmware-build-python3.9.patch
create mode 100644 virtualbox-6.1.16-python3.9.patch
diff --git a/.abf.yml b/.abf.yml
index a4fa8ce..d2923a0 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,5 +1,6 @@
sources:
os_openmandriva.png: 3c1c957c644369db0009773c895fbbb0617d5785
os_openmandriva_64.png: 80cce1aee0eea3e7aed9ee36d5829c0f0fa50fd4
- UserManual.pdf: 4e24e65106a3f6581139d809930ce416d18c41f6
- VirtualBox-6.1.12a.tar.bz2: e987efb4b6f0b074b2aa5f61a471f0aacb5edf14
+ VirtualBox-6.1.16.tar.bz2: 526fdb768335b71c534f40c593a8390e8ddbe450
+ UserManual.pdf: 4a446d2d5b434184df9a41feff7bb3db59fd023a
+ openssl-1.1.1h.tar.gz: 8d0d099e8973ec851368c8c775e05e1eadca1794
diff --git a/VirtualBox-5.0.10-no-bundles.patch b/VirtualBox-5.0.10-no-bundles.patch
index 1fda3e3..e22d9ee 100644
--- a/VirtualBox-5.0.10-no-bundles.patch
+++ b/VirtualBox-5.0.10-no-bundles.patch
@@ -1,7 +1,7 @@
-diff -Naur VirtualBox-6.0.14/Config.kmk VirtualBox-6.0.14.tpg/Config.kmk
---- VirtualBox-6.0.14/Config.kmk 2019-10-10 18:25:35.000000000 +0000
-+++ VirtualBox-6.0.14.tpg/Config.kmk 2019-10-31 15:08:08.235983271 +0000
-@@ -4069,23 +4069,27 @@
+diff -up VirtualBox-6.1.16/Config.kmk.14~ VirtualBox-6.1.16/Config.kmk
+--- VirtualBox-6.1.16/Config.kmk.14~ 2020-10-16 18:27:46.000000000 +0200
++++ VirtualBox-6.1.16/Config.kmk 2020-10-28 14:47:22.514617605 +0100
+@@ -4079,23 +4079,27 @@ VBOXLNX32GUEST_SUFF_LIB = .a
# SDKs for external libraries.
#
SDK_VBOX_LIBXML2 = .
@@ -34,7 +34,18 @@ diff -Naur VirtualBox-6.0.14/Config.kmk VirtualBox-6.0.14.tpg/Config.kmk
SDK_VBOX_ZLIB_DEFS.linux ?= _LARGEFILE64_SOURCE
endif
-@@ -4134,28 +4138,28 @@
+@@ -4112,8 +4116,8 @@ if1of ($(KBUILD_TARGET), os2 win) # Not
+ endif
+
+ SDK_VBOX_LZF = .
+-SDK_VBOX_LZF_INCS ?= $(PATH_ROOT)/src/libs/liblzf-3.4
+-SDK_VBOX_LZF_LIBS ?= $(PATH_STAGE_LIB)/VBox-liblzf$(VBOX_SUFF_LIB)
++SDK_VBOX_LZF_INCS ?= $(pkg-config lzf --variable=includedir)
++SDK_VBOX_LZF_LIBS ?= $(pkg-config lzf --libs)
+
+ SDK_VBOX_LZF-x86 = .
+ SDK_VBOX_LZF-x86_EXTENDS = VBOX_LZF
+@@ -4158,28 +4162,28 @@ endif
ifdef VBOX_WITH_LIBCURL
SDK_VBOX_LIBCURL = .
@@ -63,84 +74,27 @@ diff -Naur VirtualBox-6.0.14/Config.kmk VirtualBox-6.0.14.tpg/Config.kmk
ifdef VBOX_WITH_LIBOPUS
SDK_VBOX_OPUS = .
-- SDK_VBOX_OPUS_DEFAULT_INCS := $(PATH_ROOT)/src/libs/libopus-1.2.1/include
+ SDK_VBOX_OPUS_DEFAULT_INCS := $(PATH_ROOT)/src/libs/libopus-1.2.1/include
- SDK_VBOX_OPUS_INCS ?= $(SDK_VBOX_OPUS_DEFAULT_INCS)
- SDK_VBOX_OPUS_LIBS ?= $(PATH_STAGE_LIB)/VBox-libopus$(VBOX_SUFF_LIB)
-+ SDK_VBOX_OPUS_DEFAULT_INCS := $(PATH_ROOT)/src/libs/libvpx-1.2.1/include
+ SDK_VBOX_OPUS_INCS ?= $(pkg-config opus --variable=includedir)
+ SDK_VBOX_OPUS_LIBS ?= $(pkg-config opus --libs)
endif
- #
-@@ -5398,7 +5402,7 @@
- $(PATH_STAGE_LIB)/VBox-zlib-static$(VBOX_SUFF_LIB)
- else
- TEMPLATE_VBoxR3Static_LIBS += \
-- $(PATH_STAGE_LIB)/VBox-liblzf$(VBOX_SUFF_LIB) \
-+ $(SDK_VBOX_LIBLZF_LIBS) \
- $(SDK_VBOX_ZLIB_LIBS)
- if1of ($(KBUILD_TARGET),darwin freebsd)
- TEMPLATE_VBoxR3Static_LIBS += iconv
-diff -Naur VirtualBox-6.0.14/src/VBox/Runtime/Makefile.kmk VirtualBox-6.0.14.tpg/src/VBox/Runtime/Makefile.kmk
---- VirtualBox-6.0.14/src/VBox/Runtime/Makefile.kmk 2019-10-10 18:35:56.000000000 +0000
-+++ VirtualBox-6.0.14.tpg/src/VBox/Runtime/Makefile.kmk 2019-10-31 15:08:08.237983271 +0000
-@@ -292,7 +292,7 @@
- include \
- $(SDK_VBOX_ZLIB_INCS)
- RuntimeR3_INCS += \
-- $(PATH_ROOT)/src/libs/liblzf-3.4
-+ $(SDK_VBOX_LIBLZF_INCS)
-
- # RuntimeR3_INCS.solaris = \
- # /usr/include
-@@ -2167,7 +2167,7 @@
- VBoxRT_INCS.$(KBUILD_TARGET) := $(RuntimeR3_INCS.$(KBUILD_TARGET))
- VBoxRT_INCS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH) := $(RuntimeR3_INCS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH))
- VBoxRT_LIBS = \
-- $(PATH_STAGE_LIB)/VBox-liblzf$(VBOX_SUFF_LIB)
-+ $(SDK_VBOX_LIBLZF_LIBS)
- if1of ($(KBUILD_TARGET_ARCH), amd64 x86)
- VBoxRT_LIBS += \
- $(PATH_STAGE_LIB)/SUPR3$(VBOX_SUFF_LIB)
-@@ -2314,7 +2314,7 @@
- VBoxRT-x86_SDKS += VBOX_OPENSSL-x86
-
- VBoxRT-x86_LIBS = \
-- $(PATH_STAGE_LIB)/VBox-liblzf-x86$(VBOX_SUFF_LIB)
-+ $(SDK_VBOX_LIBLZF_LIBS)
- if1of ($(KBUILD_TARGET_ARCH), amd64 x86)
- VBoxRT-x86_LIBS += \
- $(PATH_STAGE_LIB)/SUPR3-x86$(VBOX_SUFF_LIB)
-diff -Naur VirtualBox-6.0.14/src/VBox/Storage/testcase/Makefile.kmk VirtualBox-6.0.14.tpg/src/VBox/Storage/testcase/Makefile.kmk
---- VirtualBox-6.0.14/src/VBox/Storage/testcase/Makefile.kmk 2019-10-10 18:36:29.000000000 +0000
-+++ VirtualBox-6.0.14.tpg/src/VBox/Storage/testcase/Makefile.kmk 2019-10-31 15:11:22.649969762 +0000
-@@ -137,7 +137,7 @@
- $(PATH_STAGE_LIB)/VBox-zlib-static$(VBOX_SUFF_LIB)
- else
- vbox-img_LIBS += \
-- $(PATH_STAGE_LIB)/VBox-liblzf$(VBOX_SUFF_LIB) \
-+ $(SDK_VBOX_LIBLZF_LIBS) \
- $(SDK_VBOX_ZLIB_LIBS)
- endif
- ifeq ($(KBUILD_TARGET),linux)
-@@ -183,7 +183,7 @@
- $(PATH_STAGE_LIB)/VBox-zlib-static$(VBOX_SUFF_LIB)
- else
- vdkeystoremgr_LIBS += \
-- $(PATH_STAGE_LIB)/VBox-liblzf$(VBOX_SUFF_LIB) \
-+ $(SDK_VBOX_LIBLZF_LIBS) \
- $(SDK_VBOX_ZLIB_LIBS)
- endif
- ifeq ($(KBUILD_TARGET),linux)
-diff -Naur VirtualBox-6.0.14/src/libs/Makefile.kmk VirtualBox-6.0.14.tpg/src/libs/Makefile.kmk
---- VirtualBox-6.0.14/src/libs/Makefile.kmk 2019-10-10 18:36:58.000000000 +0000
-+++ VirtualBox-6.0.14.tpg/src/libs/Makefile.kmk 2019-10-31 15:08:08.237983271 +0000
-@@ -25,7 +25,7 @@
- #
-
- # Compression libs used by IPRT and <what was it again?>.
--include $(PATH_SUB_CURRENT)/liblzf-3.4/Makefile.kmk
-+#include $(PATH_SUB_CURRENT)/liblzf-3.4/Makefile.kmk
- if !defined(VBOX_ONLY_SDK) \
- && "$(SDK_VBOX_ZLIB_INCS)" == "$(PATH_ROOT)/src/libs/zlib-1.2.11"
- include $(PATH_SUB_CURRENT)/zlib-1.2.11/Makefile.kmk
+ ifdef VBOX_WITH_LIBFUSE
+diff -up VirtualBox-6.1.16/src/libs/Makefile.kmk.14~ VirtualBox-6.1.16/src/libs/Makefile.kmk
+diff -up VirtualBox-6.1.16/src/VBox/Runtime/Makefile.kmk.14~ VirtualBox-6.1.16/src/VBox/Runtime/Makefile.kmk
+diff -up VirtualBox-6.1.16/src/VBox/Storage/testcase/Makefile.kmk.14~ VirtualBox-6.1.16/src/VBox/Storage/testcase/Makefile.kmk
+diff -up VirtualBox-6.1.16/src/VBox/Runtime/common/zip/zip.cpp.omv~ VirtualBox-6.1.16/src/VBox/Runtime/common/zip/zip.cpp
+--- VirtualBox-6.1.16/src/VBox/Runtime/common/zip/zip.cpp.omv~ 2020-10-28 15:14:24.586267674 +0100
++++ VirtualBox-6.1.16/src/VBox/Runtime/common/zip/zip.cpp 2020-10-28 15:14:38.189440790 +0100
+@@ -51,7 +51,9 @@
+ # include <zlib.h>
+ #endif
+ #ifdef RTZIP_USE_LZF
++extern "C" {
+ # include <lzf.h>
++}
+ # include <iprt/crc.h>
+ #endif
+ #ifdef RTZIP_USE_LZJB
diff --git a/boot-efi-boot.patch b/boot-efi-boot.patch
new file mode 100644
index 0000000..237f442
--- /dev/null
+++ b/boot-efi-boot.patch
@@ -0,0 +1,253 @@
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgIa32.dsc VirtualBox-6.1.16-efi/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgIa32.dsc
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgIa32.dsc 2020-10-16 18:34:50.000000000 +0200
++++ VirtualBox-6.1.16-efi/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgIa32.dsc 2020-11-18 13:48:01.686422876 +0100
+@@ -873,7 +873,6 @@
+ <LibraryClasses>
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+ }
+- VBoxPkg/VBoxFsDxe/VBoxIso9660.inf
+ VBoxPkg/VBoxFsDxe/VBoxHfs.inf
+ VBoxPkg/VBoxSysTables/VBoxSysTables.inf
+ VBoxPkg/VBoxAppleSim/VBoxAppleSim.inf
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgIa32.fdf VirtualBox-6.1.16-efi/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgIa32.fdf
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgIa32.fdf 2020-10-16 18:34:50.000000000 +0200
++++ VirtualBox-6.1.16-efi/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgIa32.fdf 2020-11-18 13:48:01.684422863 +0100
+@@ -278,7 +278,6 @@
+ !ifdef $(VBOX)
+ INF VBoxPkg/VBoxVgaMiniPortDxe/VBoxVgaMiniPortDxe.inf
+ INF VBoxPkg/VBoxVgaDxe/VBoxVgaDxe.inf
+-INF VBoxPkg/VBoxFsDxe/VBoxIso9660.inf
+ INF VBoxPkg/VBoxFsDxe/VBoxHfs.inf
+ INF VBoxPkg/VBoxSysTables/VBoxSysTables.inf
+ INF VBoxPkg/VBoxAppleSim/VBoxAppleSim.inf
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgX64.dsc VirtualBox-6.1.16-efi/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgX64.dsc
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgX64.dsc 2020-10-16 18:34:50.000000000 +0200
++++ VirtualBox-6.1.16-efi/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgX64.dsc 2020-11-18 13:48:01.685422869 +0100
+@@ -879,7 +879,6 @@
+ <LibraryClasses>
+ PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
+ }
+- VBoxPkg/VBoxFsDxe/VBoxIso9660.inf
+ VBoxPkg/VBoxFsDxe/VBoxHfs.inf
+ VBoxPkg/VBoxSysTables/VBoxSysTables.inf
+ VBoxPkg/VBoxAppleSim/VBoxAppleSim.inf
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgX64.fdf VirtualBox-6.1.16-efi/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgX64.fdf
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgX64.fdf 2020-10-16 18:34:50.000000000 +0200
++++ VirtualBox-6.1.16-efi/src/VBox/Devices/EFI/Firmware/OvmfPkg/OvmfPkgX64.fdf 2020-11-18 13:48:01.685422869 +0100
+@@ -279,7 +279,6 @@
+ !ifdef $(VBOX)
+ INF VBoxPkg/VBoxVgaMiniPortDxe/VBoxVgaMiniPortDxe.inf
+ INF VBoxPkg/VBoxVgaDxe/VBoxVgaDxe.inf
+-INF VBoxPkg/VBoxFsDxe/VBoxIso9660.inf
+ INF VBoxPkg/VBoxFsDxe/VBoxHfs.inf
+ INF VBoxPkg/VBoxSysTables/VBoxSysTables.inf
+ INF VBoxPkg/VBoxAppleSim/VBoxAppleSim.inf
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxFsDxe/fsw_efi.c VirtualBox-6.1.16-efi/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxFsDxe/fsw_efi.c
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxFsDxe/fsw_efi.c 2020-10-16 18:35:19.000000000 +0200
++++ VirtualBox-6.1.16-efi/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxFsDxe/fsw_efi.c 2020-11-18 13:48:01.684422863 +0100
+@@ -58,11 +58,6 @@
+
+ #include "fsw_efi.h"
+
+-#ifdef VBOX
+-# include <IndustryStandard/ElTorito.h>
+-# include <IndustryStandard/Udf.h>
+-#endif
+-
+ #define DEBUG_LEVEL 0
+
+ #ifndef FSTYPE
+@@ -141,7 +136,7 @@
+ IN OUT UINTN *BufferSize,
+ OUT VOID *Buffer);
+
+-#if defined(VBOX) && defined(FSTYPE_HFS)
++#if defined(VBOX) && (FSTYPE == hfs)
+ extern fsw_status_t fsw_hfs_get_blessed_file(void *vol, struct fsw_string *path);
+ #endif
+
+@@ -265,128 +260,6 @@
+ return Status;
+ }
+
+-#if defined(VBOX) && !defined(FSTYPE_HFS)
+-/**
+- Find UDF volume identifiers in a Volume Recognition Sequence.
+-
+- @param[in] BlockIo BlockIo interface.
+- @param[in] DiskIo DiskIo interface.
+-
+- @retval EFI_SUCCESS UDF volume identifiers were found.
+- @retval EFI_NOT_FOUND UDF volume identifiers were not found.
+- @retval other Failed to perform disk I/O.
+-
+-**/
+-EFI_STATUS
+-FindUdfVolumeIdentifiers (
+- IN EFI_BLOCK_IO_PROTOCOL *BlockIo,
+- IN EFI_DISK_IO_PROTOCOL *DiskIo
+- )
+-{
+- EFI_STATUS Status;
+- UINT64 Offset;
+- UINT64 EndDiskOffset;
+- CDROM_VOLUME_DESCRIPTOR VolDescriptor;
+- CDROM_VOLUME_DESCRIPTOR TerminatingVolDescriptor;
+-
+- ZeroMem ((VOID *)&TerminatingVolDescriptor, sizeof (CDROM_VOLUME_DESCRIPTOR));
+-
+- //
+- // Start Volume Recognition Sequence
+- //
+- EndDiskOffset = MultU64x32 (BlockIo->Media->LastBlock,
+- BlockIo->Media->BlockSize);
+-
+- for (Offset = UDF_VRS_START_OFFSET; Offset < EndDiskOffset;
+- Offset += UDF_LOGICAL_SECTOR_SIZE) {
+- //
+- // Check if block device has a Volume Structure Descriptor and an Extended
+- // Area.
+- //
+- Status = DiskIo->ReadDisk (
+- DiskIo,
+- BlockIo->Media->MediaId,
+- Offset,
+- sizeof (CDROM_VOLUME_DESCRIPTOR),
+- (VOID *)&VolDescriptor
+- );
+- if (EFI_ERROR (Status)) {
+- return Status;
+- }
+-
+- if (CompareMem ((VOID *)VolDescriptor.Unknown.Id,
+- (VOID *)UDF_BEA_IDENTIFIER,
+- sizeof (VolDescriptor.Unknown.Id)) == 0) {
+- break;
+- }
+-
+- if ((CompareMem ((VOID *)VolDescriptor.Unknown.Id,
+- (VOID *)CDVOL_ID,
+- sizeof (VolDescriptor.Unknown.Id)) != 0) ||
+- (CompareMem ((VOID *)&VolDescriptor,
+- (VOID *)&TerminatingVolDescriptor,
+- sizeof (CDROM_VOLUME_DESCRIPTOR)) == 0)) {
+- return EFI_NOT_FOUND;
+- }
+- }
+-
+- //
+- // Look for "NSR0{2,3}" identifiers in the Extended Area.
+- //
+- Offset += UDF_LOGICAL_SECTOR_SIZE;
+- if (Offset >= EndDiskOffset) {
+- return EFI_NOT_FOUND;
+- }
+-
+- Status = DiskIo->ReadDisk (
+- DiskIo,
+- BlockIo->Media->MediaId,
+- Offset,
+- sizeof (CDROM_VOLUME_DESCRIPTOR),
+- (VOID *)&VolDescriptor
+- );
+- if (EFI_ERROR (Status)) {
+- return Status;
+- }
+-
+- if ((CompareMem ((VOID *)VolDescriptor.Unknown.Id,
+- (VOID *)UDF_NSR2_IDENTIFIER,
+- sizeof (VolDescriptor.Unknown.Id)) != 0) &&
+- (CompareMem ((VOID *)VolDescriptor.Unknown.Id,
+- (VOID *)UDF_NSR3_IDENTIFIER,
+- sizeof (VolDescriptor.Unknown.Id)) != 0)) {
+- return EFI_NOT_FOUND;
+- }
+-
+- //
+- // Look for "TEA01" identifier in the Extended Area
+- //
+- Offset += UDF_LOGICAL_SECTOR_SIZE;
+- if (Offset >= EndDiskOffset) {
+- return EFI_NOT_FOUND;
+- }
+-
+- Status = DiskIo->ReadDisk (
+- DiskIo,
+- BlockIo->Media->MediaId,
+- Offset,
+- sizeof (CDROM_VOLUME_DESCRIPTOR),
+- (VOID *)&VolDescriptor
+- );
+- if (EFI_ERROR (Status)) {
+- return Status;
+- }
+-
+- if (CompareMem ((VOID *)VolDescriptor.Unknown.Id,
+- (VOID *)UDF_TEA_IDENTIFIER,
+- sizeof (VolDescriptor.Unknown.Id)) != 0) {
+- return EFI_NOT_FOUND;
+- }
+-
+- return EFI_SUCCESS;
+-}
+-#endif
+-
+ static EFI_STATUS fsw_efi_ReMount(IN FSW_VOLUME_DATA *pVolume,
+ IN EFI_HANDLE ControllerHandle,
+ EFI_DISK_IO *pDiskIo,
+@@ -403,20 +276,6 @@
+ Status = fsw_efi_map_status(fsw_mount(pVolume, &fsw_efi_host_table,
+ &FSW_FSTYPE_TABLE_NAME(FSTYPE), &pVolume->vol),
+ pVolume);
+-#if defined(VBOX) && !defined(FSTYPE_HFS)
+- /*
+- * Don't give the iso9660 filesystem driver a chance to claim a volume which supports UDF
+- * or we loose booting capability from UDF volumes.
+- */
+- if (!EFI_ERROR(Status))
+- {
+- Status = FindUdfVolumeIdentifiers(pBlockIo, pDiskIo);
+- if (!EFI_ERROR(Status))
+- Status = EFI_UNSUPPORTED;
+- else
+- Status = EFI_SUCCESS;
+- }
+-#endif
+
+ if (!EFI_ERROR(Status)) {
+ // register the SimpleFileSystem protocol
+@@ -1127,9 +986,10 @@
+ *BufferSize = RequiredSize;
+ Status = EFI_SUCCESS;
+
+-#if defined(VBOX) && defined(FSTYPE_HFS)
++#ifdef VBOX
+ } else if (CompareGuid(InformationType, &gVBoxFsBlessedFileInfoGuid)) {
+
++# if FSTYPE == hfs
+ struct fsw_string StrBlessedFile;
+
+ fsw_status_t rc = fsw_hfs_get_blessed_file(Volume->vol, &StrBlessedFile);
+@@ -1150,6 +1010,7 @@
+ Status = EFI_SUCCESS;
+ }
+ else
++# endif
+ Status = EFI_UNSUPPORTED;
+ #endif
+
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxFsDxe/VBoxHfs.inf VirtualBox-6.1.16-efi/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxFsDxe/VBoxHfs.inf
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxFsDxe/VBoxHfs.inf 2020-10-16 18:35:19.000000000 +0200
++++ VirtualBox-6.1.16-efi/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxFsDxe/VBoxHfs.inf 2020-11-18 13:48:01.683422857 +0100
+@@ -78,8 +78,8 @@
+ gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLang
+
+ [BuildOptions.common]
+- GCC:*_*_*_CC_FLAGS = -DFSTYPE=hfs -DFSTYPE_HFS=1 -DEFI_LOG_ENABLED=1
++ GCC:*_*_*_CC_FLAGS = -DFSTYPE=hfs -DEFI_LOG_ENABLED=1
+ # -DFSW_DEBUG_LEVEL=3
+- INTEL:*_*_*_CC_FLAGS = -DFSTYPE=hfs -DFSTYPE_HFS=1 -DEFI_LOG_ENABLED=1
+- MSFT:*_*_*_CC_FLAGS = -DFSTYPE=hfs -DFSTYPE_HFS=1 -DEFI_LOG_ENABLED=1
++ INTEL:*_*_*_CC_FLAGS = -DFSTYPE=hfs -DEFI_LOG_ENABLED=1
++ MSFT:*_*_*_CC_FLAGS = -DFSTYPE=hfs -DEFI_LOG_ENABLED=1
+
diff --git a/firmware-build-fixes.patch b/firmware-build-fixes.patch
new file mode 100644
index 0000000..7eaa9a5
--- /dev/null
+++ b/firmware-build-fixes.patch
@@ -0,0 +1,374 @@
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/CryptoPkg.dec VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/CryptoPkg.dec
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/CryptoPkg.dec 2020-10-16 18:33:13.000000000 +0200
++++ VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/CryptoPkg.dec 2020-11-18 21:04:36.334226324 +0100
+@@ -22,7 +22,7 @@
+ [Includes.Common.Private]
+ Library/Include
+ Library/OpensslLib/openssl/include
+- Library/OpensslLib/openssl/crypto/include
++ Library/OpensslLib/openssl/include/crypto
+
+ [LibraryClasses]
+ ## @libraryclass Provides basic library functions for cryptographic primitives.
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/BaseCryptLib/Hash/CryptSm3.c VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/BaseCryptLib/Hash/CryptSm3.c
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/BaseCryptLib/Hash/CryptSm3.c 2020-10-16 18:33:13.000000000 +0200
++++ VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/BaseCryptLib/Hash/CryptSm3.c 2020-11-18 19:51:12.903414512 +0100
+@@ -7,7 +7,7 @@
+ **/
+
+ #include "InternalCryptLib.h"
+-#include "internal/sm3.h"
++#include "crypto/sm3.h"
+
+ /**
+ Retrieves the size, in bytes, of the context buffer required for SM3 hash operations.
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c 2020-10-16 18:33:14.000000000 +0200
++++ VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c 2020-11-18 19:52:15.682794783 +0100
+@@ -15,13 +15,13 @@
+ #include <openssl/asn1.h>
+ #include <openssl/x509.h>
+ #include <openssl/bio.h>
+-#include <internal/x509_int.h>
++#include <crypto/x509.h>
+ #include <openssl/pkcs7.h>
+ #include <openssl/bn.h>
+ #include <openssl/x509_vfy.h>
+ #include <openssl/pem.h>
+ #include <openssl/evp.h>
+-#include <internal/asn1_int.h>
++#include <crypto/asn1.h>
+
+ /**
+ This function will return the leaf signer certificate in a chain. This is
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/Include/CrtLibSupport.h VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/Include/CrtLibSupport.h
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/Include/CrtLibSupport.h 2020-10-16 18:33:14.000000000 +0200
++++ VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/Include/CrtLibSupport.h 2020-11-18 21:06:22.403935744 +0100
+@@ -14,6 +14,8 @@
+ #include <Library/BaseMemoryLib.h>
+ #include <Library/DebugLib.h>
+ #include <Library/PrintLib.h>
++// custom time_t defines breaks the build
++#include <bits/types/time_t.h>
+
+ #define OPENSSLDIR ""
+ #define ENGINESDIR ""
+@@ -85,7 +87,6 @@
+ //
+ typedef UINTN size_t;
+ typedef INTN ssize_t;
+-typedef INT32 time_t;
+ typedef UINT8 __uint8_t;
+ typedef UINT8 sa_family_t;
+ typedef UINT32 uid_t;
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/Include/crypto/dso_conf.h VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/Include/crypto/dso_conf.h
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/Include/crypto/dso_conf.h 1970-01-01 01:00:00.000000000 +0100
++++ VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/Include/crypto/dso_conf.h 2020-11-18 19:49:31.373799723 +0100
+@@ -0,0 +1,16 @@
++/* WARNING: do not edit! */
++/* Generated from include/crypto/dso_conf.h.in */
++/*
++ * Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved.
++ *
++ * Licensed under the OpenSSL license (the "License"). You may not use
++ * this file except in compliance with the License. You can obtain a copy
++ * in the file LICENSE in the source distribution or at
++ * https://www.openssl.org/source/license.html
++ */
++
++#ifndef OSSL_CRYPTO_DSO_CONF_H
++# define OSSL_CRYPTO_DSO_CONF_H
++# define DSO_NONE
++# define DSO_EXTENSION ".so"
++#endif
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/Include/openssl/opensslconf.h VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/Include/openssl/opensslconf.h
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/Include/openssl/opensslconf.h 2020-10-16 18:33:14.000000000 +0200
++++ VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/Include/openssl/opensslconf.h 2020-11-18 19:50:28.307144437 +0100
+@@ -94,9 +94,6 @@
+ #ifndef OPENSSL_RAND_SEED_NONE
+ # define OPENSSL_RAND_SEED_NONE
+ #endif
+-#ifndef OPENSSL_NO_AFALGENG
+-# define OPENSSL_NO_AFALGENG
+-#endif
+ #ifndef OPENSSL_NO_APPS
+ # define OPENSSL_NO_APPS
+ #endif
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf 2020-10-16 18:33:15.000000000 +0200
++++ VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf 2020-11-18 19:45:14.004242437 +0100
+@@ -33,7 +33,7 @@
+ $(OPENSSL_PATH)/crypto/aes/aes_misc.c
+ $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
+ $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
+- $(OPENSSL_PATH)/crypto/aes/aes_locl.h
++ $(OPENSSL_PATH)/crypto/aes/aes_local.h
+ $(OPENSSL_PATH)/crypto/aria/aria.c
+ $(OPENSSL_PATH)/crypto/arm_arch.h
+ $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
+@@ -104,7 +104,7 @@
+ $(OPENSSL_PATH)/crypto/asn1/charmap.h
+ $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
+ $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
+- $(OPENSSL_PATH)/crypto/asn1/asn1_locl.h
++ $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
+ $(OPENSSL_PATH)/crypto/async/arch/async_null.c
+ $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
+ $(OPENSSL_PATH)/crypto/async/arch/async_win.c
+@@ -114,7 +114,7 @@
+ $(OPENSSL_PATH)/crypto/async/async.c
+ $(OPENSSL_PATH)/crypto/async/async_err.c
+ $(OPENSSL_PATH)/crypto/async/async_wait.c
+- $(OPENSSL_PATH)/crypto/async/async_locl.h
++ $(OPENSSL_PATH)/crypto/async/async_local.h
+ $(OPENSSL_PATH)/crypto/bio/b_addr.c
+ $(OPENSSL_PATH)/crypto/bio/b_dump.c
+ $(OPENSSL_PATH)/crypto/bio/b_sock.c
+@@ -215,7 +215,7 @@
+ $(OPENSSL_PATH)/crypto/des/str2key.c
+ $(OPENSSL_PATH)/crypto/des/xcbc_enc.c
+ $(OPENSSL_PATH)/crypto/des/spr.h
+- $(OPENSSL_PATH)/crypto/des/des_locl.h
++ $(OPENSSL_PATH)/crypto/des/des_local.h
+ $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
+ $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
+ $(OPENSSL_PATH)/crypto/dh/dh_check.c
+@@ -230,7 +230,7 @@
+ $(OPENSSL_PATH)/crypto/dh/dh_prn.c
+ $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
+ $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
+- $(OPENSSL_PATH)/crypto/dh/dh_locl.h
++ $(OPENSSL_PATH)/crypto/dh/dh_local.h
+ $(OPENSSL_PATH)/crypto/dso/dso_dl.c
+ $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
+ $(OPENSSL_PATH)/crypto/dso/dso_err.c
+@@ -238,7 +238,7 @@
+ $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
+ $(OPENSSL_PATH)/crypto/dso/dso_vms.c
+ $(OPENSSL_PATH)/crypto/dso/dso_win32.c
+- $(OPENSSL_PATH)/crypto/dso/dso_locl.h
++ $(OPENSSL_PATH)/crypto/dso/dso_local.h
+ $(OPENSSL_PATH)/crypto/ebcdic.c
+ $(OPENSSL_PATH)/crypto/err/err.c
+ $(OPENSSL_PATH)/crypto/err/err_prn.c
+@@ -280,7 +280,7 @@
+ $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
+ $(OPENSSL_PATH)/crypto/evp/m_md2.c
+ $(OPENSSL_PATH)/crypto/evp/m_md4.c
+- $(OPENSSL_PATH)/crypto/md4/md4_locl.h
++ $(OPENSSL_PATH)/crypto/md4/md4_local.h
+ $(OPENSSL_PATH)/crypto/evp/m_md5.c
+ $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
+ $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
+@@ -304,7 +304,7 @@
+ $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
+ $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
+ $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
+- $(OPENSSL_PATH)/crypto/evp/evp_locl.h
++ $(OPENSSL_PATH)/crypto/evp/evp_local.h
+ $(OPENSSL_PATH)/crypto/ex_data.c
+ $(OPENSSL_PATH)/crypto/getenv.c
+ $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
+@@ -323,7 +323,7 @@
+ $(OPENSSL_PATH)/crypto/md4/md4_one.c
+ $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
+ $(OPENSSL_PATH)/crypto/md5/md5_one.c
+- $(OPENSSL_PATH)/crypto/md5/md5_locl.h
++ $(OPENSSL_PATH)/crypto/md5/md5_local.h
+ $(OPENSSL_PATH)/crypto/mem.c
+ $(OPENSSL_PATH)/crypto/mem_clr.c
+ $(OPENSSL_PATH)/crypto/mem_dbg.c
+@@ -412,7 +412,7 @@
+ $(OPENSSL_PATH)/crypto/rand/rand_lcl.h
+ $(OPENSSL_PATH)/crypto/rc4/rc4_enc.c
+ $(OPENSSL_PATH)/crypto/rc4/rc4_skey.c
+- $(OPENSSL_PATH)/crypto/rc4/rc4_locl.h
++ $(OPENSSL_PATH)/crypto/rc4/rc4_local.h
+ $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
+ $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
+ $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
+@@ -435,20 +435,20 @@
+ $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
+ $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
+ $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
+- $(OPENSSL_PATH)/crypto/rsa/rsa_locl.h
++ $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
+ $(OPENSSL_PATH)/crypto/sha/keccak1600.c
+ $(OPENSSL_PATH)/crypto/sha/sha1_one.c
+ $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
+ $(OPENSSL_PATH)/crypto/sha/sha256.c
+ $(OPENSSL_PATH)/crypto/sha/sha512.c
+- $(OPENSSL_PATH)/crypto/sha/sha_locl.h
++ $(OPENSSL_PATH)/crypto/sha/sha_local.h
+ $(OPENSSL_PATH)/crypto/siphash/siphash.c
+ $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
+ $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
+ $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
+ $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
+ $(OPENSSL_PATH)/crypto/sm3/sm3.c
+- $(OPENSSL_PATH)/crypto/sm3/sm3_locl.h
++ $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
+ $(OPENSSL_PATH)/crypto/sm4/sm4.c
+ $(OPENSSL_PATH)/crypto/stack/stack.c
+ $(OPENSSL_PATH)/crypto/s390x_arch.h
+@@ -462,7 +462,7 @@
+ $(OPENSSL_PATH)/crypto/ui/ui_null.c
+ $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
+ $(OPENSSL_PATH)/crypto/ui/ui_util.c
+- $(OPENSSL_PATH)/crypto/ui/ui_locl.h
++ $(OPENSSL_PATH)/crypto/ui/ui_local.h
+ $(OPENSSL_PATH)/crypto/uid.c
+ $(OPENSSL_PATH)/crypto/vms_rms.h
+ $(OPENSSL_PATH)/crypto/x509/by_dir.c
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/OpensslLib.inf VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/OpensslLib.inf
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/OpensslLib.inf 2020-10-16 18:33:15.000000000 +0200
++++ VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/OpensslLib.inf 2020-11-18 19:45:14.004242437 +0100
+@@ -34,7 +34,7 @@
+ $(OPENSSL_PATH)/crypto/aes/aes_misc.c
+ $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
+ $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
+- $(OPENSSL_PATH)/crypto/aes/aes_locl.h
++ $(OPENSSL_PATH)/crypto/aes/aes_local.h
+ $(OPENSSL_PATH)/crypto/aria/aria.c
+ $(OPENSSL_PATH)/crypto/arm_arch.h
+ $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
+@@ -105,7 +105,7 @@
+ $(OPENSSL_PATH)/crypto/asn1/charmap.h
+ $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
+ $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
+- $(OPENSSL_PATH)/crypto/asn1/asn1_locl.h
++ $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
+ $(OPENSSL_PATH)/crypto/async/arch/async_null.c
+ $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
+ $(OPENSSL_PATH)/crypto/async/arch/async_win.c
+@@ -113,7 +113,7 @@
+ $(OPENSSL_PATH)/crypto/async/async_err.c
+ $(OPENSSL_PATH)/crypto/async/async_wait.c
+ $(OPENSSL_PATH)/crypto/async/arch/async_win.h
+- $(OPENSSL_PATH)/crypto/async/async_locl.h
++ $(OPENSSL_PATH)/crypto/async/async_local.h
+ $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
+ $(OPENSSL_PATH)/crypto/async/arch/async_null.h
+ $(OPENSSL_PATH)/crypto/bio/b_addr.c
+@@ -216,7 +216,7 @@
+ $(OPENSSL_PATH)/crypto/des/str2key.c
+ $(OPENSSL_PATH)/crypto/des/xcbc_enc.c
+ $(OPENSSL_PATH)/crypto/des/spr.h
+- $(OPENSSL_PATH)/crypto/des/des_locl.h
++ $(OPENSSL_PATH)/crypto/des/des_local.h
+ $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
+ $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
+ $(OPENSSL_PATH)/crypto/dh/dh_check.c
+@@ -231,7 +231,7 @@
+ $(OPENSSL_PATH)/crypto/dh/dh_prn.c
+ $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
+ $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
+- $(OPENSSL_PATH)/crypto/dh/dh_locl.h
++ $(OPENSSL_PATH)/crypto/dh/dh_local.h
+ $(OPENSSL_PATH)/crypto/dso/dso_dl.c
+ $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
+ $(OPENSSL_PATH)/crypto/dso/dso_err.c
+@@ -239,7 +239,7 @@
+ $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
+ $(OPENSSL_PATH)/crypto/dso/dso_vms.c
+ $(OPENSSL_PATH)/crypto/dso/dso_win32.c
+- $(OPENSSL_PATH)/crypto/dso/dso_locl.h
++ $(OPENSSL_PATH)/crypto/dso/dso_local.h
+ $(OPENSSL_PATH)/crypto/ebcdic.c
+ $(OPENSSL_PATH)/crypto/err/err.c
+ $(OPENSSL_PATH)/crypto/err/err_prn.c
+@@ -304,7 +304,7 @@
+ $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
+ $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
+ $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
+- $(OPENSSL_PATH)/crypto/evp/evp_locl.h
++ $(OPENSSL_PATH)/crypto/evp/evp_local.h
+ $(OPENSSL_PATH)/crypto/ex_data.c
+ $(OPENSSL_PATH)/crypto/getenv.c
+ $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
+@@ -321,10 +321,10 @@
+ $(OPENSSL_PATH)/crypto/lhash/lhash_lcl.h
+ $(OPENSSL_PATH)/crypto/md4/md4_dgst.c
+ $(OPENSSL_PATH)/crypto/md4/md4_one.c
+- $(OPENSSL_PATH)/crypto/md4/md4_locl.h
++ $(OPENSSL_PATH)/crypto/md4/md4_local.h
+ $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
+ $(OPENSSL_PATH)/crypto/md5/md5_one.c
+- $(OPENSSL_PATH)/crypto/md5/md5_locl.h
++ $(OPENSSL_PATH)/crypto/md5/md5_local.h
+ $(OPENSSL_PATH)/crypto/mem.c
+ $(OPENSSL_PATH)/crypto/mem_clr.c
+ $(OPENSSL_PATH)/crypto/mem_dbg.c
+@@ -413,7 +413,7 @@
+ $(OPENSSL_PATH)/crypto/rand/rand_lcl.h
+ $(OPENSSL_PATH)/crypto/rc4/rc4_enc.c
+ $(OPENSSL_PATH)/crypto/rc4/rc4_skey.c
+- $(OPENSSL_PATH)/crypto/rc4/rc4_locl.h
++ $(OPENSSL_PATH)/crypto/rc4/rc4_local.h
+ $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
+ $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
+ $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
+@@ -436,21 +436,21 @@
+ $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
+ $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
+ $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
+- $(OPENSSL_PATH)/crypto/rsa/rsa_locl.h
++ $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
+ $(OPENSSL_PATH)/crypto/s390x_arch.h
+ $(OPENSSL_PATH)/crypto/sha/keccak1600.c
+ $(OPENSSL_PATH)/crypto/sha/sha1_one.c
+ $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
+ $(OPENSSL_PATH)/crypto/sha/sha256.c
+ $(OPENSSL_PATH)/crypto/sha/sha512.c
+- $(OPENSSL_PATH)/crypto/sha/sha_locl.h
++ $(OPENSSL_PATH)/crypto/sha/sha_local.h
+ $(OPENSSL_PATH)/crypto/siphash/siphash.c
+ $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
+ $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
+ $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
+ $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
+ $(OPENSSL_PATH)/crypto/sm3/sm3.c
+- $(OPENSSL_PATH)/crypto/sm3/sm3_locl.h
++ $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
+ $(OPENSSL_PATH)/crypto/sm4/sm4.c
+ $(OPENSSL_PATH)/crypto/stack/stack.c
+ $(OPENSSL_PATH)/crypto/sparc_arch.h
+@@ -463,7 +463,7 @@
+ $(OPENSSL_PATH)/crypto/ui/ui_null.c
+ $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
+ $(OPENSSL_PATH)/crypto/ui/ui_util.c
+- $(OPENSSL_PATH)/crypto/ui/ui_locl.h
++ $(OPENSSL_PATH)/crypto/ui/ui_local.h
+ $(OPENSSL_PATH)/crypto/vms_rms.h
+ $(OPENSSL_PATH)/crypto/uid.c
+ $(OPENSSL_PATH)/crypto/x509/by_dir.c
+@@ -589,13 +589,13 @@
+ $(OPENSSL_PATH)/ssl/t1_trce.c
+ $(OPENSSL_PATH)/ssl/tls13_enc.c
+ $(OPENSSL_PATH)/ssl/tls_srp.c
+- $(OPENSSL_PATH)/ssl/record/record_locl.h
++ $(OPENSSL_PATH)/ssl/record/record_local.h
+ $(OPENSSL_PATH)/ssl/statem/statem.h
+- $(OPENSSL_PATH)/ssl/statem/statem_locl.h
+- $(OPENSSL_PATH)/ssl/ssl_locl.h
++ $(OPENSSL_PATH)/ssl/statem/statem_local.h
++ $(OPENSSL_PATH)/ssl/ssl_local.h
+ $(OPENSSL_PATH)/ssl/record/record.h
+ $(OPENSSL_PATH)/ssl/ssl_cert_table.h
+- $(OPENSSL_PATH)/ssl/packet_locl.h
++ $(OPENSSL_PATH)/ssl/packet_local.h
+ # Autogenerated files list ends here
+
+ ossl_store.c
+diff -Naur VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/rand_pool.c VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/rand_pool.c
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/rand_pool.c 2020-10-16 18:33:15.000000000 +0200
++++ VirtualBox-6.1.16-p/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/rand_pool.c 2020-11-18 19:54:07.216470611 +0100
+@@ -7,7 +7,7 @@
+
+ **/
+
+-#include "internal/rand_int.h"
++#include "crypto/rand.h"
+ #include <openssl/aes.h>
+
+ #include <Uefi.h>
diff --git a/vbox-6.1.6-firmware-build-python3.9.patch b/vbox-6.1.6-firmware-build-python3.9.patch
new file mode 100644
index 0000000..85e4ed0
--- /dev/null
+++ b/vbox-6.1.6-firmware-build-python3.9.patch
@@ -0,0 +1,46 @@
+diff -up VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/AutoGen/UniClassObject.py.omv~ VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/AutoGen/UniClassObject.py
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/AutoGen/UniClassObject.py.omv~ 2020-11-19 00:11:43.325451341 +0100
++++ VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/AutoGen/UniClassObject.py 2020-11-19 00:13:34.384972912 +0100
+@@ -309,7 +309,11 @@ class UniFileClassObject(object):
+
+ @staticmethod
+ def VerifyUcs2Data(FileIn, FileName, Encoding):
+- Ucs2Info = codecs.lookup('ucs-2')
++ try:
++ Ucs2Info = codecs.lookup('ucs-2')
++ except:
++ # FIXME why does the lookup not work?
++ Ucs2Info = TheUcs2Codec
+ #
+ # Convert to unicode
+ #
+diff -up VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/Common/Misc.py.omv~ VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/Common/Misc.py
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/Common/Misc.py.omv~ 2020-11-19 00:17:19.184022113 +0100
++++ VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/Common/Misc.py 2020-11-19 00:17:37.070263329 +0100
+@@ -1648,7 +1648,7 @@ class PeImageClass():
+ ByteArray = array.array('B')
+ ByteArray.fromfile(PeObject, 4)
+ # PE signature should be 'PE\0\0'
+- if ByteArray.tostring() != b'PE\0\0':
++ if ByteArray != b'PE\0\0':
+ self.ErrorInfo = self.FileName + ' has no valid PE signature PE00'
+ return
+
+diff -up VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py.omv~ VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
+--- VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py.omv~ 2020-11-19 00:18:08.220683019 +0100
++++ VirtualBox-6.1.16/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py 2020-11-19 00:26:11.012139567 +0100
+@@ -459,12 +459,12 @@ class GenFdsGlobalVariable:
+ GenFdsGlobalVariable.SecCmdList.append(' '.join(Cmd).strip())
+ else:
+ SectionData = array('B', [0, 0, 0, 0])
+- SectionData.fromstring(Ui.encode("utf_16_le"))
++ SectionData.frombytes(Ui.encode("utf_16_le"))
+ SectionData.append(0)
+ SectionData.append(0)
+ Len = len(SectionData)
+ GenFdsGlobalVariable.SectionHeader.pack_into(SectionData, 0, Len & 0xff, (Len >> 8) & 0xff, (Len >> 16) & 0xff, 0x15)
+- SaveFileOnChange(Output, SectionData.tostring())
++ SaveFileOnChange(Output, SectionData.tobytes())
+
+ elif Ver:
+ Cmd += ("-n", Ver)
diff --git a/virtualbox-6.1.16-python3.9.patch b/virtualbox-6.1.16-python3.9.patch
new file mode 100644
index 0000000..5a8263b
--- /dev/null
+++ b/virtualbox-6.1.16-python3.9.patch
@@ -0,0 +1,12 @@
+diff -up VirtualBox-6.1.16/configure.omv~ VirtualBox-6.1.16/configure
+--- VirtualBox-6.1.16/configure.omv~ 2020-10-28 16:19:47.294143325 +0100
++++ VirtualBox-6.1.16/configure 2020-10-28 16:20:39.344672473 +0100
+@@ -2028,7 +2028,7 @@ extern "C" int main(void)
+ }
+ EOF
+ found=
+- SUPPYTHONLIBS="python2.7 python2.6 python3.1 python3.2 python3.3 python3.4 python3.4m python3.5 python3.5m python3.6 python3.6m python3.7 python3.7m python3.8 python3.8m"
++ SUPPYTHONLIBS="python2.7 python2.6 python3.1 python3.2 python3.3 python3.4 python3.4m python3.5 python3.5m python3.6 python3.6m python3.7 python3.7m python3.8 python3.8m python3.9"
+ for p in $PYTHONDIR; do
+ for d in $SUPPYTHONLIBS; do
+ for b in lib/x86_64-linux-gnu lib/i386-linux-gnu lib64 lib/64 lib; do
diff --git a/virtualbox.spec b/virtualbox.spec
index 67f050f..4842c4e 100644
--- a/virtualbox.spec
+++ b/virtualbox.spec
@@ -5,7 +5,7 @@
%define distname %{oname}-%{version}%{?beta:_%{beta}}
%define pkgver %{ver}
-%define vboxlibdir %{_libdir}/%{name}
+%define vboxlibdir %{_prefix}/lib/%{name}
%define vboxdatadir %{_datadir}/%{name}
%ifarch %{x86_64}
@@ -27,16 +27,18 @@
%bcond_with clang
%bcond_with docs
+## (crazy) fixem that is always true these days
%bcond_without additions
%bcond_without vnc_ext_pack
+%bcond_without firmware
Summary: A general-purpose full virtualizer for x86 hardware
Name: virtualbox
# WARNING: WHEN UPDATING THIS PACKAGE, ALWAYS REBUILD THE
# kernel-release AND kernel-rc PACKAGES TO MAKE SURE MODULES
# AND USERSPACE ARE IN SYNC
-Version: 6.1.12a
-Release: 6
+Version: 6.1.16
+Release: 4
License: GPLv2
Group: Emulators
Url: http://www.virtualbox.org/
@@ -46,10 +48,16 @@ Source3: virtualbox-tmpfiles.conf
Source4: 60-vboxadd.perms
Source5: vboxadd.service
Source6: vboxweb.service
-Source7: vboxdrmclient.service
-Source8: vboxdrmclient.path
+Source7: vboxdrmclient.service
+Source8: vboxdrmclient.path
Source20: os_openmandriva.png
Source21: os_openmandriva_64.png
+%if %{with firmware}
+# Can't use system openssl because we built OpenSSL for UEFI, not
+# for Linux
+%define openssl 1.1.1h
+Source50: https://www.openssl.org/source/openssl-%{openssl}.tar.gz
+%endif
Source100: virtualbox.rpmlintrc
# Revert upstream's (between 6.1.0 and 6.1.2) removal of symbols
# that are used everywhere -- without this patch, starting
@@ -60,6 +68,7 @@ Source100: virtualbox.rpmlintrc
Patch0: VirtualBox-6.1.2-revert-removal-of-vital-symbols.patch
# Update docs on kernel modules
Patch1: virtualbox-fix-modules-rebuild-command.patch
+Patch2: virtualbox-6.1.16-python3.9.patch
# Fix docs to give the right mount command for the in-tree version of vboxsf
Patch3: VirtualBox-4.1.8-futex.patch
Patch4: virtualbox-fix-vboxadd-req.patch
@@ -81,9 +90,10 @@ Patch11: vbox-6.1.10-compile.patch
Patch18: VirtualBox-5.1.8-gsoap-2.8.13.patch
Patch22: virtualbox-no-prehistoric-xfree86.patch
-#Patch23: VirtualBox-5.0.10-no-bundles.patch
+Patch23: VirtualBox-5.0.10-no-bundles.patch
Patch24: VirtualBox-5.0.18-xserver_guest_xorg19.patch
-Patch25: fix-vboxadd-xclient.patch
+Patch25: fix-vboxadd-xclient.patch
+Patch26: vbox-6.1.6-firmware-build-python3.9.patch
# "Borrowed" from Debian https://salsa.debian.org/pkg-virtualbox-team/virtualbox/blob/master/debian/patches
#Patch103: 06-xsession.patch
Patch104: 07-vboxnetflt-reference.patch
@@ -100,6 +110,9 @@ Patch200: VirtualBox-add-support-for-OpenMandriva.patch
# (tpg) do not crash on Wayland
Patch201: VirtualBox-5.2.16-use-xcb-on-wayland.patch
Patch202: vbox-6.0.6-find-java-modules.patch
+# From FrugalWare
+Patch300: https://gitweb.frugalware.org/frugalware-current/raw/67d0618e5c19f8b44ebb6eab78c56048b412bdc3/source/xapps-extra/virtualbox/boot-efi-boot.patch
+Patch301: https://gitweb.frugalware.org/frugalware-current/raw/67d0618e5c19f8b44ebb6eab78c56048b412bdc3/source/xapps-extra/virtualbox/firmware-build-fixes.patch
ExclusiveArch: %{x86_64}
# (tpg) 2019-10-16 vbox is not ready for LLVM/clang
BuildRequires: gcc-c++
@@ -109,8 +122,11 @@ BuildRequires: gawk
BuildRequires: gsoap
BuildRequires: acpica
BuildRequires: yasm
-BuildRequires: vde2
-BuildRequires: pkgconfig(xorg-server)
+BuildRequires: vde2
+BuildRequires: pkgconfig(xorg-server)
+%if %{with firmware}
+BuildRequires: nasm
+%endif
%if %{with java}
BuildRequires: jdk-current
BuildRequires: javax.activation
@@ -186,8 +202,8 @@ The modules in this package are required on the HOST side.
%package guest-additions
Summary: Additions for VirtualBox guest systems
Group: Emulators
-Requires: x11-driver-video-vmware
-Requires: libdri-drivers-vmwgfx
+Requires: x11-driver-video-vmware
+Requires: %{_lib}dri-drivers-vmwgfx
Requires: libnotify
Requires(post,preun): rpm-helper
@@ -251,22 +267,19 @@ rm -rf src/VBox/Additions/x11/x11stubs
rm -rf src/libs/{libpng-*,libxml2-*,zlib-*}
cat << EOF > LocalConfig.kmk
-VBOX_BUILD_PUBLISHER:=_omv
VBOX_WITH_WARNINGS_AS_ERRORS:=
VBOX_PATH_APP_PRIVATE_ARCH:=%{vboxlibdir}
-VBOX_WITH_ORIGIN:=
+VBOX_PATH_SHARED_LIBS:=%{vboxlibdir}
VBOX_WITH_RUNPATH:=%{vboxlibdir}
-VBOX_PATH_APP_PRIVATE:=%{vboxlibdir}
+VBOX_WITH_ORIGIN:=
+VBOX_PATH_APP_PRIVATE:=/usr/share/virtualbox
VBOX_WITH_VNC:=1
VBOX_WITH_VPX:=1
VBOX_WITH_LIBOPUS:=1
VBOX_WITH_LIBCURL:=1
SDK_VBOX_LIBPNG_INCS:=%{_includedir}/libpng16
SDK_VBOX_LIBPNG_LIBS:=png16
-#SDK_VBOX_LIBXML2_INCS:=""
SDK_VBOX_LIBXML2_LIBS:=xml2
-#SDK_VBOX_OPENSSL_INCS:=""
-#SDK_VBOX_OPENSSL_LIBS:=""
SDK_VBOX_ZLIB_INCS:=""
SDK_VBOX_ZLIB_LIBS:=z
SDK_VBOX_LIBLZF_INCS:=""
@@ -299,6 +312,9 @@ VBOX_WITH_UPDATE_REQUEST:=0
VBOX_GUI_WITH_SHARED_LIBRARY:=1
# Default is Oracle VM VirtualBox -- let's not advertise the bad guys
VBOX_PRODUCT=VirtualBox
+%if %{with firmware}
+VBOX_EFI_FIRMWARE_EFI_MODULES_KMK_INCLUDED := 0
+%endif
EOF
# (tpg) 2019-10-16 vbox is not ready for LLVM/clang
@@ -307,9 +323,9 @@ sed -i -e 's#CC="gcc"#CC="clang"#g' configure
sed -i -e 's#CXX="g++"#CXX="clang++"#g' configure
sed -i -e 's,-mpreferred-stack-boundary=2,,g' Config.kmk src/VBox/Devices/PC/ipxe/Makefile.kmk src/VBox/Devices/PC/ipxe/src/arch/i386/Makefile
%endif
-sed -i -e 's#/usr/lib/virtualbox#%{vboxlibdir}#g' src/VBox/Installer/linux/VBox.sh
-sed -i -e 's#-fpermissive##g' -e 's#-finline-limit=8000##g' Config.kmk
+# (crazy) why? needs to go
+#sed -i -e 's#-fpermissive##g' -e 's#-finline-limit=8000##g' Config.kmk
%build
# FIXME: gold linker dies with internal error in segment_precedes, at ../../gold/layout.cc:3250
@@ -326,13 +342,6 @@ echo VBOX_GCC_OPT="$(echo %{optflags} $(pkg-config --cflags pixman-1) | sed -e '
%endif
echo TOOL_GCC_LDFLAGS="%{ldflags}" >> LocalConfig.kmk
-%if %{with additions}
-echo XSERVER_VERSION=%{x11_server_majorver} >>LocalConfig.kmk
-%else
-sed -rie 's/(VBOX_WITH_LINUX_ADDITIONS\s+:=\s+).*/\1/' AutoConfig.kmk
-echo VBOX_WITHOUT_ADDITIONS=1 >> LocalConfig.kmk
-%endif
-
# (crazy) /opt is the wrong location
sed -i -e 's|opt/VirtualBox|usr/share/virtualbox|g' src/VBox/RDP/client-1.8.4/Makefile.kmk
@@ -351,8 +360,25 @@ sed -i -e 's|opt/VirtualBox|usr/share/virtualbox|g' src/VBox/RDP/client-1.8.4/Ma
%endif
--enable-pulse || (cat configure.log && exit 1)
-
. ./env.sh
+
+%if %{with firmware}
+ # NOTE: this needs to run before main kmk,
+ # *DD.so & *DD2.so uses the EFI* stuff we just build here
+ TOP="$(pwd)"
+ rm src/VBox/Devices/EFI/FirmwareBin/*
+ cd src/VBox/Devices/EFI/Firmware
+ . ./edksetup.sh
+ cd CryptoPkg/Library/OpensslLib/openssl
+ tar x --strip-components=1 -f %{S:50}
+ cd ..
+ perl process_files.pl
+ cd ../../..
+ kmk
+ cd "${TOP}"
+ cp out/*/release/bin/VBoxEFI*.fd src/VBox/Devices/EFI/FirmwareBin/
+%endif
+
# (crazy) we want this package in kmk *very verbose* mode to see what the hell they do
# DO NOT REMOVE!
kmk %{_smp_mflags} KBUILD_VERBOSE=2 all
@@ -366,17 +392,17 @@ kmk %{_smp_mflags} KBUILD_VERBOSE=2 -C src/VBox/ExtPacks/VNC packing
# install vbox components
mkdir -p %{buildroot}%{vboxlibdir} %{buildroot}%{vboxdatadir}
-# NOTE: packaging like this is wrong!
+# (crazy) NOTE: packaging like this is wrong! FIXME
(cd out/%{vbox_platform}/release/bin && tar cf - --exclude=additions .) | \
(cd %{buildroot}%{vboxlibdir} && tar xf -)
# move noarch files to vboxdatadir
-# (crazy) _WHY_ is VBox.sh in datadir?
+# (crazy) _WHY_ is VBox.sh in datadir? FIXME
mv %{buildroot}%{vboxlibdir}/{VBox*.sh,nls,rdesktop-vrdp-keymaps,*.png} %{buildroot}%{vboxdatadir}
# wipe crap/duplicates
# (crazy) broken symlink
rm -f %{buildroot}%{vboxlibdir}/components/VBoxREM.so
-# packaged in mime
+# packaged in mime
rm -f %{buildroot}%{vboxlibdir}/virtualbox.xml
# those service.sh etc scripts ( no such init here ) are junk, don't package
rm -f %{buildroot}%{vboxlibdir}/*.sh
@@ -473,7 +499,7 @@ install -m644 out/%{vbox_platform}/release/packages/VNC-*.vbox-extpack %{buildro
%if %{with additions}
mkdir -p %{buildroot}%{_sysconfdir}/xdg/autostart
install -m755 src/VBox/Additions/x11/Installer/98vboxadd-xclient %{buildroot}%{_bindir}/VBoxClient-all
-install -m755 src/VBox/Additions/x11/Installer/vboxclient.desktop %{buildroot}%{_sysconfdir}/xdg/autostart/vboxclient.desktop
+install -m644 src/VBox/Additions/x11/Installer/vboxclient.desktop %{buildroot}%{_sysconfdir}/xdg/autostart/vboxclient.desktop
cd out/%{vbox_platform}/release/bin/additions
install -d %{buildroot}/sbin %{buildroot}%{_sbindir} %{buildroot}%{_unitdir}