]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
dtrace: avoid installonly-related kernel upgrade failure
authorNick Alcock <nick.alcock@oracle.com>
Wed, 14 Oct 2015 12:55:07 +0000 (13:55 +0100)
committerKris Van Hees <kris.van.hees@oracle.com>
Fri, 20 Nov 2015 09:56:26 +0000 (04:56 -0500)
The dtrace modules packages have long depended on their associated kernel, in
order to cause them to be removed when the associated kernel is removed. It
turns out that the installonly feature (which forces installation of kernel
packages and removal of old ones rather than upgrades on 'yum upgrade') fails to
cope with this situation: you get a broken-packages notice rather than a removal
of the dependent package.

So remove the dependency, and instead install an at job from a %postun trigger
that removes old modules a little later. If this hits the rpm lock, it will fail
and leave modules around; if the kernel is later reinstalled, it will remove a
module that has a corresponding kernel still installed. However, both of these
cases are harmless: the first case is expected to be extremely rare (you'd have
to be, by chance, doing an rpm run precisely four hours after the upgrade that
removed the old kernel) and has no negative consequences but the loss of a bit
of disk space to a useless kernel module; the second case is harmless because
the next dtrace run against that kernel will reinstall the module anyway.

Orabug: 21669543
Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
Acked-by: Kris Van Hees <kris.van.hees@oracle.com>
dtrace/dtrace-module-OL6.spec
dtrace/dtrace-module-OL7.spec

index 0f60f42e05fc710e97e37c578fbf383a82e086b8..e52d7a71a3b0b02979850532aa15fb5658a56ba2 100644 (file)
@@ -33,6 +33,7 @@
 %define dt_0_4_3       1027
 %define dt_0_4_4       1028
 %define dt_0_4_5       1029
