summaryrefslogtreecommitdiff
path: root/ipxe.spec
diff options
context:
space:
mode:
Diffstat (limited to 'ipxe.spec')
-rw-r--r--ipxe.spec259
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