Hi Coiby,
I finally found time to look at your patch. All in all it looks good to
me. I've also built the new three packages on a fresh F38 with only
rpmdevtools installed that lead to some problems in the new
makedumpfile.spec and kdump-utils.spec. But those are only minor and
can be fixed easily (see below). With those nits fixed the files
contained in the new three rpms were identical to the old kexec-tools
(modulo the obvious changes like moving the docs from kexec-tools to
kdump-utils).
On Thu, 24 Aug 2023 15:45:05 +0800
Coiby Xu <coxu(a)redhat.com> wrote:
Related:
https://bugzilla.redhat.com/show_bug.cgi?id=2121912
This patch splits current kexec-tools into three packages kexec-tools,
kdump-utils and makedumpfile.
- the new kexec-tools is the same to the upstream kexec-tools which
provides the kexec and vmcore-dmesg binaries
- kdump-utils is responsible for building the kdump initrd and loading
it via the kexec binary
- makedumpfile is responsible for making a small dumpfile of vmcore
It's desirable to make this package modular because 1) now there is a
growing user base to use the kexec reboot 2) packaging makedumpfile and
kexec-tools alone will reduce the maintenance work.
"dnf repoquery --whatrequires kexec-tools" shows the following packages
requires kexec-tools,
- abrt-addon-vmcore
- anaconda-install-env-deps
- cockpit-kdump
- dracut-kiwi-oem-dump
- realtime-setup
- retrace-server
For those packages that need kdump, the dependency needs to point to
the new kdump-utils package instead.
Note some small improvements are also made in this change,
- stop mkdir'ing kcp as kcp.c has been gone long time ago
- use autosetup to automatically apply patches
- add the GPL2 LICENSE for kdump-utils (the source code of makedumpfile
and kexec-tools already contain the license)
- remove unneeded Obsoletes
Cc: fedora-devel(a)lists.fedorahosted.org
Cc: Dusty Mabe <dustymabe(a)redhat.com>
Cc: crash-catcher-owner(a)lists.fedorahosted.org
CC: anaconda-devel(a)lists.fedoraproject.org
Cc: Martin Pitt <mpitt(a)redhat.com>
Cc: kiwi-images(a)googlegroups.com
Cc: Clark Williams <williams(a)redhat.com>
Cc: Matěj Grabovský <mgrabovs(a)redhat.com>
Suggested-by: Zbigniew Jędrzejewski-Szmek <zbyszek(a)in.waw.pl>
Suggested-by: Philipp Rudo <prudo(a)redhat.com>
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
---
v1
- Zbigniew
- Use Provides correctly
- use one-per-line for BuildRequires, Requires and etc.
- don't change kdump.service state unexpectedly
- further split out makedumpfile [Philipp]
- s/kdump-tools/kdump-utils to have a unique name [Dave]
---
COPYING | 341 ++++++++++++++++++++++++++++++++++++++++++
kdump-utils.spec | 297 +++++++++++++++++++++++++++++++++++++
kexec-tools.spec | 368 +++-------------------------------------------
makedumpfile.spec | 79 ++++++++++
4 files changed, 734 insertions(+), 351 deletions(-)
create mode 100644 COPYING
create mode 100644 kdump-utils.spec
create mode 100644 makedumpfile.spec
diff --git a/COPYING b/COPYING
new file mode 100644
index 00000000..a52b16e4
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,341 @@
[...]
I'm no lawyer so I haven't checked the COPYING ;-)
diff --git a/kdump-utils.spec b/kdump-utils.spec
new file mode 100644
index 00000000..af10df62
--- /dev/null
+++ b/kdump-utils.spec
@@ -0,0 +1,297 @@
+Name: kdump-utils
+Version: 2.0.26
+Release: 9%{?dist}
In the meantime...
s/2.0.26-9/2.0.27-1/g
+Summary: Kernel crash dump collection tools
+
+License: GPL-2.0-only
+Obsoletes: kexec-tools < 2.0.26-9
+Provides: kexec-tools = 2.0.26-9
+%ifarch ppc64 ppc64le
+Requires(post): servicelog
+Recommends: keyutils
+%endif
+Requires(pre): coreutils
+Requires(pre): sed
+Requires: kexec-tools >= 2.0.26-9
+Requires: dracut >= 058
+Requires: dracut-network >= 058
+Requires: dracut-squash >= 058
+Requires: ethtool
+Requires: util-linux
+Requires: binutils
+Requires: makedumpfile
+Recommends: grubby
+Recommends: hostname
+BuildRequires: systemd-rpm-macros
+
+%ifnarch s390x
+Requires: systemd-udev%{?_isa}
+%endif
+
+Source1: kdumpctl
+Source2: COPYING
+Source3: gen-kdump-sysconfig.sh
+Source4: gen-kdump-conf.sh
+Source7: mkdumprd
+Source10: kexec-kdump-howto.txt
+Source11: fadump-howto.txt
+Source12: mkdumprd.8
+Source13: 98-kexec.rules
+Source14: 98-kexec.rules.ppc64
+Source15: kdump.conf.5
+Source16: kdump.service
+Source20: kdump-lib.sh
+Source21: kdump-in-cluster-environment.txt
+Source22: kdump-dep-generator.sh
+Source23: kdump-lib-initramfs.sh
+Source25: kdumpctl.8
+Source26: live-image-kdump-howto.txt
+Source27: early-kdump-howto.txt
+Source28: kdump-udev-throttler
+Source30: 60-kdump.install
+Source31: kdump-logger.sh
+Source32: mkfadumprd
+Source33: 92-crashkernel.install
+Source34: crashkernel-howto.txt
+Source35: kdump-migrate-action.sh
+Source36: kdump-restart.sh
+Source37: 60-fadump.install
This would be a great time to group this historically grown list into
namespaces. That's some tedious work but I believe it will be worth
it in the long run. Anyway, your the author so it's up to you if you
want to include it or not.
+#######################################
+# These are sources for mkdumpramfs
+# Which is currently in development
+#######################################
+Source100: dracut-kdump.sh
+Source101: dracut-module-setup.sh
+Source102: dracut-monitor_dd_progress
+Source104: dracut-kdump-emergency.service
+Source106: dracut-kdump-capture.service
+Source107: dracut-kdump-emergency.target
+Source108: dracut-early-kdump.sh
+Source109: dracut-early-kdump-module-setup.sh
+
+Source200: dracut-fadump-init-fadump.sh
+Source201: dracut-fadump-module-setup.sh
+
+%description
+kdump-utils is reponsible for collecting the crash kernel dump. It builds and
+loads the kdump initramfs so when a kernel crashes, the system will boot the
+kdump kernel and initramfs to save the colletecd crash kernel dump to specified
+target.
+
+%autosetup
+
+%ifarch ppc
+%define archdef ARCH=ppc
+%endif
+
+%build
+# Generate sysconfig file
+%{SOURCE3} %{_target_cpu} > kdump.sysconfig
+%{SOURCE4} %{_target_cpu} > kdump.conf
See my comment in kexec-tools.spec below
+%install
[...]
+
+%define remove_dracut_prefix() %(echo -n %1|sed 's/.*dracut-//g')
+%define remove_dracut_early_kdump_prefix() %(echo -n %1|sed
's/.*dracut-early-kdump-//g')
+%define remove_dracut_fadump_prefix() %(echo -n %1|sed 's/.*dracut-fadump-//g')
+
+# deal with dracut modules
+mkdir -p -m755 $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase
+cp %{SOURCE100}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE100}}
+cp %{SOURCE101}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE101}}
+cp %{SOURCE102}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE102}}
+cp %{SOURCE104}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE104}}
+cp %{SOURCE106}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE106}}
+cp %{SOURCE107}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE107}}
+chmod 755
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE100}}
+chmod 755
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE101}}
+mkdir -p -m755 $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99earlykdump
+cp %{SOURCE108}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99earlykdump/%{remove_dracut_prefix
%{SOURCE108}}
+cp %{SOURCE109}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99earlykdump/%{remove_dracut_early_kdump_prefix
%{SOURCE109}}
+chmod 755
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99earlykdump/%{remove_dracut_prefix
%{SOURCE108}}
+chmod 755
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99earlykdump/%{remove_dracut_early_kdump_prefix
%{SOURCE109}}
+%ifarch ppc64 ppc64le
+mkdir -p -m755 $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99zz-fadumpinit
+cp %{SOURCE200}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99zz-fadumpinit/%{remove_dracut_fadump_prefix
%{SOURCE200}}
+cp %{SOURCE201}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99zz-fadumpinit/%{remove_dracut_fadump_prefix
%{SOURCE201}}
+chmod 755
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99zz-fadumpinit/%{remove_dracut_fadump_prefix
%{SOURCE200}}
+chmod 755
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99zz-fadumpinit/%{remove_dracut_fadump_prefix
%{SOURCE201}}
+%endif
+
+
+%define dracutlibdir %{_prefix}/lib/dracut
+#and move the custom dracut modules to the dracut directory
+mkdir -p $RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/
+mv $RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/*
$RPM_BUILD_ROOT/%{dracutlibdir}/modules.d/
Just FYI, I've posted a patch that cleans up this indirect handling of
the dracut files. So there will be some conflict.
+
+
+%triggerprein -- kexec-tools < 2.0.26-9
+touch %{_localstatedir}/lib/rpm-state/kexec-tools.no-preset
+
+%post
+rm %{_localstatedir}/lib/rpm-state/kexec-tools.no-preset 2>/dev/null &&
return 0
Just a quick question for my understanding. This kexec-tools.no-preset
file is a workaround to distinguish between a fresh install and an
upgrade from an older kexec-tools. So that we can skip the %post stage
if this is an upgrade. Is that correct?
If so I would appreciate if you could add a short comment ideally with
a deadline when this workaround is no longer needed and can be removes.
That would really help to clean up the spec in the future when there is
no more supported update path from an old kexec-tools package.
+# Initial installation
+%systemd_post kdump.service
+
+touch /etc/kdump.conf
+
+%ifarch ppc64 ppc64le
+servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh
2>/dev/null
+servicelog_notify --add --command=/usr/lib/kdump/kdump-migrate-action.sh
--match='refcode="#MIGRATE" and serviceable=0' --type=EVENT
--method=pairs_stdin
+%endif
+
+# This portion of the script is temporary. Its only here
+# to fix up broken boxes that require special settings
+# in /etc/sysconfig/kdump. It will be removed when
+# These systems are fixed.
+
+if [ -d /proc/bus/mckinley ]
+then
+ # This is for HP zx1 machines
+ # They require machvec=dig on the kernel command line
+ sed -e's/\(^KDUMP_COMMANDLINE_APPEND.*\)\("$\)/\1 machvec=dig"/' \
+ /etc/sysconfig/kdump > /etc/sysconfig/kdump.new
+ mv /etc/sysconfig/kdump.new /etc/sysconfig/kdump
+elif [ -d /proc/sgi_sn ]
+then
+ # This is for SGI SN boxes
+ # They require the --noio option to kexec
+ # since they don't support legacy io
+ sed -e's/\(^KEXEC_ARGS.*\)\("$\)/\1 --noio"/' \
+ /etc/sysconfig/kdump > /etc/sysconfig/kdump.new
+ mv /etc/sysconfig/kdump.new /etc/sysconfig/kdump
+fi
Just FYI, I've posted a patch that cleans up this legacy IA64 support.
+
+%postun
+%systemd_postun_with_restart kdump.service
+
+%preun
+%ifarch ppc64 ppc64le
+servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh
+%endif
+%systemd_preun kdump.service
+
+%triggerin -- kernel-kdump
+touch %{_sysconfdir}/kdump.conf
There is no more kernel-kdump. So I believe we can remove this part.
+
+%triggerpostun -- kernel kernel-xen kernel-debug kernel-PAE kernel-kdump
Same here. This should be handled by 60-kdump.install nowadays.
+# List out the initrds here, strip out version nubmers
+# and search for corresponding kernel installs, if a kernel
+# is not found, remove the corresponding kdump initrd
+
+
+IMGDIR=/boot
+for i in `ls $IMGDIR/initramfs*kdump.img 2>/dev/null`
+do
+ KDVER=`echo $i | sed -e's/^.*initramfs-//' -e's/kdump.*$//'`
+ if [ ! -e $IMGDIR/vmlinuz-$KDVER ]
+ then
+ # We have found an initrd with no corresponding kernel
+ # so we should be able to remove it
+ rm -f $i
+ fi
+done
+
[...]
diff --git a/kexec-tools.spec b/kexec-tools.spec
index ff8b4963..8153df23 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -1,130 +1,25 @@
[...]
@@ -142,260 +37,31 @@ autoreconf
--build=powerpc64le-redhat-linux-gnu \
%endif
--sbindir=/usr/sbin
-rm -f kexec-tools.spec.in
-# setup the docs
-cp %{SOURCE10} .
-cp %{SOURCE11} .
-cp %{SOURCE21} .
-cp %{SOURCE26} .
-cp %{SOURCE27} .
-cp %{SOURCE34} .
These lines are missing in the new kdump-utils.spec. This caused a
build breakage with
RPM build errors:
File not found:
/root/rpmbuild/BUILDROOT/kdump-utils-2.0.26-9.fc38.x86_64/usr/share/doc/kdump-utils/kexec-kdump-howto.txt
File not found:
/root/rpmbuild/BUILDROOT/kdump-utils-2.0.26-9.fc38.x86_64/usr/share/doc/kdump-utils/early-kdump-howto.txt
File not found:
/root/rpmbuild/BUILDROOT/kdump-utils-2.0.26-9.fc38.x86_64/usr/share/doc/kdump-utils/fadump-howto.txt
File not found:
/root/rpmbuild/BUILDROOT/kdump-utils-2.0.26-9.fc38.x86_64/usr/share/doc/kdump-utils/kdump-in-cluster-environment.txt
File not found:
/root/rpmbuild/BUILDROOT/kdump-utils-2.0.26-9.fc38.x86_64/usr/share/doc/kdump-utils/live-image-kdump-howto.txt
File not found:
/root/rpmbuild/BUILDROOT/kdump-utils-2.0.26-9.fc38.x86_64/usr/share/doc/kdump-utils/crashkernel-howto.txt
File not found:
/root/rpmbuild/BUILDROOT/kdump-utils-2.0.26-9.fc38.x86_64/usr/share/licenses/kdump-utils/COPYING
Alternatively you could create the doc dir and install the files
manually under %install.
[...]
diff --git a/makedumpfile.spec b/makedumpfile.spec
new file mode 100644
index 00000000..b80be181
--- /dev/null
+++ b/makedumpfile.spec
@@ -0,0 +1,79 @@
+%global eppic_ver e8844d3793471163ae4a56d8f95897be9e5bd554
+%global eppic_shortver %(c=%{eppic_ver}; echo ${c:0:7})
+Name: makedumpfile
+Version: 1.7.3
+Summary: makedumpfile package
+Release: 1%{?dist}
+
+License: GPL-2.0-only
+URL:
https://github.com/makedumpfile/makedumpfile
+Source0:
https://github.com/makedumpfile/rhkdump/archive/%{version}/%{name}-%{vers...
spectools -g returned with an 404 to me. Did you mean
s/rhkdump/makedumpfile/?
+Source1:
https://github.com/lucchouina/eppic/archive/%{eppic_ver}/eppic-%{eppic_sh...
+# [PATCH] Mark start of 1.7.4 development phase with version 1.7.3++
+# Author: Kazuhito Hagio <k-hagio-ab(a)nec.com>
+Patch1: 0001-PATCH-Mark-start-of-1.7.4-development-phase-with-ver.patch
+# [PATCH] Add debugging information for DWARF information retrieval
+# Author: Kazuhito Hagio <k-hagio-ab(a)nec.com>
+Patch2: 0002-PATCH-Add-debugging-information-for-DWARF-informatio.patch
+# [PATCH] Support struct module_memory on Linux 6.4 and later
+# Author: Kazuhito Hagio <k-hagio-ab(a)nec.com>
+Patch3: 0003-PATCH-Support-struct-module_memory-on-Linux-6.4-and-.patch
Not entirely sure how packit works. But shouldn't those patches be added
to the dist_git with patch as well? At least for me rpmbuild
complained that they are missing.
Thanks
Philipp