From 3284511b3d912121ba73b4ddacd0704c4be2c1cacb1196bd1356a244526b81f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Tesa=C5=99=C3=ADk?= Date: Tue, 7 Jan 2020 14:03:29 +0000 Subject: [PATCH 1/3] Partial specfile cleanup. OBS-URL: https://build.opensuse.org/package/show/Kernel:kdump/kdump?expand=0&rev=191 --- kdump.spec | 59 +++++++++++++++++++++++++----------------------------- 1 file changed, 27 insertions(+), 32 deletions(-) diff --git a/kdump.spec b/kdump.spec index f762948..f8228dc 100644 --- a/kdump.spec +++ b/kdump.spec @@ -1,7 +1,7 @@ # # spec file for package kdump # -# Copyright (c) 2019 SUSE LLC +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,19 +18,19 @@ # on systemd distros, rpm-build requires systemd-rpm-macros, # which in turn defines %systemd_requires +%define systemd_present %{defined systemd_requires} + #Compat macro for new _fillupdir macro introduced in Nov 2017 %if ! %{defined _fillupdir} - %define _fillupdir /var/adm/fillup-templates + %define _fillupdir %{_localstatedir}/adm/fillup-templates %endif -%define systemd_present %{defined systemd_requires} - %define dracutlibdir %{_prefix}/lib/dracut %{!?_udevdir: %global _udevdir %(pkg-config --variable=udevdir udev)} %if "%{_udevdir}" == "" %if 0%{?suse_version} >= 1230 -%global _udevdir /usr/lib/udev +%global _udevdir %{_prefix}/lib/udev %else %global _udevdir /lib/udev %endif @@ -88,26 +88,27 @@ BuildRequires: libxslt BuildRequires: pkgconfig BuildRequires: udev BuildRequires: zlib-devel +#!BuildIgnore: fop Requires: curl Requires: kexec-tools Requires: makedumpfile Requires: openssh +# FIXME: use proper Requires(pre/post/preun/...) PreReq: %fillup_prereq PreReq: coreutils +PreReq: dracut PreReq: sed Recommends: cifs-utils Recommends: nfs-client -#!BuildIgnore: fop # update should detect the split-off from kexec-tools Provides: kexec-tools:%{_initddir}/kdump -BuildRoot: %{_tmppath}/%{name}-%{version}-build ExcludeArch: s390 ppc %if %{systemd_present} BuildRequires: pkgconfig(systemd) %else +# FIXME: use proper Requires(pre/post/preun/...) PreReq: %insserv_prereq %endif -PreReq: dracut %if %{systemd_present} %systemd_requires %endif @@ -167,35 +168,29 @@ after a crash dump has occured. %build export CFLAGS="%{optflags}" export CXXFLAGS="%{optflags} -std=gnu++98" -mkdir build -cd build -cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} .. -make %{?_smp_mflags} -cd - +%cmake +%cmake_build %check -cd build -make %{?_smp_mflags} test +%ctest %install -cd build -make %{?_smp_mflags} DESTDIR=%{buildroot} install -cd - +%cmake_install # move udev rules mkdir -p %{buildroot}/%{_udevrulesdir} mv %{buildroot}/%{_sysconfdir}/udev/rules.d/* %{buildroot}/%{_udevrulesdir}/ # remove executable bit from non-binaries chmod -x %{buildroot}/lib/kdump/setup-kdump.functions # empty directory -mkdir -p %{buildroot}/var/crash +mkdir -p %{buildroot}%{_localstatedir}/crash # symlink for init script %if %{systemd_present} rm %{buildroot}%{_initddir}/boot.kdump ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rckdump %else -rm %{buildroot}/usr/lib/systemd/system/kdump.service -rm %{buildroot}/usr/lib/systemd/system/kdump-early.service +rm %{buildroot}%{_prefix}/lib/systemd/system/kdump.service +rm %{buildroot}%{_prefix}/lib/systemd/system/kdump-early.service ln -s ../..%{_initddir}/boot.kdump %{buildroot}%{_sbindir}/rckdump %endif @@ -217,8 +212,8 @@ fi %service_add_post kdump.service %service_add_post kdump-early.service # ensure newly added kdump-early.service is-enabled matches prior state -if [ -x /usr/bin/systemctl ] && /usr/bin/systemctl is-enabled kdump.service &>/dev/null ; then - /usr/bin/systemctl reenable kdump.service || : +if [ -x %{_bindir}/systemctl ] && %{_bindir}/systemctl is-enabled kdump.service &>/dev/null ; then + %{_bindir}/systemctl reenable kdump.service || : fi %else %{fillup_and_insserv -n kdump boot.kdump} @@ -227,9 +222,9 @@ if [ "$change_permission" = 1 ]; then chmod 0600 %{_sysconfdir}/sysconfig/kdump fi # if /var/log/dump is empty, make it a symlink to /var/crash -if test -d /var/log/dump && rmdir /var/log/dump >/dev/null 2>&1 || - ! test -d /var/log/dump ; then - ln -snf /var/crash /var/log/dump +if test -d %{_localstatedir}/log/dump && rmdir %{_localstatedir}/log/dump >/dev/null 2>&1 || + ! test -d %{_localstatedir}/log/dump ; then + ln -snf %{_localstatedir}/crash %{_localstatedir}/log/dump fi %preun @@ -245,7 +240,7 @@ echo "Stopping kdump ..." # force regeneration of kdumprd touch %{_sysconfdir}/sysconfig/kdump # delete symbolic link -rm /var/log/dump >/dev/null 2>&1 || true +rm %{_localstatedir}/log/dump >/dev/null 2>&1 || true %if %{systemd_present} %service_del_postun kdump.service %service_del_postun kdump-early.service @@ -261,7 +256,7 @@ rm /var/log/dump >/dev/null 2>&1 || true %else # filesystem before SLE12 SP3 lacks /usr/share/licenses %if 0%(test ! -d %{_defaultlicensedir} && echo 1) -%define _defaultlicensedir %_defaultdocdir +%define _defaultlicensedir %{_defaultdocdir} %endif %endif # End of compatibility cruft @@ -272,10 +267,10 @@ rm /var/log/dump >/dev/null 2>&1 || true %doc ChangeLog README NEWS %{_sbindir}/kdumptool %{_sbindir}/mkdumprd -%{_mandir}/man5/kdump.5%{ext_man} -%{_mandir}/man7/kdump.7%{ext_man} -%{_mandir}/man8/kdumptool.8%{ext_man} -%{_mandir}/man8/mkdumprd.8%{ext_man} +%{_mandir}/man5/kdump.5%{?ext_man} +%{_mandir}/man7/kdump.7%{?ext_man} +%{_mandir}/man8/kdumptool.8%{?ext_man} +%{_mandir}/man8/mkdumprd.8%{?ext_man} %{_fillupdir}/sysconfig.kdump %dir %{dracutlibdir} %dir %{dracutlibdir}/modules.d From 86cbc41fcd277c676aa3d8b61c639abc03d29b3c9eb18fbb9ec9cb03ec8fab9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Tesa=C5=99=C3=ADk?= Date: Tue, 7 Jan 2020 21:47:17 +0000 Subject: [PATCH 2/3] Revert %cmake macros to fix build on distros before SLE15 SP1 OBS-URL: https://build.opensuse.org/package/show/Kernel:kdump/kdump?expand=0&rev=192 --- kdump.spec | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/kdump.spec b/kdump.spec index f8228dc..06a016b 100644 --- a/kdump.spec +++ b/kdump.spec @@ -168,14 +168,17 @@ after a crash dump has occured. %build export CFLAGS="%{optflags}" export CXXFLAGS="%{optflags} -std=gnu++98" -%cmake -%cmake_build +mkdir build +cd build +cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} .. +make %{?_smp_mflags} %check -%ctest +cd build +ctest --output-on-failure --force-new-ctest-process %{?_smp_mflags} %install -%cmake_install +DESTDIR=%{buildroot} make -C build %{?_smp_mflags} install # move udev rules mkdir -p %{buildroot}/%{_udevrulesdir} mv %{buildroot}/%{_sysconfdir}/udev/rules.d/* %{buildroot}/%{_udevrulesdir}/ From 807780d9651c8d70f2d03e57c76b96e6d4884a8217c094d2dc3c2bfbe1a52077 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Tesa=C5=99=C3=ADk?= Date: Tue, 28 Jan 2020 22:39:20 +0000 Subject: [PATCH 3/3] Accepting request 767880 from home:mwilck:branches:Kernel:kdump https://github.com/openSUSE/kdump/pull/13 - kdump-activate-udev-rules-late-during-boot.patch: Activate kdump udev rules late during boot (bsc#1154837) OBS-URL: https://build.opensuse.org/request/show/767880 OBS-URL: https://build.opensuse.org/package/show/Kernel:kdump/kdump?expand=0&rev=193 --- ...activate-udev-rules-late-during-boot.patch | 45 +++++++++++++++++++ kdump.changes | 6 +++ kdump.spec | 18 ++------ 3 files changed, 55 insertions(+), 14 deletions(-) create mode 100644 kdump-activate-udev-rules-late-during-boot.patch diff --git a/kdump-activate-udev-rules-late-during-boot.patch b/kdump-activate-udev-rules-late-during-boot.patch new file mode 100644 index 0000000..42df068 --- /dev/null +++ b/kdump-activate-udev-rules-late-during-boot.patch @@ -0,0 +1,45 @@ +From 3405c3b3b53f35459f425d7cf3c0ffaf759cade4 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 27 Jan 2020 17:30:24 +0100 +Subject: [PATCH] kdump: activate udev rules late during boot + +The kdump udev rule is very broad in scope and may slow down +booting strongly, especially during the coldplug phase where +"add" events for lots of CPU and memory devices have to be +processed. Therefore, activate this rule (which has the purpose +to support real hotplug rather than coldplug) late in the boot +sequence. +--- + CMakeLists.txt | 2 +- + init/kdump.service | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f16f532..03eb133 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -206,7 +206,7 @@ ADD_CUSTOM_TARGET( + INSTALL(FILES + ${CMAKE_CURRENT_BINARY_DIR}/70-kdump.rules + DESTINATION +- /etc/udev/rules.d ++ /usr/lib/kdump + ) + + # +diff --git a/init/kdump.service b/init/kdump.service +index 997805f..fb19f84 100644 +--- a/init/kdump.service ++++ b/init/kdump.service +@@ -5,6 +5,8 @@ After=local-fs.target network.service YaST2-Second-Stage.service YaST2-Firstboot + [Service] + Type=oneshot + ExecStart=/lib/kdump/load.sh --update ++ExecStartPost=-/usr/bin/cp /usr/lib/kdump/70-kdump.rules /run/udev/rules.d/70-kdump.rules ++ExecStopPost=-/usr/bin/rm -f /run/udev/rules.d/70-kdump.rules + ExecStop=/lib/kdump/unload.sh + RemainAfterExit=true + +-- +2.25.0 + diff --git a/kdump.changes b/kdump.changes index a4d7d19..23fb6a9 100644 --- a/kdump.changes +++ b/kdump.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Jan 27 16:35:50 UTC 2020 - Martin Wilck + +- kdump-activate-udev-rules-late-during-boot.patch: Activate + kdump udev rules late during boot (bsc#1154837) + ------------------------------------------------------------------- Tue Dec 17 10:00:30 UTC 2019 - Petr Tesařík diff --git a/kdump.spec b/kdump.spec index 06a016b..e0492e9 100644 --- a/kdump.spec +++ b/kdump.spec @@ -27,16 +27,6 @@ %define dracutlibdir %{_prefix}/lib/dracut -%{!?_udevdir: %global _udevdir %(pkg-config --variable=udevdir udev)} -%if "%{_udevdir}" == "" -%if 0%{?suse_version} >= 1230 -%global _udevdir %{_prefix}/lib/udev -%else -%global _udevdir /lib/udev -%endif -%endif -%define _udevrulesdir %{_udevdir}/rules.d - Name: kdump Version: 0.9.0 Release: 0 @@ -76,6 +66,7 @@ Patch27: %{name}-Document-fence_kdump_send.patch Patch28: %{name}-powerpc-no-reload-on-CPU-removal.patch Patch29: %{name}-prefer-by-path-and-device-mapper.patch Patch30: %{name}-calibrate-Update-values.patch +Patch31: %{name}-activate-udev-rules-late-during-boot.patch BuildRequires: asciidoc BuildRequires: cmake BuildRequires: gcc-c++ @@ -164,6 +155,7 @@ after a crash dump has occured. %patch28 -p1 %patch29 -p1 %patch30 -p1 +%patch31 -p1 %build export CFLAGS="%{optflags}" @@ -179,9 +171,6 @@ ctest --output-on-failure --force-new-ctest-process %{?_smp_mflags} %install DESTDIR=%{buildroot} make -C build %{?_smp_mflags} install -# move udev rules -mkdir -p %{buildroot}/%{_udevrulesdir} -mv %{buildroot}/%{_sysconfdir}/udev/rules.d/* %{buildroot}/%{_udevrulesdir}/ # remove executable bit from non-binaries chmod -x %{buildroot}/lib/kdump/setup-kdump.functions # empty directory @@ -280,7 +269,8 @@ rm %{_localstatedir}/log/dump >/dev/null 2>&1 || true %{dracutlibdir}/modules.d/99kdump/ %dir /lib/kdump /lib/kdump/* -%{_udevrulesdir}/70-kdump.rules +%dir /usr/lib/kdump +/usr/lib/kdump/70-kdump.rules %if %{systemd_present} %{_unitdir}/kdump.service %{_unitdir}/kdump-early.service