ipxe/ipxe.spec
2019-11-06 19:34:08 +08:00

141 lines
3.9 KiB
RPMSpec

%global formats rom
%global qemuroms 10222000 10ec8029 8086100e 10ec8139 1af41000 80861209 808610d3 15ad07b0
%global buildarches %{ix86} x86_64
%global debug_package %{nil}
%global hash 3fe683e
Name: ipxe
Version: 20190930
Release: 3
Summary: A network boot loader
License: GPLv2 with additional permissions and BSD
URL: http://ipxe.org/
Source0: https://git.ipxe.org/ipxe.git/snapshot/%{name}-%{hash}.tar.bz2
Patch0001: 0001-build-customize-configuration.patch
Patch0002: 0002-Use-spec-compliant-timeouts.patch
%ifarch %{buildarches}
BuildRequires: perl-interpreter perl-Getopt-Long syslinux mtools genisoimage edk2-tools
BuildRequires: xz-devel gcc binutils-devel binutils-x86_64-linux-gnu gcc-x86_64-linux-gnu
Obsoletes: gpxe-bootimgs gpxe-roms gpxe-roms-qem
Provides: %{name}-bootimgs %{name}-roms %{name}-roms-qemu
Obsoletes: %{name}-bootimgs %{name}-roms %{name}-roms-qemu
%endif
Obsoletes: gpxe <= 1.0.1
%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}-%{hash}
%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} \
CROSS_COMPILE=x86_64-linux-gnu- \
"$@"
}
make_ipxe bin-i386-efi/ipxe.efi bin-x86_64-efi/ipxe.efi
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
make_ipxe CONFIG=qemu bin-i386-efi/${rom}.efidrv
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 \
-ec bin-i386-efi/${rom}.efidrv \
-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/
done
%endif
%ifarch %{buildarches}
%files -f rom.list
%defattr(-,root,root)
%doc README
%license COPYING COPYING.GPLv2 COPYING.UBDL
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}.efi
%{_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
%{_datadir}/%{name}.efi/*.rom
%endif
%changelog
* 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