edk2

Details
Source
FROM stagex/pallet-gcc-gnu-busybox AS build
COPY --from=stagex/pallet-python . /
COPY --from=stagex/core-bash . /
COPY --from=stagex/user-nasm . /
COPY --from=stagex/user-acpica . /
COPY --from=stagex/user-util-linux . /
ARG VERSION
ARG OPENSSL_VERSION
ARG SOFTFLOAT_VERSION
ARG MIPISYST_VERSION
ARG MBEDTLS_VERSION
ARG LIBSPDM_VERSION
ADD fetch/edk2-${VERSION}.tar.gz .
ADD fetch/mipisyst-${MIPISYST_VERSION}.tar.gz .
ADD fetch/openssl-${OPENSSL_VERSION}.tar.gz .
ADD fetch/mbedtls-${MBEDTLS_VERSION}.tar.gz .
ADD fetch/libspdm-${LIBSPDM_VERSION}.tar.gz .
ADD fetch/softfloat-${SOFTFLOAT_VERSION}.zip .
WORKDIR /edk2-edk2-stable${VERSION}
ENV WORKDIR=/edk2-edk2-stable${VERSION}
ENV PACKAGES_PATH=$WORKDIR
ENV WORKSPACE=$WORKDIR
ENV EDK_TOOLS_PATH=${WORKDIR}/BaseTools
ENV PATH=${EDK_TOOLS_PATH}/BinWrappers/PosixLike/:$PATH
ENV PYTHONPATH=${EDK_TOOLS_PATH}/Source/Python
ENV PYTHON_COMMAND=python3
ENV PLATFORMS="ShellPkg/ShellPkg.dsc OvmfPkg/OvmfPkgX64.dsc OvmfPkg/OvmfXen.dsc"
ENV TOOLCHAIN="GCC5"
ENV RELEASE="RELEASE"
ENV TARGET_ARCH=X64
RUN --network=none <<-EOF
	set -eux
	rm -rf CryptoPkg/Library/OpensslLib/openssl
	ln -s /openssl-${OPENSSL_VERSION} CryptoPkg/Library/OpensslLib/openssl
	rm -rf CryptoPkg/Library/MbedTlsLib/mbedtls
	ln -s /mbedtls-${MBEDTLS_VERSION} CryptoPkg/Library/MbedTlsLib/mbedtls
	rm -rf SecurityPkg/DeviceSecurity/SpdmLib/libspdm
	ln -s /libspdm-${LIBSPDM_VERSION} SecurityPkg/DeviceSecurity/SpdmLib/libspdm
	rm -rf ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3
	ln -s /SoftFloat-${SOFTFLOAT_VERSION} \
		ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3
	rm -rf MdePkg/Library/MipiSysTLib/mipisyst
	ln -s /public-mipi-sys-t-${MIPISYST_VERSION} MdePkg/Library/MipiSysTLib/mipisyst
	sed \
		-e '/BrotliCompress/d' \
		-i BaseTools/Source/C/GNUmakefile
	sed \
		-e '/BrotliCustomDecompressLib/d' \
		-i MdeModulePkg/MdeModulePkg.dec
	sed \
		-e 's/\r$//' \
		-i BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp \
		BaseTools/Source/C/VolInfo/VolInfo.c
	make -C BaseTools
	cp BaseTools/Conf/tools_def.template Conf/tools_def.txt
	cp BaseTools/Conf/build_rule.template Conf/build_rule.txt
	cp BaseTools/Conf/target.template Conf/target.txt
	for platform in $PLATFORMS; do
		echo "Building Plaform Files: $platform"
		python BaseTools/Source/Python/build/build.py \
			-b $RELEASE \
			-a $TARGET_ARCH  \
			-t $TOOLCHAIN \
			-p $platform \
			-n "$(nproc)" \
			-DSECURE_BOOT_ENABLE=TRUE \
			-DTPM2_ENABLE=TRUE
	done
	mkdir -p \
		/rootfs/usr/bin \
    /rootfs/usr/share/edk2/Conf \
    /rootfs/usr/share/edk2/Scripts
  install BaseTools/Source/C/bin/* BaseTools/BinWrappers/PosixLike/LzmaF86Compress /rootfs/usr/bin
  install BaseTools/BuildEnv /rootfs/usr/share/edk2/
  install BaseTools/Conf/*.template /rootfs/usr/share/edk2/Conf
  install BaseTools/Scripts/GccBase.lds /rootfs/usr/share/edk2/Scripts
EOF
FROM stagex/core-filesystem AS package
COPY --from=build /rootfs/ /