ipxe/ipxe.spec

241 lines
6.4 KiB
RPMSpec
Raw Normal View History

2019-09-30 10:53:29 -04:00
%global formats rom
%global qemuroms 10222000 10ec8029 8086100e 10ec8139 1af41000 80861209 808610d3 15ad07b0
2019-12-13 15:29:36 +08:00
%global buildarches x86_64
2019-09-30 10:53:29 -04:00
%global debug_package %{nil}
2021-02-03 11:26:57 +08:00
%global enable_i386 0
2019-09-30 10:53:29 -04:00
Name: ipxe
2021-02-03 11:26:57 +08:00
Version: 1.21.1
2022-03-26 10:35:08 +08:00
Release: 3
2019-09-30 10:53:29 -04:00
Summary: A network boot loader
2020-06-23 10:16:06 +08:00
Epoch: 1
2019-09-30 10:53:29 -04:00
License: GPLv2 with additional permissions and BSD
URL: http://ipxe.org/
2020-06-23 10:16:06 +08:00
Source0: https://github.com/ipxe/ipxe/archive/v%{version}.tar.gz
2019-09-30 10:53:29 -04:00
Patch0001: 0001-build-customize-configuration.patch
Patch0002: 0002-Use-spec-compliant-timeouts.patch
2021-06-09 10:02:49 +08:00
Patch6000: backport-avoid-infinite-loop-on-allocation-failure-in.patch
2019-09-30 10:53:29 -04:00
%ifarch %{buildarches}
2019-12-13 15:29:36 +08:00
BuildRequires: perl-interpreter perl-Getopt-Long syslinux mtools genisoimage edk2-devel
BuildRequires: xz-devel gcc binutils-devel
2019-09-30 10:53:29 -04:00
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
2019-09-30 10:53:29 -04:00
%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
2020-06-23 10:16:06 +08:00
%setup -q -n %{name}-%{version}
2019-09-30 10:53:29 -04:00
%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} \
"$@"
}
2022-03-26 10:35:08 +08:00
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
2019-09-30 10:53:29 -04:00
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
2021-02-03 11:26:57 +08:00
%if 0%{?enable_i386}
make_ipxe CONFIG=qemu bin-i386-efi/${rom}.efidrv
2021-02-03 11:26:57 +08:00
%endif
2019-09-30 10:53:29 -04:00
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 \
2021-02-03 11:26:57 +08:00
%if 0%{?enable_i386}
-ec bin-i386-efi/${rom}.efidrv \
2021-02-03 11:26:57 +08:00
%endif
2019-09-30 10:53:29 -04:00
-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
2019-09-30 10:53:29 -04:00
done
%endif
2022-03-26 10:35:08 +08:00
%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
2019-09-30 10:53:29 -04:00
%defattr(-,root,root)
2019-11-06 19:34:08 +08:00
%license COPYING COPYING.GPLv2 COPYING.UBDL
2019-09-30 10:53:29 -04:00
%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
2019-09-30 10:53:29 -04:00
%endif
%changelog
2022-03-26 10:35:08 +08:00
* Sat Mar 26 2022 wangkerong <wangkerong@h-partners.com> - 1.21.1-3
- enable test
2021-06-09 10:02:49 +08:00
* 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
2021-02-03 11:26:57 +08:00
* 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
2020-06-23 10:16:06 +08:00
* Tue Jun 22 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
2019-12-13 15:29:36 +08:00
* Fri Nov 29 2019 openEuler Buildteam <buildteam@openeuler.org> - 20190125-4
- Type:bugfix
- Id:NA
- SUG:NA
- DESC: fix build error on x86_64
2019-11-06 19:34:08 +08:00
* 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
2019-09-30 10:53:29 -04:00
* Thu Sep 19 2019 openEuler Buildteam <buildteam@openeuler.org> - 20190125-1
- Package init