diff options
Diffstat (limited to 'ipxe.spec')
-rw-r--r-- | ipxe.spec | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/ipxe.spec b/ipxe.spec new file mode 100644 index 0000000..20956b3 --- /dev/null +++ b/ipxe.spec @@ -0,0 +1,259 @@ +%global formats rom +%global qemuroms 10222000 10ec8029 8086100e 10ec8139 1af41000 80861209 808610d3 15ad07b0 +%global buildarches x86_64 +%global debug_package %{nil} +%global enable_i386 0 + +Name: ipxe +Version: 1.21.1 +Release: 5 +Summary: A network boot loader +Epoch: 1 +License: GPLv2 with additional permissions and BSD +URL: http://ipxe.org/ +Source0: https://github.com/ipxe/ipxe/archive/v%{version}.tar.gz +Patch0001: 0001-build-customize-configuration.patch +Patch0002: 0002-Use-spec-compliant-timeouts.patch +Patch0003: 0003-librm-Use-explicit-operand-size-when-pushing-a-label.patch + +Patch6000: backport-avoid-infinite-loop-on-allocation-failure-in.patch +Patch6001: backport-ensure-that-pci_read_config-initialises-all-fields.patch +Patch6002: backport-do-not-clear-current-working-url-when-executing-embedded-image.patch +Patch6003: backport-retain-original-encodings-for-path-query-and-fragment-fields.patch +Patch6004: backport-allow-for-relative-uris-that-include-colons-within-the-path.patch + +%ifarch %{buildarches} +BuildRequires: perl-interpreter perl-Getopt-Long syslinux mtools genisoimage edk2-devel +BuildRequires: xz-devel gcc binutils-devel +Obsoletes: gpxe <= 1.0.1 + +%package bootimgs +Summary: Network boot loader images in bootable USB, CD, floppy and GRUB formats +BuildArch: noarch +Obsoletes: gpxe-bootimgs <= 1.0.1 + +%package roms +Summary: Network boot loader roms in .rom format +Requires: %{name}-roms-qemu = %{epoch}:%{version}-%{release} +BuildArch: noarch +Obsoletes: gpxe-roms <= 1.0.1 + +%package roms-qemu +Summary: Network boot loader roms supported by QEMU, .rom format +BuildArch: noarch +Obsoletes: gpxe-roms-qemu <= 1.0.1 + +%description bootimgs +iPXE is an open source network bootloader. It provides a direct +replacement for proprietary PXE ROMs, with many extra features such as +DNS, HTTP, iSCSI, etc. + +This package contains the iPXE boot images in USB, CD, floppy, and PXE +UNDI formats. + +%description roms +iPXE is an open source network bootloader. It provides a direct +replacement for proprietary PXE ROMs, with many extra features such as +DNS, HTTP, iSCSI, etc. + +This package contains the iPXE roms in .rom format. + + +%description roms-qemu +iPXE is an open source network bootloader. It provides a direct +replacement for proprietary PXE ROMs, with many extra features such as +DNS, HTTP, iSCSI, etc. + +This package contains the iPXE ROMs for devices emulated by QEMU, in +.rom format. +%endif + +%description +iPXE is an open source network bootloader. It provides a direct +replacement for proprietary PXE ROMs, with many extra features such as +DNS, HTTP, iSCSI, etc. + +%prep +%setup -q -n %{name}-%{version} +%autopatch -p1 + + +%build +%ifarch %{buildarches} +cd src + +rm -rf drivers/net/ath/ath9k + +make_ipxe() { + make %{?_smp_mflags} \ + NO_WERROR=1 V=1 \ + GITVERSION=%{hash} \ + "$@" +} + +make_ipxe bin-i386-efi/ipxe.efi bin-x86_64-efi/ipxe.efi bin-x86_64-linux/tests.linux \ + %if 0%{?enable i386} + bin-i386-linux/tests.linux + %endif + +make_ipxe ISOLINUX_BIN=/usr/share/syslinux/isolinux.bin \ + bin/undionly.kpxe bin/ipxe.{dsk,iso,usb,lkrn} \ + allroms + +mkdir bin-combined +for rom in %{qemuroms}; do + make_ipxe CONFIG=qemu bin/${rom}.rom +%if 0%{?enable_i386} + make_ipxe CONFIG=qemu bin-i386-efi/${rom}.efidrv +%endif + make_ipxe CONFIG=qemu bin-x86_64-efi/${rom}.efidrv + vid="0x${rom%%????}" + did="0x${rom#????}" + EfiRom -f "$vid" -i "$did" --pci23 \ + -b bin/${rom}.rom \ +%if 0%{?enable_i386} + -ec bin-i386-efi/${rom}.efidrv \ +%endif + -ec bin-x86_64-efi/${rom}.efidrv \ + -o bin-combined/${rom}.rom + EfiRom -d bin-combined/${rom}.rom + truncate -s \>256K bin-combined/${rom}.rom + test $(stat -c '%s' bin-combined/${rom}.rom) -le $((256 * 1024)) +done + +%endif + +%install +%ifarch %{buildarches} +mkdir -p %{buildroot}/%{_datadir}/%{name}/ +mkdir -p %{buildroot}/%{_datadir}/%{name}.efi/ +pushd src/bin/ + +cp -a undionly.kpxe ipxe.{iso,usb,dsk,lkrn} %{buildroot}/%{_datadir}/%{name}/ + +for fmt in %{formats};do + for img in *.${fmt};do + if [ -e $img ]; then + cp -a $img %{buildroot}/%{_datadir}/%{name}/ + echo %{_datadir}/%{name}/$img >> ../../${fmt}.list + fi + done +done +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 + +for fmt in rom ;do + for rom in %{qemuroms} ; do + sed -i -e "/\/${rom}.${fmt}/d" ${fmt}.list + echo %{_datadir}/%{name}/${rom}.${fmt} >> qemu.${fmt}.list + done +done +for rom in %{qemuroms}; do + cp src/bin-combined/${rom}.rom %{buildroot}/%{_datadir}/%{name}.efi/ + echo %{_datadir}/%{name}.efi/${rom}.rom >> qemu.rom.list +done +%endif + +%check +%ifarch %{buildarches} +cd ~/rpmbuild/BUILD/%{name}-%{version}/src/bin-x86_64-linux/ +./tests.linux +%if 0%{?enable_i386} +cd ~/rpmbuild/BUILD/%{name}-%{version}/src/bin-i386-linux/ +./tests.linux +%endif +%endif + +%ifarch %{buildarches} +%files bootimgs +%defattr(-,root,root) +%license COPYING COPYING.GPLv2 COPYING.UBDL +%dir %{_datadir}/%{name} +%{_datadir}/%{name}/ipxe.iso +%{_datadir}/%{name}/ipxe.usb +%{_datadir}/%{name}/ipxe.dsk +%{_datadir}/%{name}/ipxe.lkrn +%{_datadir}/%{name}/ipxe-i386.efi +%{_datadir}/%{name}/ipxe-x86_64.efi +%{_datadir}/%{name}/undionly.kpxe + +%files roms -f rom.list +%defattr(-,root,root) +%license COPYING COPYING.GPLv2 COPYING.UBDL +%dir %{_datadir}/%{name} + +%files roms-qemu -f qemu.rom.list +%defattr(-,root,root) +%license COPYING COPYING.GPLv2 COPYING.UBDL +%dir %{_datadir}/%{name} +%dir %{_datadir}/%{name}.efi +%endif + +%changelog +* Fri Mar 15 2024 herengui <herengui@kylinsec.com.cn> - 1:1.21.1-5 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC: fix errors when compiling with binutils-2.41 + +* Wed Nov 23 2022 zhangqiumiao <zhangqiumiao1@huawei.com> - 1:1.21.1-4 +- Type:bugfix +- CVE:NA +- SUG:NA +- DESC:[pci] Ensure that pci_read_config() initialises all fields + [image] Do not clear current working URI when executing embedded image + [uri] Retain original encodings for path, query, and fragment fields + [uri] Allow for relative URIs that include colons within the path + +* Sat Mar 26 2022 wangkerong <wangkerong@h-partners.com> - 1.21.1-3 +- enable test + +* Wed Jun 09 2021 wangkerong <wangkerong@huawei.com> - 1.21.1-2 +- Type:bugfix +- Id:NA +- SUG:NA +- DESC: round commmunity patch fix Avoid infinite loop on allocation failure + +* Wed Feb 03 2021 gaihuiying <gaihuiying1@huawei.com> - 1.21.1-1 +- Type:requirement +- Id:NA +- SUG:NA +- DESC: update ipxe to 1.21.1 + +* Thu Sep 03 2020 zhouyihang <zhouyihang3@huawei.com> - 1.20.1-2 +- Type:bugfix +- Id:NA +- SUG:NA +- DESC: add epoch for roms-qemu when required by roms + +* Tue Jun 23 2020 zhujunhao <zhujunhao8@huawei.com> - 1.20.1-1 +- update to 1.20.1 + +* Mon Jan 13 2020 openEuler Buildteam <buildteam@openeuler.org> - 20190125-5 +- Type:bugfix +- Id:NA +- SUG:NA +- DESC: add bootimgs roms roms-qemu subpackages + +* Fri Nov 29 2019 openEuler Buildteam <buildteam@openeuler.org> - 20190125-4 +- Type:bugfix +- Id:NA +- SUG:NA +- DESC: fix build error on x86_64 + +* Sat Oct 19 2019 openEuler Buildteam <buildteam@openeuler.org> - 20190125-3 +- Type:bugfix +- Id:NA +- SUG:NA +- DESC:change the directory of the license files + +* Thu Oct 10 2019 openEuler Buildteam <buildteam@openeuler.org> - 20190125-2 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC:add requires + +* Thu Sep 19 2019 openEuler Buildteam <buildteam@openeuler.org> - 20190125-1 +- Package init |