Package init

This commit is contained in:
overweight 2019-09-30 10:53:29 -04:00
commit d3df0c1ea8
4 changed files with 231 additions and 0 deletions

View File

@ -0,0 +1,6 @@
diff -rupN ipxe-20190125-git36a4c85f/src/config/local/general.h ipxe-20190125-git36a4c85f.new/src/config/local/general.h
--- ipxe-20190125-git36a4c85f/src/config/local/general.h 1970-01-01 01:00:00.000000000 +0100
+++ ipxe-20190125-git36a4c85f.new/src/config/local/general.h 2019-02-01 16:40:42.725293033 +0000
@@ -0,0 +1,2 @@
+/* Enable IPv6. */
+#define NET_PROTO_IPV6

View File

@ -0,0 +1,98 @@
From bc252caa54fcfb2e9fd0ddb01ebaa50192e85c38 Mon Sep 17 00:00:00 2001
From: Alex Williamson <alex.williamson@redhat.com>
Date: Wed, 21 Oct 2015 11:18:40 +0200
Subject: Use spec compliant timeouts
Message-id: <20150428212403.31299.29391.stgit@gimli.home>
Patchwork-id: 64951
O-Subject: [RHEL7.2 ipxe PATCH 2/2] [dhcp][RHEL-only] Use spec compliant timeouts
Bugzilla: 1196352
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
RH-Acked-by: Gerd Hoffmann <kraxel@redhat.com>
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
Use local config to override iPXE's abbreviated DHCP timeouts using
the recommended values for spec compliance. This matches the state
of RHEL6 gPXE DHCP timeouts after bz968474 + bz1206042
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
(cherry picked from commit 7038f41c0131d263de5165b416500009acdbf550)
---
src/config/local/.gitignore | 1 -
src/config/local/dhcp.h | 62 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 62 insertions(+), 1 deletion(-)
delete mode 100644 src/config/local/.gitignore
create mode 100644 src/config/local/dhcp.h
diff --git a/src/config/local/dhcp.h b/src/config/local/dhcp.h
new file mode 100644
index 0000000..83df5b8
--- /dev/null
+++ b/src/config/local/dhcp.h
@@ -0,0 +1,62 @@
+/*
+ * Downstream localization
+ *
+ * For RHEL, use spec compliant DHCP timeouts (bz1196352)
+ */
+
+/*
+ * PXE spec defines timeouts of 4, 8, 16, 32 seconds
+ */
+#undef DHCP_DISC_START_TIMEOUT_SEC
+#define DHCP_DISC_START_TIMEOUT_SEC 4
+#undef DHCP_DISC_END_TIMEOUT_SEC
+#define DHCP_DISC_END_TIMEOUT_SEC 32
+
+/*
+ * Elapsed time used for early break waiting for ProxyDHCP, this therefore
+ * needs to be less than the cumulative time for the first 2 timeouts.
+ */
+#undef DHCP_DISC_PROXY_TIMEOUT_SEC
+#define DHCP_DISC_PROXY_TIMEOUT_SEC 11
+
+/*
+ * Approximate PXE spec requirement using minimum timeout (0.25s) for
+ * timeouts of 0.25, 0.5, 1, 2, 4
+ */
+#undef DHCP_REQ_START_TIMEOUT_SEC
+#define DHCP_REQ_START_TIMEOUT_SEC 0
+#undef DHCP_REQ_END_TIMEOUT_SEC
+#define DHCP_REQ_END_TIMEOUT_SEC 4
+
+/*
+ * Same as normal request phase, except non-fatal, so we extend the timer
+ * to 8 and set the early timeout to an elapsed time value that causes a
+ * break after the 4 second timeout. At least that's what we'd like to do,
+ * but our timer operates at 18Hz and has a minimum resolution of 7 cycles.
+ * Therefore the above quarter-second starting timeout looks more like
+ * 0.39s, 0.78s, 1.56s, 3.11s, 6.22s. If we had an ideal timer, we could
+ * set the timeout to 7s (0.25 + 0.5 + 1 + 2 + 4 = 7.75s) and exit without
+ * failure when the timer rolls over to 8s. With our timer, we get 0.39 +
+ * 0.78 + 1.56 + 3.11 = 5.84s. The next timeout would take us to 12.06s
+ * (+6.22). That seems like a long time to wait for an optional reply, so
+ * we reduce the early timeout to 5s to exit before the timer exceeds the
+ * max and causes a failure. This still adds one extra cycle vs the
+ * upstream defaults.
+ */
+#undef DHCP_PROXY_START_TIMEOUT_SEC
+#define DHCP_PROXY_START_TIMEOUT_SEC 0
+#undef DHCP_PROXY_END_TIMEOUT_SEC
+#define DHCP_PROXY_END_TIMEOUT_SEC 8
+#undef DHCP_REQ_PROXY_TIMEOUT_SEC
+#define DHCP_REQ_PROXY_TIMEOUT_SEC 5
+
+/*
+ * Same as above, retry each server using our approximation of standard
+ * timeouts and exit before timer induced failure.
+ */
+#undef PXEBS_START_TIMEOUT_SEC
+#define PXEBS_START_TIMEOUT_SEC 0
+#undef PXEBS_END_TIMEOUT_SEC
+#define PXEBS_END_TIMEOUT_SEC 8
+#undef PXEBS_MAX_TIMEOUT_SEC
+#define PXEBS_MAX_TIMEOUT_SEC 5
--
1.8.3.1

Binary file not shown.

127
ipxe.spec Normal file
View File

@ -0,0 +1,127 @@
%global formats rom
%global qemuroms 10222000 10ec8029 8086100e 10ec8139 1af41000 80861209 808610d3 15ad07b0
%global buildarches %{ix86} x86_64
%global debug_package %{nil}
%global hash 36a4c85f
Name: ipxe
Version: 20190125
Release: 1
Summary: A network boot loader
License: GPLv2 with additional permissions and BSD
URL: http://ipxe.org/
Source0: %{name}-%{version}-git%{hash}.tar.xz
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}-%{version}-git%{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 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
* Thu Sep 19 2019 openEuler Buildteam <buildteam@openeuler.org> - 20190125-1
- Package init