ipxe

Details
Source
FROM stagex/pallet-gcc-gnu-busybox AS build
ARG VERSION
COPY --from=stagex/core-xz . /
COPY --from=stagex/user-edk2 . /
COPY --from=stagex/user-syslinux . /
COPY --from=stagex/user-xorriso . /
ADD fetch/ipxe-${VERSION}.tar.gz .
WORKDIR /ipxe-${VERSION}/src
ENV SOURCE_DATE_EPOCH=1
RUN --network=none <<-EOF
	set -ex
	ARCH="$(uname -m)"
	mkdir -p out
	make \
		-j "$(nproc)" \
		CC=${ARCH}-linux-musl-gcc \
		NO_WERROR=1 \
		EXTRA_CFLAGS="-fcommon"  \
		bin/ipxe.iso \
		bin/ipxe.lkrn \
		bin/ipxe.pxe \
		bin/undionly.kpxe \
		bin/ipxe.usb \
		bin/ipxe.dsk \
		bin-${ARCH}-efi/ipxe.efi
	printf " \
	e1000 8086 100e \n \
	e1000e 8086 10d3 \n \
	eepro100 8086 1209 \n \
	ne2k_pci 1050 0940 \n \
	pcnet 1022 2000 \n \
	rtl8139 10ec 8139 \n \
	virtio 1af4 1000 \n \
	vmxnet3 15ad 07b0" \
	| while IFS= read -r line; do
		set -- $line;
		target="$1";
		vid="$2";
		did="$3";
		make \
			-j "$(nproc)" \
			CONFIG=qemu \
			CC=${ARCH}-linux-musl-gcc \
			NO_WERROR=1 \
			EXTRA_CFLAGS="-fcommon"  \
			bin-${ARCH}-efi/${vid}${did}.efidrv \
			bin/${vid}${did}.rom;
		EfiRom \
			-f "0x${vid}" \
			-i "0x${did}" \
			-l 0x02 \
			-b bin/${vid}${did}.rom \
			-ec bin-${ARCH}-efi/${vid}${did}.efidrv \
			-o out/efi-${target}.rom;
	done
	install -vDm 644 bin/*.lkrn -t /rootfs/usr/share/ipxe/
	install -vDm 644 bin/*.dsk -t /rootfs/usr/share/ipxe/
	install -vDm 644 bin/*.iso -t /rootfs/usr/share/ipxe/
	install -vDm 644 bin/*.pxe -t /rootfs/usr/share/ipxe/
	install -vDm 644 bin/*.kpxe -t /rootfs/usr/share/ipxe/
	install -vDm 644 bin-${ARCH}-efi/*.efi -t /rootfs/usr/share/ipxe/${ARCH}/
	install -vDm 644 out/efi-*.rom -t /rootfs/usr/share/qemu/
EOF
FROM stagex/core-filesystem AS package
COPY --from=build /rootfs/ /