[DTrace-devel] [PATCH 2/2] spec: support building from RPMs again
Nick Alcock
nick.alcock at oracle.com
Tue Nov 21 21:48:26 UTC 2023
We need a way to override the /source and /build suffixes which
/lib/modules/$(uname -r) needs after it to find the kernel
headers, because devel rpms don't use either (things are just
directly in /usr/src/kernels/$(kernel)/, with no suffix).
Introduce KERNELSRCSUFFIX and KERNELBUILDSUFFIX which the
specfile can set to nothing to make the RPMs build again.
(As a benefit, this might mean we can be made to build fine
without a source/ link at all, which current upstream kernels
are now doing. Not tested that yet, though.)
Signed-off-by: Nick Alcock <nick.alcock at oracle.com>
---
GNUmakefile | 5 +++++
dtrace.spec | 2 +-
libdtrace/Build | 4 ++--
3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/GNUmakefile b/GNUmakefile
index 926d84c5f4e1..368bf5c1ecad 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -71,8 +71,13 @@ UNPRIV_HOME ?= /run/initramfs
# tree. If the kernel was built within the source tree, KERNELOBJDIR need not
# be specified.
+# For RPM builds, set KERNELMODDIR to the root of the rpmsrc tree, and set
+# KERNELSRCSUFFIX and KERNELBUILDSUFFIX to the empty string.
+
KERNELS = $(shell uname -r)
KERNELMODDIR = /lib/modules
+KERNELSRCSUFFIX=/source
+KERNELBUILDSUFFIX=/build
ifdef KERNELSRCDIR
KERNELOBJDIR ?= $(KERNELSRCDIR)
diff --git a/dtrace.spec b/dtrace.spec
index ff1f380822ab..474a09a37b68 100644
--- a/dtrace.spec
+++ b/dtrace.spec
@@ -165,7 +165,7 @@ it always tests the installed DTrace.
%build
make -j $(getconf _NPROCESSORS_ONLN) VERSION=%{version} \
- KERNELDIRPREFIX=/usr/src/kernels KERNELDIRSUFFIX= \
+ KERNELMODDIR=/usr/src/kernels KERNELSRCSUFFIX= KERNELBUILDSUFFIX= verbose=yes \
KERNELS="%{kerneldirs}" %{maybe_use_fuse2}
# Force off debuginfo splitting. We have no debuginfo in dtrace proper,
diff --git a/libdtrace/Build b/libdtrace/Build
index 76fd32e44a2f..76a3268cd47a 100644
--- a/libdtrace/Build
+++ b/libdtrace/Build
@@ -167,8 +167,8 @@ $(objdir)/dlibs/.dir.stamp:
define dlib-kernel-ver-template
$(objdir)/dlibs/$(shell printf %s $(1) | sed -e 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$$/\1.\2.\3/')/%.d: override SHORTKERNELVER := $(shell printf %s $(1) | sed -e 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$$/\1.\2.\3/' | awk -F. '{ print $$1 * 1000 * 1000 + $$2 * 1000 + $$3 }')
$(objdir)/dlibs/$(shell printf %s $(1) | sed -e 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$$/\1.\2.\3/')/%.d: override KERNELVER := $(1)
-$(objdir)/dlibs/$(shell printf %s $(1) | sed -e 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$$/\1.\2.\3/')/%.d: override KERNELSRCDIR ?= $(KERNELMODDIR)/$(1)/source
-$(objdir)/dlibs/$(shell printf %s $(1) | sed -e 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$$/\1.\2.\3/')/%.d: override KERNELOBJDIR ?= $(KERNELMODDIR)/$(1)/build
+$(objdir)/dlibs/$(shell printf %s $(1) | sed -e 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$$/\1.\2.\3/')/%.d: override KERNELSRCDIR ?= $(KERNELMODDIR)/$(1)/$(KERNELSRCSUFFIX)
+$(objdir)/dlibs/$(shell printf %s $(1) | sed -e 's/^\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*$$/\1.\2.\3/')/%.d: override KERNELOBJDIR ?= $(KERNELMODDIR)/$(1)/$(KERNELBUILDSUFFIX)
endef
$(foreach kernel,$(KERNELS),$(eval $(call dlib-kernel-ver-template,$(kernel))))
--
2.42.0.271.g85384428f1
More information about the DTrace-devel
mailing list