[DTrace-devel] [PATCH 2/2] spec: support building from RPMs again
Kris Van Hees
kvanhees at kvh-deb-bpf.us.oracle.com
Tue Jan 30 18:35:25 UTC 2024
Ping on addressing the comments?
I really would prefer KERNELSRCNAME / KERNELBLDNAME.
And I'd like to put this patch in before the condigure stuff.
On Tue, Jan 02, 2024 at 01:47:53PM -0500, Kris Van Hees wrote:
> On Tue, Nov 21, 2023 at 09:48:26PM +0000, Nick Alcock wrote:
> > 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.
>
> Hm, can we for consistency use KERNELSRCSUFFIX and KERNELBLDSUFFIX?
> Then again, perhaps KERNELSRCNAME and KERNELBLDNAME might be more clear since
> this is more like a directory component name rather than a suffix.
>
> > (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
>
> Wouldn't it be safer to not include the leading / since you add that in the
> substitution rules below already?
>
> > 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