Source

FROM stagex/pallet-clang-gnu-busybox AS build
COPY --from=stagex/pallet-python . /
COPY --from=stagex/core-bash . /
COPY --from=stagex/core-ncurses . /
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="CLANGPDB"
ENV RELEASE="RELEASE"
ENV TARGET_ARCH=X64
ENV CFLAGS="-Wno-unknown-warning-option -Wno-unneeded-internal-declaration"
ADD patches/*.patch .
RUN --network=none <<-EOF
	patch -p1 < 0008-BaseTools-do-not-build-BrotliCompress-RH-only.patch
	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 MdePkg/Library/MipiSysTLib/mipisyst
	ln -s /public-mipi-sys-t-${MIPISYST_VERSION} MdePkg/Library/MipiSysTLib/mipisyst
	sed \
		-e '/BrotliCustomDecompressLib/d' \
		-i MdeModulePkg/MdeModulePkg.dec
	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/ /
Copied to clipboard!