+%define dt_0_4_6       1030
 %define dt_0_5_0       1280
 %{lua:
        local kver = rpm.expand("%{kver}")
 
        if rpm.vercmp(kver, "4.1.4-3") >= 0 then
                rpm.define("srcver 0.5.0")
-               rpm.define("bldrel 3")
+               rpm.define("bldrel 4")
                rpm.define("dt_vcode "..rpm.expand("%{dt_0_5_0}"))
+       elseif rpm.vercmp(kver, "3.8.13-119") >= 0 then
+               rpm.define("srcver 0.4.6")
+               rpm.define("bldrel 1")
+               rpm.define("dt_vcode "..rpm.expand("%{dt_0_4_6}"))
        elseif rpm.vercmp(kver, "3.8.13-87") >= 0 then
                rpm.define("srcver 0.4.5")
                rpm.define("bldrel 3")
@@ -99,9 +104,13 @@ Summary: dtrace module
 Version: %{srcver}
 Release: %{bldrel}.el6
 Provides: dtrace-modules
+%if %{dt_vcode} >= %{dt_0_4_6}
+Requires: at
+%else
+Requires: kernel%{variant} = %{kver}
+%endif
 License: CDDL
 Group: System Environment/Kernel
-Requires: kernel%{variant} = %{kver}
 Source0: dtrace-module-%{srcver}.tar.bz2
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: kernel%{variant}-devel = %{kver}
@@ -124,6 +133,16 @@ Maintainers:
 Nick Alcock <nick.alcock@oracle.com>
 Kris Van Hees <kris.van.hees@oracle.com>
 
+%if %{dt_vcode} >= %{dt_0_4_6}
+# If this package is not removed, but its dependent kernel is, schedule
+# a later removal via at, late enough that this yum job is probably over.
+%triggerun -- kernel%{variant} = %{kver}
+
+at now + 4 hours >/dev/null 2>&1 <<'EOF'
+rpm --quiet -e dtrace-modules-%{kver}
+EOF
+%endif
+
 %package -n %{header_pkg}
 Summary:       Header files for communication with the DTrace kernel module.
 %if %{dt_vcode} >= %{dt_0_4_4}
@@ -159,7 +178,9 @@ Release: %{bldrel}.el6
 Provides: dtrace-kernel-interface = 1
 License: CDDL
 Group: System Environment/Kernel
+%if %{dt_vcode} < %{dt_0_4_6}
 Requires: kernel%{variant} = %{kver}
+%endif
 Source0: dtrace-module-%{srcver}.tar.bz2
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: kernel%{variant}-devel = %{kver}
@@ -260,6 +281,9 @@ rm -rf %{buildroot}
 
 %changelog
 %if %{dt_vcode} >= %{dt_0_5_0}
+* Tue Nov 17 2015 Kris Van Hees <kris.van.hees@oracle.com> - 0.5.0-4
+- Remove explicit dependency on kernel RPM.
+  [Orabug: 21669543]
 * Fri Sep 18 2015 Kris Van Hees <kris.van.hees@oracle.com> - 0.5.0-3
 - Enable building DTrace modules for SPARC64.
 * Mon Aug 10 2015 Natalya Naumova <natalya.naumova@oracle.com> - 0.5.0-2
@@ -271,6 +295,12 @@ rm -rf %{buildroot}
   [Orabug: 19005048]
 - Update uid / gid handling in view of namespaces in UEK4 kernels.
   [Orabug: 20456825]
+%else
+%if %{dt_vcode} >= %{dt_0_4_6}
+* Tue Nov 17 2015 Kris Van Hees <kris.van.hees@oracle.com> - 0.4.6-1
+- Remove explicit dependency on kernel RPM.
+  [Orabug: 21669543]
+%endif
 %endif
 %if %{dt_vcode} >= %{dt_0_4_5}
 * Tue Jul  7 2015 Kris Van Hees <kris.van.hees@oracle.com> - 0.4.5-3
index 908c61b76a2019e0b7c4baae20379ee6c8a5ec09..9ad06005710992ecf47f4b458cf16b0ca6b819f3 100644 (file)
@@ -33,6 +33,7 @@
 %define dt_0_4_3       1027
 %define dt_0_4_4       1028
 %define dt_0_4_5       1029
+%define dt_0_4_6       1030
 %define dt_0_5_0       1280
 %{lua:
        local kver = rpm.expand("%{kver}")
 
        if rpm.vercmp(kver, "4.1.4-3") >= 0 then
                rpm.define("srcver 0.5.0")
-               rpm.define("bldrel 3")
+               rpm.define("bldrel 4")
                rpm.define("dt_vcode "..rpm.expand("%{dt_0_5_0}"))
+       elseif rpm.vercmp(kver, "3.8.13-119") >= 0 then
+               rpm.define("srcver 0.4.6")
+               rpm.define("bldrel 1")
+               rpm.define("dt_vcode "..rpm.expand("%{dt_0_4_6}"))
        elseif rpm.vercmp(kver, "3.8.13-87") >= 0 then
                rpm.define("srcver 0.4.5")
                rpm.define("bldrel 3")
@@ -99,9 +104,13 @@ Summary: dtrace module
 Version: %{srcver}
 Release: %{bldrel}.el7
 Provides: dtrace-modules
+%if %{dt_vcode} >= %{dt_0_4_6}
+Requires: at
+%else
+Requires: kernel%{variant} = %{kver}
+%endif
 License: CDDL
 Group: System Environment/Kernel
-Requires: kernel%{variant} = %{kver}
 Source0: dtrace-module-%{srcver}.tar.bz2
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: kernel%{variant}-devel = %{kver}
@@ -124,6 +133,16 @@ Maintainers:
 Nick Alcock <nick.alcock@oracle.com>
 Kris Van Hees <kris.van.hees@oracle.com>
 
+%if %{dt_vcode} >= %{dt_0_4_6}
+# If this package is not removed, but its dependent kernel is, schedule
+# a later removal via at, late enough that this yum job is probably over.
+%triggerun -- kernel%{variant} = %{kver}
+
+at now + 4 hours >/dev/null 2>&1 <<'EOF'
+rpm --quiet -e dtrace-modules-%{kver}
+EOF
+%endif
+
 %package -n %{header_pkg}
 Summary:       Header files for communication with the DTrace kernel module.
 %if %{dt_vcode} >= %{dt_0_4_4}
@@ -150,7 +169,9 @@ Release: %{bldrel}.el7
 Provides: dtrace-kernel-interface = 1
 License: CDDL
 Group: System Environment/Kernel
+%if %{dt_vcode} < %{dt_0_4_6}
 Requires: kernel%{variant} = %{kver}
+%endif
 Source0: dtrace-module-%{srcver}.tar.bz2
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: kernel%{variant}-devel = %{kver}
@@ -251,6 +272,9 @@ rm -rf %{buildroot}
 
 %changelog
 %if %{dt_vcode} >= %{dt_0_5_0}
+* Tue Nov 17 2015 Kris Van Hees <kris.van.hees@oracle.com> - 0.5.0-4
+- Remove explicit dependency on kernel RPM.
+  [Orabug: 21669543]
 * Fri` Sep 18 2015 Kris Van Hees <kris.van.hees@oracle.com> - 0.5.0-3
 - Enable building DTrace modules on SPARC64.
 * Tue Aug 18 2015 Kris Van Hees <kris.van.hees@oracle.com> - 0.5.0-2
@@ -262,11 +286,16 @@ rm -rf %{buildroot}
   [Orabug: 19005048]
 - Update uid / gid handling in view of namespaces in UEK4 kernels.
   [Orabug: 20456825]
+%else
+%if %{dt_vcode} >= %{dt_0_4_6}
+* Tue Nov 17 2015 Kris Van Hees <kris.van.hees@oracle.com> - 0.4.6-1
+- Remove explicit dependency on kernel RPM.
+  [Orabug: 21669543]
+%endif
 %endif
 %if %{dt_vcode} >= %{dt_0_4_5}
 * Mon Jul 6 2015 Natalya Naumova <natalya.naumova@oracle.com> - 0.4.5-3
 - modules signing support
-
 * Tue Jun 23 2015 Kris Van Hees <kris.van.hees@oracle.com> - 0.4.5-2
 - Validate d_path() argument pointer to avoid crash.
   [Orabug: 21304207]