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/ /