[DTrace-devel] [PATCH] spec: add support for building on OL10

Kris Van Hees kris.van.hees at oracle.com
Tue Apr 8 13:45:11 UTC 2025


Building on OL10 requires a few adjustments.  This patch also removes
some dead portions of the spec file concerning the former translator
generation mechanism.

LTO is also disabled for building DTrace.

Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
 dtrace.spec | 85 +++++++++++++++--------------------------------------
 1 file changed, 23 insertions(+), 62 deletions(-)

diff --git a/dtrace.spec b/dtrace.spec
index 902ad7d8..776432e0 100644
--- a/dtrace.spec
+++ b/dtrace.spec
@@ -13,43 +13,32 @@
 # "--without libctf" to the rpmbuild command to bypass libctf.
 %define with_libctf %{?_without_libctf: 0} %{?!_without_libctf: 1}
 
-# Kernel lists
-#
-# Translators are automatically generated by M4 macros from selected kernels.
-# Only major.minor version impacts produced data so there is no need to add
-# each specific kernel to the list.
-#
-# A list of kernels used during translator processing is in the dtrace_kernels
-# macro.  A selected kernel whose headers are used during compilation is in the
-# build_kernel macro.
-#
-# You can override both from the rpmbuild command line if required.  To build an
-# RPM from locally-installed headers, define local_build on the command line.
-# To build translators against locally-installed kernel headers in directories
-# under /usr/src/kernels, define local_kernels on the command line (in addition
-# to dtrace_kernels).
-
-%if "%{?dist}" == ".el9"
-%{!?build_kernel: %define build_kernel 5.15.0-0.16.2%{?dist}uek}
-%{!?dtrace_kernels: %define dtrace_kernels %{build_kernel}}
-%endif
-%if "%{?dist}" == ".el8"
-%{!?build_kernel: %define build_kernel 5.4.17-2102.206.1%{?dist}uek}
-%{!?dtrace_kernels: %define dtrace_kernels %{build_kernel} 5.15.0-0.16.2%{?dist}uek}
-%endif
 %if "%{?dist}" == ".el7"
-%{!?build_kernel: %define build_kernel 5.4.17-2018%{?dist}uek}
-%{!?dtrace_kernels: %define dtrace_kernels %{build_kernel}}
 %define with_libctf 0
 %endif
 
-# ARM64 doesn't yet have a 32-bit glibc, so all support for 32-on-64 must be
-# disabled.
-%ifnarch aarch64
-%define glibc32 glibc-devel(%{__isa_name}-32) libgcc(%{__isa_name}-32)
+# OL10 requires an explicit BPF toolset version.
+%if "%{?dist}" == ".el10"
+%define bpfv -14
+%define bpfc BPFC=bpf-unknown-none-gcc-14
 %else
+%define bpfv %{nil}
+%define bpfc %{nil}
+%endif
+
+# By default, do not build with 32-on-64 support.
 %define glibc32 %{nil}
+
+# Enable it for non-ARM64 builds excpet for OL10.
+# ARM64 does not support 32-on-64 either.
+%ifnarch aarch64
+%if "%{?dist}" != ".el10"
+%define glibc32 glibc-devel(%{__isa_name}-32) libgcc(%{__isa_name}-32)
 %endif
+%endif
+
+# Build DTrace without LTO.
+%global _lto_cflags %{nil}
 
 BuildRequires: rpm
 Name:         dtrace
@@ -69,11 +58,7 @@ BuildRequires: fuse3-devel >= 3.2.0
 %define maybe_use_fuse2 %{nil}
 %endif
 %{?systemd_requires}
-BuildRequires: kernel%{variant}-devel = %{build_kernel}
-%if "%{?dist}" == ".el8"
-BuildRequires: kernel%{variant}-devel = 5.15.0-0.16.2%{?dist}uek
-%endif
-BuildRequires: gcc-bpf-unknown-none
+BuildRequires: gcc-bpf-unknown-none%{bpfv}
 BuildRequires: binutils-bpf-unknown-none
 %ifnarch aarch64
 Requires:     binutils
@@ -88,32 +73,11 @@ BuildRequires: libdtrace-ctf-devel >= 1.1.0
 %endif
 Summary:      DTrace user interface.
 Version:      2.0.2
-Release:      1%{?dist}
+Release:      5%{?dist}
 Source:       dtrace-%{version}.tar.bz2
 BuildRoot:    %{_tmppath}/%{name}-%{version}-build
 ExclusiveArch:    x86_64 aarch64
 
-# Substitute in kernel-version-specific requirements.
-
-%{lua:
-  local srcdirexp = ""
-  dtrace_kernels = rpm.expand("%{dtrace_kernels}")
-  local_kernels = rpm.expand("%{local_kernels}")
-  for k in string.gmatch(dtrace_kernels, "[^ ]+") do
-      if local_kernels == "" then
-         print(rpm.expand("BuildRequires: kernel%{variant}-devel = " .. k .. "\n"))
-      end
-      srcdirexp = srcdirexp .. " " .. k .. "*"
-  end
-  rpm.define("srcdirexp " .. srcdirexp)
-}
-
-# Expand kernel versions to full directory names
-%global kerneldirs %(cd /usr/src/kernels; \
-		     for ver in %{srcdirexp}; do printf "%s " $ver; done)
-%global bldkerneldir %(cd /usr/src/kernels; \
-		     for ver in %{build_kernel}*; do printf "%s" $ver; done)
-
 %description
 DTrace user interface and dtrace(1) command.
 
@@ -148,7 +112,7 @@ Summary:      DTrace testsuite.
 Requires:     make glibc-devel(%{__isa_name}-64) libgcc(%{__isa_name}-64)
 Requires:     dtrace-headers >= 2.0.0 module-init-tools
 Requires:     %{name}-devel = %{version}-%{release} perl gcc java
-Requires:     java-1.8.0-openjdk-devel perl-IO-Socket-IP xfsprogs
+Requires:     java-devel perl-IO-Socket-IP xfsprogs
 Requires:     exportfs vim-minimal %{name}%{?_isa} = %{version}-%{release}
 Requires:     coreutils wireshark %{glibc32}
 Requires:     perf time bc nfs-utils
@@ -168,8 +132,7 @@ it always tests the installed DTrace.
 
 %build
 make -j $(getconf _NPROCESSORS_ONLN) VERSION=%{version} \
-	KERNELMODDIR=/usr/src/kernels KERNELSRCNAME= KERNELBLDNAME= \
-	KERNELS="%{kerneldirs}" %{maybe_use_fuse2}
+	%{bpfc} %{maybe_use_fuse2}
 
 # Force off debuginfo splitting.  We have no debuginfo in dtrace proper,
 # and the testsuite requires debuginfo for proper operation.
@@ -183,8 +146,6 @@ make -j $(getconf _NPROCESSORS_ONLN) VERSION=%{version} \
 
 mkdir -p $RPM_BUILD_ROOT/usr/sbin
 make DESTDIR=$RPM_BUILD_ROOT VERSION=%{version} \
-     KERNELMODDIR=/usr/src/kernels KERNELSRCNAME= KERNELBLDNAME= \
-     KERNELS="%{kerneldirs}" \
      HDRPREFIX="$RPM_BUILD_ROOT/usr/include" \
      install install-test
 
-- 
2.42.0




More information about the DTrace-devel mailing list