* [PATCH] perf: fix build with latest kernel
@ 2023-11-06 19:52 Max Krummenacher
2023-11-06 20:04 ` Bruce Ashfield
0 siblings, 1 reply; 4+ messages in thread
From: Max Krummenacher @ 2023-11-06 19:52 UTC (permalink / raw)
To: openembedded-core; +Cc: mikko.rapeli, bruce.ashfield, Max Krummenacher
From: Max Krummenacher <max.krummenacher@toradex.com>
Kernel 6.7-rc1 commit 02e85f74668e ("tools: arm64: Add a Makefile for
generating sysreg-defs.h") uses files from arch/arm64/tools/,
gen-sysreg.awk and sysreg.
Without the files the build of perf fails independent of the used
architecture (confirmed with armv7 and qemux86_64).
As arch/arm64/tools/ has been added with 5.13 allow perf to build
even it that directory does not exist.
Add arch/arm64/tools/ to PERF_SRC.
Fixes:
| make[3]: *** No rule to make target '.../qemux86_64-tdx-linux/perf/1.0/perf-1.0/arch/arm64/tools/gen-sysreg.awk', needed by '.../qemux86_64-tdx-linux/perf/1.0/perf-1.0/tools/arch/arm64/include/generated/asm/sysreg-defs.h'. Stop.
| make[2]: *** [Makefile.perf:456: arm64-sysreg-defs] Error 2
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
---
meta/recipes-kernel/perf/perf.bb | 5 +++++
1 file changed, 5 insertions(+)
Hi all
I see some other options:
- drop perf support for kernels<5.13 and simply add to PERF_SRC
- drop the bb.fatal in favour of continue and simply add to PERF_SRC
Any comments?
Thanks.
Max
diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
index 675acfaf26..dae9320169 100644
--- a/meta/recipes-kernel/perf/perf.bb
+++ b/meta/recipes-kernel/perf/perf.bb
@@ -117,6 +117,7 @@ EXTRA_OEMAKE += "\
# honour a JOBS variable.
EXTRA_OEMAKE:append:task-configure = " JOBS=1"
+PERF_SRC_OPTIONAL ?= "arch/arm64/tools"
PERF_SRC ?= "Makefile \
tools/arch \
tools/build \
@@ -127,6 +128,7 @@ PERF_SRC ?= "Makefile \
tools/scripts \
scripts/ \
arch/${ARCH}/Makefile \
+ ${PERF_SRC_OPTIONAL} \
"
PERF_EXTRA_LDFLAGS = ""
@@ -162,6 +164,7 @@ do_install() {
do_configure[prefuncs] += "copy_perf_source_from_kernel"
python copy_perf_source_from_kernel() {
+ sources_opt = (d.getVar("PERF_SRC_OPTIONAL") or "").split()
sources = (d.getVar("PERF_SRC") or "").split()
src_dir = d.getVar("STAGING_KERNEL_DIR")
dest_dir = d.getVar("S")
@@ -171,6 +174,8 @@ python copy_perf_source_from_kernel() {
src = oe.path.join(src_dir, s)
dest = oe.path.join(dest_dir, s)
if not os.path.exists(src):
+ if s in sources_opt:
+ continue
bb.fatal("Path does not exist: %s. Maybe PERF_SRC does not match the kernel version." % src)
if os.path.isdir(src):
oe.path.copyhardlinktree(src, dest)
--
2.35.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] perf: fix build with latest kernel
2023-11-06 19:52 [PATCH] perf: fix build with latest kernel Max Krummenacher
@ 2023-11-06 20:04 ` Bruce Ashfield
2023-11-06 20:40 ` Max Krummenacher
0 siblings, 1 reply; 4+ messages in thread
From: Bruce Ashfield @ 2023-11-06 20:04 UTC (permalink / raw)
To: Max Krummenacher; +Cc: openembedded-core, mikko.rapeli, Max Krummenacher
On Mon, Nov 6, 2023 at 2:53 PM Max Krummenacher <max.oss.09@gmail.com> wrote:
>
> From: Max Krummenacher <max.krummenacher@toradex.com>
>
> Kernel 6.7-rc1 commit 02e85f74668e ("tools: arm64: Add a Makefile for
> generating sysreg-defs.h") uses files from arch/arm64/tools/,
> gen-sysreg.awk and sysreg.
> Without the files the build of perf fails independent of the used
> architecture (confirmed with armv7 and qemux86_64).
>
> As arch/arm64/tools/ has been added with 5.13 allow perf to build
> even it that directory does not exist.
>
> Add arch/arm64/tools/ to PERF_SRC.
>
> Fixes:
> | make[3]: *** No rule to make target '.../qemux86_64-tdx-linux/perf/1.0/perf-1.0/arch/arm64/tools/gen-sysreg.awk', needed by '.../qemux86_64-tdx-linux/perf/1.0/perf-1.0/tools/arch/arm64/include/generated/asm/sysreg-defs.h'. Stop.
> | make[2]: *** [Makefile.perf:456: arm64-sysreg-defs] Error 2
>
> Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
> ---
> meta/recipes-kernel/perf/perf.bb | 5 +++++
> 1 file changed, 5 insertions(+)
>
> Hi all
>
> I see some other options:
> - drop perf support for kernels<5.13 and simply add to PERF_SRC
> - drop the bb.fatal in favour of continue and simply add to PERF_SRC
>
> Any comments?
I just ran into this myself while updating linux-yocto-dev
What you have is better than either of those options, but different
from what I was working on.
perf already uses KERNEL_VERSION, so I was adding some KERNEL_VERSION
specific sources and only copying them when they match.
I'm concerned that skipping or always allowing files to not exist will
lead us to more subtle errors with invalid/incorrect kernel source trees.
Another idea I had is to just skip if sources don't exist (like we do in
devsrc), but bb.warn so the user is aware.
Bruce
>
> Thanks.
> Max
>
>
> diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
> index 675acfaf26..dae9320169 100644
> --- a/meta/recipes-kernel/perf/perf.bb
> +++ b/meta/recipes-kernel/perf/perf.bb
> @@ -117,6 +117,7 @@ EXTRA_OEMAKE += "\
> # honour a JOBS variable.
> EXTRA_OEMAKE:append:task-configure = " JOBS=1"
>
> +PERF_SRC_OPTIONAL ?= "arch/arm64/tools"
> PERF_SRC ?= "Makefile \
> tools/arch \
> tools/build \
> @@ -127,6 +128,7 @@ PERF_SRC ?= "Makefile \
> tools/scripts \
> scripts/ \
> arch/${ARCH}/Makefile \
> + ${PERF_SRC_OPTIONAL} \
> "
>
> PERF_EXTRA_LDFLAGS = ""
> @@ -162,6 +164,7 @@ do_install() {
>
> do_configure[prefuncs] += "copy_perf_source_from_kernel"
> python copy_perf_source_from_kernel() {
> + sources_opt = (d.getVar("PERF_SRC_OPTIONAL") or "").split()
> sources = (d.getVar("PERF_SRC") or "").split()
> src_dir = d.getVar("STAGING_KERNEL_DIR")
> dest_dir = d.getVar("S")
> @@ -171,6 +174,8 @@ python copy_perf_source_from_kernel() {
> src = oe.path.join(src_dir, s)
> dest = oe.path.join(dest_dir, s)
> if not os.path.exists(src):
> + if s in sources_opt:
> + continue
> bb.fatal("Path does not exist: %s. Maybe PERF_SRC does not match the kernel version." % src)
> if os.path.isdir(src):
> oe.path.copyhardlinktree(src, dest)
> --
> 2.35.3
>
--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] perf: fix build with latest kernel
2023-11-06 20:04 ` Bruce Ashfield
@ 2023-11-06 20:40 ` Max Krummenacher
2023-11-07 0:19 ` Bruce Ashfield
0 siblings, 1 reply; 4+ messages in thread
From: Max Krummenacher @ 2023-11-06 20:40 UTC (permalink / raw)
To: Bruce Ashfield; +Cc: openembedded-core, Max Krummenacher, mikko.rapeli
On Mon, Nov 6, 2023 at 9:04 PM Bruce Ashfield <bruce.ashfield@gmail.com> wrote:
>
> On Mon, Nov 6, 2023 at 2:53 PM Max Krummenacher <max.oss.09@gmail.com> wrote:
> >
> > From: Max Krummenacher <max.krummenacher@toradex.com>
> >
> > Kernel 6.7-rc1 commit 02e85f74668e ("tools: arm64: Add a Makefile for
> > generating sysreg-defs.h") uses files from arch/arm64/tools/,
> > gen-sysreg.awk and sysreg.
> > Without the files the build of perf fails independent of the used
> > architecture (confirmed with armv7 and qemux86_64).
> >
> > As arch/arm64/tools/ has been added with 5.13 allow perf to build
> > even it that directory does not exist.
> >
> > Add arch/arm64/tools/ to PERF_SRC.
> >
> > Fixes:
> > | make[3]: *** No rule to make target '.../qemux86_64-tdx-linux/perf/1.0/perf-1.0/arch/arm64/tools/gen-sysreg.awk', needed by '.../qemux86_64-tdx-linux/perf/1.0/perf-1.0/tools/arch/arm64/include/generated/asm/sysreg-defs.h'. Stop.
> > | make[2]: *** [Makefile.perf:456: arm64-sysreg-defs] Error 2
> >
> > Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
> > ---
> > meta/recipes-kernel/perf/perf.bb | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > Hi all
> >
> > I see some other options:
> > - drop perf support for kernels<5.13 and simply add to PERF_SRC
> > - drop the bb.fatal in favour of continue and simply add to PERF_SRC
> >
> > Any comments?
>
> I just ran into this myself while updating linux-yocto-dev
>
> What you have is better than either of those options, but different
> from what I was working on.
>
> perf already uses KERNEL_VERSION, so I was adding some KERNEL_VERSION
> specific sources and only copying them when they match.
>
> I'm concerned that skipping or always allowing files to not exist will
> lead us to more subtle errors with invalid/incorrect kernel source trees.
>
> Another idea I had is to just skip if sources don't exist (like we do in
> devsrc), but bb.warn so the user is aware.
I can change the commit to:
- just add to PERF_SRC
- change the bb.fatal to bb.warn with the existing error string
- add a 'continue' after the bb.warn
Does that sound like a plan?
Max
>
> Bruce
>
> >
> > Thanks.
> > Max
> >
> >
> > diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
> > index 675acfaf26..dae9320169 100644
> > --- a/meta/recipes-kernel/perf/perf.bb
> > +++ b/meta/recipes-kernel/perf/perf.bb
> > @@ -117,6 +117,7 @@ EXTRA_OEMAKE += "\
> > # honour a JOBS variable.
> > EXTRA_OEMAKE:append:task-configure = " JOBS=1"
> >
> > +PERF_SRC_OPTIONAL ?= "arch/arm64/tools"
> > PERF_SRC ?= "Makefile \
> > tools/arch \
> > tools/build \
> > @@ -127,6 +128,7 @@ PERF_SRC ?= "Makefile \
> > tools/scripts \
> > scripts/ \
> > arch/${ARCH}/Makefile \
> > + ${PERF_SRC_OPTIONAL} \
> > "
> >
> > PERF_EXTRA_LDFLAGS = ""
> > @@ -162,6 +164,7 @@ do_install() {
> >
> > do_configure[prefuncs] += "copy_perf_source_from_kernel"
> > python copy_perf_source_from_kernel() {
> > + sources_opt = (d.getVar("PERF_SRC_OPTIONAL") or "").split()
> > sources = (d.getVar("PERF_SRC") or "").split()
> > src_dir = d.getVar("STAGING_KERNEL_DIR")
> > dest_dir = d.getVar("S")
> > @@ -171,6 +174,8 @@ python copy_perf_source_from_kernel() {
> > src = oe.path.join(src_dir, s)
> > dest = oe.path.join(dest_dir, s)
> > if not os.path.exists(src):
> > + if s in sources_opt:
> > + continue
> > bb.fatal("Path does not exist: %s. Maybe PERF_SRC does not match the kernel version." % src)
> > if os.path.isdir(src):
> > oe.path.copyhardlinktree(src, dest)
> > --
> > 2.35.3
> >
>
>
> --
> - Thou shalt not follow the NULL pointer, for chaos and madness await
> thee at its end
> - "Use the force Harry" - Gandalf, Star Trek II
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] perf: fix build with latest kernel
2023-11-06 20:40 ` Max Krummenacher
@ 2023-11-07 0:19 ` Bruce Ashfield
0 siblings, 0 replies; 4+ messages in thread
From: Bruce Ashfield @ 2023-11-07 0:19 UTC (permalink / raw)
To: Max Krummenacher; +Cc: openembedded-core, Max Krummenacher, mikko.rapeli
On Mon, Nov 6, 2023 at 3:40 PM Max Krummenacher <max.oss.09@gmail.com> wrote:
>
> On Mon, Nov 6, 2023 at 9:04 PM Bruce Ashfield <bruce.ashfield@gmail.com> wrote:
> >
> > On Mon, Nov 6, 2023 at 2:53 PM Max Krummenacher <max.oss.09@gmail.com> wrote:
> > >
> > > From: Max Krummenacher <max.krummenacher@toradex.com>
> > >
> > > Kernel 6.7-rc1 commit 02e85f74668e ("tools: arm64: Add a Makefile for
> > > generating sysreg-defs.h") uses files from arch/arm64/tools/,
> > > gen-sysreg.awk and sysreg.
> > > Without the files the build of perf fails independent of the used
> > > architecture (confirmed with armv7 and qemux86_64).
> > >
> > > As arch/arm64/tools/ has been added with 5.13 allow perf to build
> > > even it that directory does not exist.
> > >
> > > Add arch/arm64/tools/ to PERF_SRC.
> > >
> > > Fixes:
> > > | make[3]: *** No rule to make target '.../qemux86_64-tdx-linux/perf/1.0/perf-1.0/arch/arm64/tools/gen-sysreg.awk', needed by '.../qemux86_64-tdx-linux/perf/1.0/perf-1.0/tools/arch/arm64/include/generated/asm/sysreg-defs.h'. Stop.
> > > | make[2]: *** [Makefile.perf:456: arm64-sysreg-defs] Error 2
> > >
> > > Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
> > > ---
> > > meta/recipes-kernel/perf/perf.bb | 5 +++++
> > > 1 file changed, 5 insertions(+)
> > >
> > > Hi all
> > >
> > > I see some other options:
> > > - drop perf support for kernels<5.13 and simply add to PERF_SRC
> > > - drop the bb.fatal in favour of continue and simply add to PERF_SRC
> > >
> > > Any comments?
> >
> > I just ran into this myself while updating linux-yocto-dev
> >
> > What you have is better than either of those options, but different
> > from what I was working on.
> >
> > perf already uses KERNEL_VERSION, so I was adding some KERNEL_VERSION
> > specific sources and only copying them when they match.
> >
> > I'm concerned that skipping or always allowing files to not exist will
> > lead us to more subtle errors with invalid/incorrect kernel source trees.
> >
> > Another idea I had is to just skip if sources don't exist (like we do in
> > devsrc), but bb.warn so the user is aware.
>
> I can change the commit to:
> - just add to PERF_SRC
> - change the bb.fatal to bb.warn with the existing error string
> - add a 'continue' after the bb.warn
>
> Does that sound like a plan?
That matches my 2nd idea to fix it, so I'm good with it.
It'll really only just be someone using an old kernel against master
that will ever see a warning, so I have no issues with it.
Bruce
>
> Max
> >
> > Bruce
> >
> > >
> > > Thanks.
> > > Max
> > >
> > >
> > > diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
> > > index 675acfaf26..dae9320169 100644
> > > --- a/meta/recipes-kernel/perf/perf.bb
> > > +++ b/meta/recipes-kernel/perf/perf.bb
> > > @@ -117,6 +117,7 @@ EXTRA_OEMAKE += "\
> > > # honour a JOBS variable.
> > > EXTRA_OEMAKE:append:task-configure = " JOBS=1"
> > >
> > > +PERF_SRC_OPTIONAL ?= "arch/arm64/tools"
> > > PERF_SRC ?= "Makefile \
> > > tools/arch \
> > > tools/build \
> > > @@ -127,6 +128,7 @@ PERF_SRC ?= "Makefile \
> > > tools/scripts \
> > > scripts/ \
> > > arch/${ARCH}/Makefile \
> > > + ${PERF_SRC_OPTIONAL} \
> > > "
> > >
> > > PERF_EXTRA_LDFLAGS = ""
> > > @@ -162,6 +164,7 @@ do_install() {
> > >
> > > do_configure[prefuncs] += "copy_perf_source_from_kernel"
> > > python copy_perf_source_from_kernel() {
> > > + sources_opt = (d.getVar("PERF_SRC_OPTIONAL") or "").split()
> > > sources = (d.getVar("PERF_SRC") or "").split()
> > > src_dir = d.getVar("STAGING_KERNEL_DIR")
> > > dest_dir = d.getVar("S")
> > > @@ -171,6 +174,8 @@ python copy_perf_source_from_kernel() {
> > > src = oe.path.join(src_dir, s)
> > > dest = oe.path.join(dest_dir, s)
> > > if not os.path.exists(src):
> > > + if s in sources_opt:
> > > + continue
> > > bb.fatal("Path does not exist: %s. Maybe PERF_SRC does not match the kernel version." % src)
> > > if os.path.isdir(src):
> > > oe.path.copyhardlinktree(src, dest)
> > > --
> > > 2.35.3
> > >
> >
> >
> > --
> > - Thou shalt not follow the NULL pointer, for chaos and madness await
> > thee at its end
> > - "Use the force Harry" - Gandalf, Star Trek II
--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-11-07 0:20 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-06 19:52 [PATCH] perf: fix build with latest kernel Max Krummenacher
2023-11-06 20:04 ` Bruce Ashfield
2023-11-06 20:40 ` Max Krummenacher
2023-11-07 0:19 ` Bruce Ashfield
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.