diff --git a/ipxe.spec b/ipxe.spec index c895363..adeab44 100644 --- a/ipxe.spec +++ b/ipxe.spec @@ -2,17 +2,16 @@ %global cross 1 %endif -# PCI IDs (vendor,product) of the ROMS we want for QEMU -# -# pcnet32: 0x1022 0x2000 -# ne2k_pci: 0x10ec 0x8029 -# e1000: 0x8086 0x100e -# rtl8139: 0x10ec 0x8139 -# virtio-net: 0x1af4 0x1000 -# eepro100: 0x8086 0x1209 -# e1000e: 0x8086 0x10d3 -# vmxnet3: 0x15ad 0x07b0 -%global qemuroms 10222000 10ec8029 8086100e 10ec8139 1af41000 80861209 808610d3 15ad07b0 +# ROMS we want for QEMU with format PCIID:QEMUNAME +%global qemuroms \\\ + 10222000:pcnet \\\ + 10ec8029:ne2k_pci \\\ + 8086100e:e1000 \\\ + 10ec8139:rtl8139 \\\ + 1af41000:virtio \\\ + 80861209:eepro100 \\\ + 808610d3:e1000e \\\ + 15ad07b0:vmxnet3 # We only build the ROMs if on an x86 build host. The resulting # binary RPM will be noarch, so other archs will still be able @@ -46,7 +45,7 @@ Name: ipxe Version: %{date} -Release: 4.git%{hash}%{?dist} +Release: 5.git%{hash}%{?dist} Summary: A network boot loader License: GPLv2 with additional permissions and BSD @@ -159,7 +158,9 @@ make_ipxe ISOLINUX_BIN=/usr/share/syslinux/isolinux.bin \ # build roms with efi support for qemu mkdir bin-combined -for rom in %{qemuroms}; do +for romstr in %{qemuroms}; do + rom=$(echo "$romstr" | cut -d ":" -f 1) + make_ipxe CONFIG=qemu bin/${rom}.rom make_ipxe CONFIG=qemu bin-x86_64-efi/${rom}.efidrv vid="0x${rom%%????}" @@ -199,17 +200,28 @@ popd cp -a src/bin-i386-efi/ipxe.efi %{buildroot}/%{_datadir}/%{name}/ipxe-i386.efi cp -a src/bin-x86_64-efi/ipxe.efi %{buildroot}/%{_datadir}/%{name}/ipxe-x86_64.efi -# the roms supported by qemu will be packaged separatedly -# remove from the main rom list and add them to qemu.list -for rom in %{qemuroms}; do +mkdir -p %{buildroot}%{_datadir}/%{name}/qemu/ + +for romstr in %{qemuroms}; do + # the roms supported by qemu will be packaged separatedly + # remove from the main rom list and add them to qemu.list + rom=$(echo "$romstr" | cut -d ":" -f 1) + qemuname=$(echo "$romstr" | cut -d ":" -f 2) sed -i -e "/\/${rom}.rom/d" rom.list echo %{_datadir}/%{name}/${rom}.rom >> qemu.rom.list cp src/bin-combined/${rom}.rom %{buildroot}/%{_datadir}/%{name}.efi/ echo %{_datadir}/%{name}.efi/${rom}.rom >> qemu.rom.list + + # Set up symlinks with expected qemu firmware names + ln -s ../../ipxe/${rom}.rom %{buildroot}%{_datadir}/%{name}/qemu/pxe-${qemuname}.rom + ln -s ../../ipxe.efi/${rom}.rom %{buildroot}%{_datadir}/%{name}/qemu/efi-${qemuname}.rom done + +# endif buildarches %endif + %ifarch %{buildarches} %files bootimgs %dir %{_datadir}/%{name} @@ -229,10 +241,14 @@ done %files roms-qemu -f qemu.rom.list %dir %{_datadir}/%{name} %dir %{_datadir}/%{name}.efi +%{_datadir}/%{name}/qemu %doc COPYING COPYING.GPLv2 COPYING.UBDL %endif %changelog +* Wed Jul 07 2021 Cole Robinson - 20200823-5.git4bd064de +- Generate qemu compatible rom filenames + * Mon Jun 14 2021 Jiri Kucera - 20200823-4.git4bd064de - Replace genisoimage by xorriso