packages/

ipxe

Details
Source
FROM scratch AS base
ENV VERSION=6ca597eee9f95b846a3c2dc1231e63cfc02272c1
ENV SRC_FILE=${VERSION}.tar.gz
ENV SRC_SITE=https://github.com/ipxe/ipxe/archive/${SRC_FILE}
ENV SRC_HASH=f90cc9024d90e3fcbd738a3a1904dd552f276fcc52d177ebdd4e78d17e5c5b44

FROM base AS fetch
ADD --checksum=sha256:${SRC_HASH} ${SRC_SITE} .

FROM fetch AS build
COPY --from=stagex/busybox . /
COPY --from=stagex/coreutils . /
COPY --from=stagex/gcc . /
COPY --from=stagex/binutils . /
COPY --from=stagex/openssl . /
COPY --from=stagex/make . /
COPY --from=stagex/perl . /
COPY --from=stagex/musl . /
COPY --from=stagex/edk2 . /
COPY --from=stagex/syslinux . /
COPY --from=stagex/xorriso . /
COPY --from=stagex/xz . /
RUN tar -xf ${SRC_FILE}
WORKDIR /ipxe-${VERSION}/src
ENV SOURCE_DATE_EPOCH=1
RUN --network=none <<-EOF
    set -ex
    mkdir -p out
	make \
        -j "$(nproc)" \
    	CC=x86_64-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-x86_64-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=x86_64-linux-musl-gcc \
            NO_WERROR=1 \
            EXTRA_CFLAGS="-fcommon"  \
            bin-x86_64-efi/${vid}${did}.efidrv \
            bin/${vid}${did}.rom;
        EfiRom \
            -f "0x${vid}" \
            -i "0x${did}" \
            -l 0x02 \
            -b bin/${vid}${did}.rom \
            -ec bin-x86_64-efi/${vid}${did}.efidrv \
            -o out/efi-${target}.rom;
    done
EOF

FROM build AS install
RUN <<-EOF
    set -eux
    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-x86_64-efi/*.efi -t /rootfs/usr/share/ipxe/x86_64/
    install -vDm 644 out/efi-*.rom -t /rootfs/usr/share/qemu/
EOF

FROM stagex/filesystem AS package
COPY --from=install /rootfs/. /