]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
dtrace: Fix RPM dependencies.
authorKris Van Hees <kris.van.hees@oracle.com>
Fri, 20 Dec 2013 16:19:01 +0000 (11:19 -0500)
committerKris Van Hees <kris.van.hees@oracle.com>
Fri, 20 Dec 2013 16:19:01 +0000 (11:19 -0500)
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 <nick.alcock@oracle.com>
Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
dtrace/NEWS
dtrace/dtrace-module.spec

index 4d7faa0b999b8c6f59440347dd3473111842a58b..1933b88b70546a9123f6c2a1640f335160a35936 100644 (file)
@@ -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:
index 6a034adde8d6dd66242ebf04b7dfbf66e4d2b4b4..78b6347b978f2d8242d2bd350b2c458b2f8fb60f 100644 (file)
 # 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
 %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}"))
  %{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 <nick.alcock@oracle.com>
+Kris van Hees <kris.van.hees@oracle.com>
+
+%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 <kris.van.hees@oracle.com>
 %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 <kris.van.hees@oracle.com> - 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 <kris.van.hees@oracle.com> - 0.4.1-3
 - Fix 'errno' implementation.