Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ipxe for openSUSE:Factory checked in at 2026-04-29 19:20:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ipxe (Old) and /work/SRC/openSUSE:Factory/.ipxe.new.30200 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ipxe" Wed Apr 29 19:20:40 2026 rev:24 rq:1350005 version:1.21.1+git20250827.61b4585e2 Changes: -------- --- /work/SRC/openSUSE:Factory/ipxe/ipxe.changes 2025-09-16 18:19:37.682201277 +0200 +++ /work/SRC/openSUSE:Factory/.ipxe.new.30200/ipxe.changes 2026-04-29 19:22:22.540216608 +0200 @@ -1,0 +2,11 @@ +Mon Apr 27 22:39:56 UTC 2026 - Dario Faggioli <[email protected]> + +- Add ipxe-qemu subpackage to provide QEMU network ROMs. This allows + unbundling the iPXE submodule from the main QEMU package, alleviating + code duplication. We now do, here in this package: + * Build legacy and EFI drivers for QEMU specific PCI IDs + (e1000, virtio, rtl8139, ne2k_pci, pcnet, e1000e, vmxnet3). + * Handle legacy and EFI combination, paddint, etc. + * Install the generated ROMs into /usr/share/qemu/. + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ipxe.spec ++++++ --- /var/tmp/diff_new_pack.YKWt6U/_old 2026-04-29 19:22:23.160241986 +0200 +++ /var/tmp/diff_new_pack.YKWt6U/_new 2026-04-29 19:22:23.172242478 +0200 @@ -1,7 +1,7 @@ # # spec file for package ipxe # -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -63,6 +63,8 @@ BuildRequires: xorriso %endif BuildRequires: xz-devel +# For QEMU ROMs +BuildRequires: ovmf-tools # Does not build on bigendian ExcludeArch: s390 s390x ppc ppc64 # ix86 does not have a cross-x86_64 gcc available so it can't build @@ -86,6 +88,17 @@ This package contains the iPXE boot images in USB, CD, floppy, and PXE UNDI formats. EFI is supported, too. +%package qemu +Summary: PXE and EFI ROMs for QEMU network devices +Group: System/Emulators/PC +Provides: qemu-ipxe +Obsoletes: qemu-ipxe +Provides: ipxe-qemu-roms = %{version} + +%description qemu +This package contains the iPXE ROMs (legacy PXE and EFI) compiled specifically +for QEMU emulated network devices. + %prep %autosetup -N %autopatch -p1 -M 8 @@ -115,6 +128,85 @@ VERSION=%{version} $TAG "$@" } +# Building QEMU ROMs + +# QEMU's legacy virtio ROM must fit in 64KB. For that to happen, let's get +# rid of HTTPS, ZLIB, GZIP and all the SAN features (just for the QEMU ROMs +# of course, using iPXE's local config mechanism). +cat <<EOF > config/local/general.h +#undef DOWNLOAD_PROTO_HTTPS +#undef IMAGE_ZLIB +#undef IMAGE_GZIP +#undef SANBOOT_PROTO_ISCSI +#undef SANBOOT_PROTO_AOE +#undef SANBOOT_PROTO_IB_SRP +#undef SANBOOT_PROTO_FCP +EOF + +# Enable serial output (so, e.g., -nographic, works). +cat <<EOF > config/local/console.h +#define CONSOLE_SERIAL +EOF + +QEMU_NICS="e1000:8086:100e eepro100:8086:1209 ne2k_pci:10ec:8029 pcnet:1022:2000 rtl8139:10ec:8139 virtio:1af4:1000 e1000e:8086:10d3 vmxnet3:15ad:07b0" + +CROSS_PREFIX="" +%ifnarch %{ix86} x86_64 +CROSS_PREFIX="CROSS=x86_64-suse-linux-" +%endif + +for nic in $QEMU_NICS; do + name=$(echo "$nic" | cut -d: -f1) + vid=$(echo "$nic" | cut -d: -f2) + did=$(echo "$nic" | cut -d: -f3) + + # Build legacy ROMs + if [ "$name" != "e1000e" ] && [ "$name" != "vmxnet3" ]; then + make_ipxe $CROSS_PREFIX bin/${vid}${did}.rom + cp bin/${vid}${did}.rom pxe-${name}.rom + fi + + # Build EFI drivers + EFI_ARGS="-f 0x${vid} -i 0x${did}" + make_ipxe $CROSS_PREFIX bin-i386-efi/${vid}${did}.efidrv + EFI_ARGS="$EFI_ARGS -e bin-i386-efi/${vid}${did}.efidrv" + + %ifnarch %{ix86} + make_ipxe $CROSS_PREFIX bin-x86_64-efi/${vid}${did}.efidrv + EFI_ARGS="$EFI_ARGS -e bin-x86_64-efi/${vid}${did}.efidrv" + %endif + + %ifarch aarch64 + make_ipxe bin-arm64-efi/${vid}${did}.efidrv + EFI_ARGS="$EFI_ARGS -e bin-arm64-efi/${vid}${did}.efidrv" + %else + %{!?no_aarch64_cc:make_ipxe CROSS="aarch64-suse-linux-" bin-arm64-efi/${vid}${did}.efidrv} + %{!?no_aarch64_cc:EFI_ARGS="$EFI_ARGS -e bin-arm64-efi/${vid}${did}.efidrv"} + %endif + + # Combine them into FAT EFI ROMs using EfiRom + EfiRom $EFI_ARGS -o efi-${name}.rom +done + +# QEMU's padding logic for legacy ROMs +for name in e1000 eepro100 ne2k_pci pcnet rtl8139 virtio; do + size=$(stat -c '%s' pxe-${name}.rom) + if [ "$name" = "virtio" ]; then + if [ $size -gt 65536 ]; then echo "virtio rom too large"; exit 1; fi + else + if [ $size -gt 131072 ]; then echo "pxe rom $name too large"; exit 1; fi + if [ $size -le 65536 ]; then + perl util/padimg.pl pxe-${name}.rom -s 65536 -b 255 + echo -ne "SEGMENT OVERAGE\0" >> pxe-${name}.rom + fi + fi +done + +rm config/local/general.h +rm config/local/console.h +rm -rf bin bin-i386-efi bin-x86_64-efi bin-arm64-efi +# End of building QEMU ROMs + %ifarch %{ix86} x86_64 make_ipxe bin-i386-efi/ipxe.efi make_ipxe bin-i386-efi/snp.efi @@ -163,6 +255,10 @@ ln -s ipxe.sdsk %{buildroot}/%{_datadir}/%{name}/floppy.img %endif +mkdir -p %{buildroot}/%{_datadir}/qemu/ +install -m0644 src/pxe-*.rom %{buildroot}/%{_datadir}/qemu/ +install -m0644 src/efi-*.rom %{buildroot}/%{_datadir}/qemu/ + %files bootimgs %defattr(-,root,root) %dir %{_datadir}/%{name} @@ -180,3 +276,9 @@ %{_datadir}/%{name}/undionly.kpxe %license COPYING COPYING.GPLv2 COPYING.UBDL +%files qemu +%defattr(-,root,root) +%dir %{_datadir}/qemu +%{_datadir}/qemu/pxe-*.rom +%{_datadir}/qemu/efi-*.rom +
