From 035039d1d7ede1876a1d3af5f9f46f48d6ddf251 Mon Sep 17 00:00:00 2001 From: Kris Van Hees Date: Fri, 20 Dec 2013 11:19:01 -0500 Subject: [PATCH] dtrace: Fix RPM dependencies. Userspace depends on dtrace-modules-headers so that it can #include the headers shared between kernel and userspace. However, it is crucial that this inclusion not drag in the dtrace module itself, nor the kernel on which it depends, because that module might be of a version different to that already on the system (likely older, which would cause yum upgrade to fail). So drop the dependency between dtrace-modules-headers and the module itself. Also, userspace has ceased depending on the dtrace-kernel-interface capability, in favour of automatic but explicit yum installation of module RPMs when needed: so drop that capability, unversion the dtrace-modules-headers capability, and remove the kernel version from the dtrace-modules-headers package's name, since it is not dependent on the running kernel in any way. Unversion the modules-provider-headers capability too, but leave its name versioned: since it is meant for provider authors, and providers are kernel modules, it is necessarily kernel-version-dependent. -- Modified to allow building of modules prior to 0.4.2 using the older scheme for dependencies, and use the new scheme starting with 0.4.2. Orabug: 17804881 Signed-off-by: Nick Alcock Signed-off-by: Kris Van Hees --- dtrace/NEWS | 21 +++++++--- dtrace/dtrace-module.spec | 86 +++++++++++++++++++++++++++++++++++---- 2 files changed, 92 insertions(+), 15 deletions(-) diff --git a/dtrace/NEWS b/dtrace/NEWS index 4d7faa0b999b..1933b88b7054 100644 --- a/dtrace/NEWS +++ b/dtrace/NEWS @@ -1,8 +1,17 @@ DTrace Kernel Modules News ========================== -Release 0.4.1 (Nov 6, 2013) ---------------------------- +Release 0.4.2 (Dec 20th, 2013) +------------------------------ +Kernel release: 3.8.13-21.el6uek + +Changes: + + - SDT probe points in kernel modules are now supported. + - The 'vtimestamp' D variable has been implemented. + +Release 0.4.1 (Nov 6th, 2013) +------------------------------ Kernel release: 3.8.13-16.2.1.el6uek Changes: @@ -27,8 +36,8 @@ Bugfixes: probe action execution, i.e. 0 if the syscall completed without an error, and a valid error code if the syscall failed. -Release 0.4.0 (Sep 20, 2013) ----------------------------- +Release 0.4.0 (Sep 20th, 2013) +------------------------------ Kernel release: 3.8.13-16.el6uek New features: @@ -65,8 +74,8 @@ Bugfixes: - Several obscure locking problems have been resolved. - Correct handling of arg5 through arg9. -Release 0.3.0 (Sep 14, 2012) ----------------------------- +Release 0.3.0 (Sep 14th, 2012) +------------------------------ Kernel release: 2.6.39-201.0.1.el6uek New features: diff --git a/dtrace/dtrace-module.spec b/dtrace/dtrace-module.spec index 6a034adde8d6..78b6347b978f 100644 --- a/dtrace/dtrace-module.spec +++ b/dtrace/dtrace-module.spec @@ -12,10 +12,6 @@ # Set this to the version of the kernel this module is compiled against. %define kver %{?build_kver:%{build_kver}}%{!?build_kver:3.8.13-16.2.1.el6uek} -# Increment this whenever the DTrace/userspace interface changes in an -# incompatible way. -%define dtrace_kernel_interface 1 - # Select the correct source code version based on the kernel version. # Failing to pick the correct version can have disasterous effects! # For safety, we assume that the kernel version is not supported, unless we @@ -28,10 +24,15 @@ %define dt_0_3_2 770 %define dt_0_4_0 1024 %define dt_0_4_1 1025 +%define dt_0_4_2 1026 %{lua: local kver = rpm.expand("%{kver}") - if rpm.vercmp(kver, "3.8.13-16.2.1") >= 0 then + if rpm.vercmp(kver, "3.8.13-20") >= 0 then + rpm.define("srcver 0.4.2") + rpm.define("bldrel 1") + rpm.define("dt_vcode "..rpm.expand("%{dt_0_4_2}")) + elseif rpm.vercmp(kver, "3.8.13-16.2.1") >= 0 then rpm.define("srcver 0.4.1") rpm.define("bldrel 3") rpm.define("dt_vcode "..rpm.expand("%{dt_0_4_1}")) @@ -51,11 +52,57 @@ %{error:Kernel %{kver} is not supported for DTrace or source code missing} %endif +# +# Current (new) RPM specification, with cleaned up dependencies. +# +%if %{dt_vcode} >= %{dt_0_4_2} + Name: dtrace-modules-%{kver} Summary: dtrace module Version: %{srcver} Release: %{bldrel}.el6 -Provides: dtrace-kernel-interface = %{dtrace_kernel_interface} +Provides: dtrace-modules +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} +BuildRequires: libdtrace-ctf +ExclusiveArch: x86_64 + +%description +DTrace kernel modules. + +This package contains the DTrace core module, and standard provider modules: +dtrace, profile, syscall, sdt (io, proc,sched), and fasttrap (USDT). + +Maintainers: +------------ +Nick Alcock +Kris van Hees + +%package -n dtrace-modules-headers +Summary: Header files for communication with the DTrace kernel module. +%description -n dtrace-modules-headers +This package contains header files describing the protocol used by userspace to +communicate with the DTrace kernel module. + +%package provider-headers +Summary: Header files for implementation of DTrace providers. +Requires: dtrace-modules-headers +Provides: dtrace-modules-provider-headers +%description provider-headers +This package contains header files defining the API used to implement DTrace +providers. + +%else + +Name: dtrace-modules-%{kver} +Summary: dtrace module +Version: %{srcver} +Release: %{bldrel}.el6 +Provides: dtrace-kernel-interface = 1 License: CDDL Group: System Environment/Kernel Requires: kernel%{variant} = %{kver} @@ -79,19 +126,21 @@ Kris van Hees %package headers Summary: Header files for communication with the DTrace kernel module. Requires: dtrace-modules-%{kver} -Provides: dtrace-modules-headers = %{dtrace_kernel_interface} +Provides: dtrace-modules-headers = 1 %description headers This package contains header files describing the protocol used by userspace to communicate with the DTrace kernel module. %package provider-headers Summary: Header files for implementation of DTrace providers. -Requires: dtrace-modules-headers = %{dtrace_kernel_interface} -Provides: dtrace-modules-provider-headers = %{dtrace_kernel_interface} +Requires: dtrace-modules-headers = 1 +Provides: dtrace-modules-provider-headers = 1 %description provider-headers This package contains header files defining the API used to implement DTrace providers. +%endif + %prep rm -rf %{BuildRoot} @@ -123,18 +172,37 @@ rm -rf %{buildroot} /lib /usr/share/doc +%if %{dt_vcode} >= %{dt_0_4_2} + +%files -n dtrace-modules-headers +%defattr(-,root,root,-) +/usr/include/linux/dtrace +%exclude /usr/include/linux/dtrace/provider*.h +%exclude /usr/include/linux/dtrace/types.h + +%else + %files headers %defattr(-,root,root,-) /usr/include/linux/dtrace %exclude /usr/include/linux/dtrace/provider*.h %exclude /usr/include/linux/dtrace/types.h +%endif + %files provider-headers %defattr(-,root,root,-) /usr/include/linux/dtrace/provider*.h /usr/include/linux/dtrace/types.h %changelog +%if %{dt_vcode} >= %{dt_0_4_2} +* Fri Dec 20 2013 Kris Van Hees - 0.4.2-1 +- Fix 'vtimestamp' implementation. + [Orabug: 17741477] +- Support SDT probes points in kernel modules. + [Orabug: 17851716] +%endif %if %{dt_vcode} >= %{dt_0_4_1} * Wed Nov 6 2013 Kris Van Hees - 0.4.1-3 - Fix 'errno' implementation. -- 2.50.1