[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