Switch to new package format
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
# This is the recipe.sh script. It is executed by BPM in a temporary directory when compiling a source package
|
||||
# BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE
|
||||
# BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT
|
||||
|
||||
prepare() {
|
||||
# Re-extract brotli for ShellPkg
|
||||
tar -xvf "$BPM_WORKDIR"/brotli.tar.gz --strip-components=1 -C "$BPM_SOURCE"/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/
|
||||
|
||||
cd "$BPM_SOURCE"
|
||||
# fix 32-bit instruction errors
|
||||
dos2unix "$BPM_SOURCE"/UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ExceptionHandlerAsm.nasm
|
||||
dos2unix "$BPM_SOURCE"/BaseTools/Source/C/EfiRom/EfiRom.c
|
||||
patch -Np1 -i "$BPM_WORKDIR"/nasm3.patch
|
||||
patch -Np1 -i "$BPM_WORKDIR"/fix-discarded-qualifiers-error.patch
|
||||
}
|
||||
|
||||
# The build function is executed in the source directory
|
||||
# This function is used to compile the source code
|
||||
build() {
|
||||
local _common_args=(-b RELEASE -n $(nproc) -t GCC)
|
||||
local _efi_args=(-D NETWORK_IP6_ENABLE -D TPM_CONFIG_ENABLE -D TPM1_ENABLE -D TPM2_ENABLE)
|
||||
local _x86_args=(-D FD_SIZE_2MB -D HTTP_BOOT_ENABLE -D TLS_ENABLE)
|
||||
local _4mb_args=(-D FD_SIZE_4MB -D FD_SIZE_IN_KB=4096 -D HTTP_BOOT_ENABLE -D TLS_ENABLE)
|
||||
|
||||
make -C BaseTools
|
||||
source edksetup.sh
|
||||
|
||||
for arch in X64 IA32; do
|
||||
BaseTools/BinWrappers/PosixLike/build -p ShellPkg/ShellPkg.dsc -a "$arch" "${_common_args[@]}"
|
||||
done
|
||||
|
||||
# X64 OVMF
|
||||
BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/OvmfPkgIa32X64.dsc" -a IA32 -a X64 \
|
||||
"${_common_args[@]}" "${_efi_args[@]}" "${_4mb_args[@]}" \
|
||||
-D SECURE_BOOT_ENABLE -D SMM_REQUIRE -D EXCLUDE_SHELL_FROM_FD
|
||||
mv -v Build/Ovmf3264{,-secure-4mb}
|
||||
|
||||
BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/OvmfPkgIa32X64.dsc" -a IA32 -a X64 \
|
||||
"${_common_args[@]}" "${_efi_args[@]}" "${_x86_args[@]}" \
|
||||
-D SECURE_BOOT_ENABLE -D SMM_REQUIRE -D EXCLUDE_SHELL_FROM_FD
|
||||
mv -v Build/Ovmf3264{,-secure}
|
||||
|
||||
BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/OvmfPkgX64.dsc" -a X64 "${_common_args[@]}" "${_efi_args[@]}" "${_4mb_args[@]}"
|
||||
mv -v Build/OvmfX64{,-4mb}
|
||||
|
||||
BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/OvmfPkgX64.dsc" -a X64 "${_common_args[@]}" "${_efi_args[@]}" "${_x86_args[@]}"
|
||||
|
||||
BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/Microvm/MicrovmX64.dsc" -a X64 "${_common_args[@]}" "${_efi_args[@]}" "${_4mb_args[@]}"
|
||||
mv -v Build/MicrovmX64{,-4mb}
|
||||
|
||||
BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/Microvm/MicrovmX64.dsc" -a X64 "${_common_args[@]}" "${_efi_args[@]}" "${_x86_args[@]}"
|
||||
|
||||
# IA32 OVMF
|
||||
BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/OvmfPkgIa32.dsc" -a IA32 \
|
||||
"${_common_args[@]}" "${_efi_args[@]}" "${_4mb_args[@]}" \
|
||||
-D SECURE_BOOT_ENABLE -D SMM_REQUIRE -D EXCLUDE_SHELL_FROM_FD -D LOAD_X64_ON_IA32_ENABLE
|
||||
mv -v Build/Ovmf{Ia32,IA32-secure-4mb}
|
||||
|
||||
BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/OvmfPkgIa32.dsc" -a IA32 \
|
||||
"${_common_args[@]}" "${_efi_args[@]}" "${_x86_args[@]}" \
|
||||
-D SECURE_BOOT_ENABLE -D SMM_REQUIRE -D EXCLUDE_SHELL_FROM_FD -D LOAD_X64_ON_IA32_ENABLE
|
||||
mv -v Build/Ovmf{Ia32,IA32-secure}
|
||||
|
||||
BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/OvmfPkgIa32.dsc" -a IA32 \
|
||||
"${_common_args[@]}" "${_efi_args[@]}" "${_4mb_args[@]}" \
|
||||
-D LOAD_X64_ON_IA32_ENABLE
|
||||
mv -v Build/Ovmf{Ia32,IA32-4mb}
|
||||
|
||||
BaseTools/BinWrappers/PosixLike/build -p "OvmfPkg/OvmfPkgIa32.dsc" -a IA32 \
|
||||
"${_common_args[@]}" "${_efi_args[@]}" "${_x86_args[@]}" \
|
||||
-D LOAD_X64_ON_IA32_ENABLE
|
||||
mv -v Build/Ovmf{Ia32,IA32}
|
||||
}
|
||||
|
||||
# The package function is executed in the source directory
|
||||
# This function is used to move the compiled files into the output directory
|
||||
package() {
|
||||
install -d "$BPM_OUTPUT"/usr/share/qemu/firmware
|
||||
install -d "$BPM_OUTPUT"/usr/share/AAVMF
|
||||
|
||||
for arch in X64 IA32; do
|
||||
install -d "$BPM_OUTPUT"/usr/share/edk2/${arch,,}
|
||||
|
||||
install -Dm644 Build/Shell/RELEASE_GCC/${arch}/Shell_7C04A583-9E3E-4f1c-AD65-E05268D0B4D1.efi usr/share/edk2/${arch,,}/Shell.efi
|
||||
install -Dm644 Build/Shell/RELEASE_GCC/${arch}/Shell_EA4BB293-2D7F-4456-A681-1F22F42CD0BC.efi usr/share/edk2/${arch,,}/Shell_Full.efi
|
||||
done
|
||||
|
||||
# X64 OVMF
|
||||
install -Dm644 Build/OvmfX64/RELEASE_GCC/FV/OVMF.fd "$BPM_OUTPUT"/usr/share/edk2/x64
|
||||
install -Dm644 Build/OvmfX64/RELEASE_GCC/FV/OVMF_CODE.fd "$BPM_OUTPUT"/usr/share/edk2/x64
|
||||
install -Dm644 Build/OvmfX64/RELEASE_GCC/FV/OVMF_VARS.fd "$BPM_OUTPUT"/usr/share/edk2/x64
|
||||
install -Dm644 Build/OvmfX64-4mb/RELEASE_GCC/FV/OVMF.fd "$BPM_OUTPUT"/usr/share/edk2/x64/OVMF.4m.fd
|
||||
install -Dm644 Build/OvmfX64-4mb/RELEASE_GCC/FV/OVMF_CODE.fd "$BPM_OUTPUT"/usr/share/edk2/x64/OVMF_CODE.4m.fd
|
||||
install -Dm644 Build/OvmfX64-4mb/RELEASE_GCC/FV/OVMF_VARS.fd "$BPM_OUTPUT"/usr/share/edk2/x64/OVMF_VARS.4m.fd
|
||||
install -Dm644 Build/Ovmf3264-secure/RELEASE_GCC/FV/OVMF_CODE.fd "$BPM_OUTPUT"/usr/share/edk2/x64/OVMF_CODE.secure.fd
|
||||
install -Dm644 Build/Ovmf3264-secure-4mb/RELEASE_GCC/FV/OVMF_CODE.fd "$BPM_OUTPUT"/usr/share/edk2/x64/OVMF_CODE.secure.4m.fd
|
||||
install -Dm644 Build/MicrovmX64/RELEASE_GCC/FV/MICROVM.fd "$BPM_OUTPUT"/usr/share/edk2/x64/MICROVM.fd
|
||||
install -Dm644 Build/MicrovmX64-4mb/RELEASE_GCC/FV/MICROVM.fd "$BPM_OUTPUT"/usr/share/edk2/x64/MICROVM.4m.fd
|
||||
install -Dm644 "$BPM_WORKDIR"/*x86_64*.json -t "$BPM_OUTPUT"/usr/share/qemu/firmware
|
||||
install -Dm644 "$BPM_WORKDIR"/*microvm*.json -t "$BPM_OUTPUT"/usr/share/qemu/firmware
|
||||
|
||||
# IA32 OVMF
|
||||
install -Dm644 Build/OvmfIA32/RELEASE_GCC/FV/OVMF.fd "$BPM_OUTPUT"/usr/share/edk2/ia32
|
||||
install -Dm644 Build/OvmfIA32/RELEASE_GCC/FV/OVMF_CODE.fd "$BPM_OUTPUT"/usr/share/edk2/ia32
|
||||
install -Dm644 Build/OvmfIA32/RELEASE_GCC/FV/OVMF_VARS.fd "$BPM_OUTPUT"/usr/share/edk2/ia32
|
||||
install -Dm644 Build/OvmfIA32-4mb/RELEASE_GCC/FV/OVMF.fd "$BPM_OUTPUT"/usr/share/edk2/ia32/OVMF.4m.fd
|
||||
install -Dm644 Build/OvmfIA32-4mb/RELEASE_GCC/FV/OVMF_CODE.fd "$BPM_OUTPUT"/usr/share/edk2/ia32/OVMF_CODE.4m.fd
|
||||
install -Dm644 Build/OvmfIA32-4mb/RELEASE_GCC/FV/OVMF_VARS.fd "$BPM_OUTPUT"/usr/share/edk2/ia32/OVMF_VARS.4m.fd
|
||||
install -Dm644 Build/OvmfIA32-secure/RELEASE_GCC/FV/OVMF_CODE.fd "$BPM_OUTPUT"/usr/share/edk2/ia32/OVMF_CODE.secure.fd
|
||||
install -Dm644 Build/OvmfIA32-secure-4mb/RELEASE_GCC/FV/OVMF_CODE.fd "$BPM_OUTPUT"/usr/share/edk2/ia32/OVMF_CODE.secure.4m.fd
|
||||
install -Dm644 "$BPM_WORKDIR"/*i386*.json -t "$BPM_OUTPUT"/usr/share/qemu/firmware
|
||||
|
||||
ln -s ./edk2 "$BPM_OUTPUT"/usr/share/OVMF
|
||||
|
||||
# Install package licenses
|
||||
install -Dm644 "$BPM_SOURCE"/License.txt "$BPM_OUTPUT"/usr/share/licenses/edk2-ovmf/License.txt
|
||||
install -Dm644 "$BPM_SOURCE"/OvmfPkg/License.txt "$BPM_OUTPUT"/usr/share/licenses/edk2-ovmf/OvmfPkg-License.txt
|
||||
}
|
||||
Reference in New Issue
Block a user