Commit Graph

150 Commits

Author SHA1 Message Date
Richard Purdie
1b94ea8b25 recipes: Drop remaining PR values from recipes
We've been removing PR values from recipes at upgrade time for a while. In general
anyone maintaining a binary distro would end up having to curate these themselves
so the values in OE-Core aren't really that useful anymore. In many ways it makes
sense to clear out the remaining ones (which are mostly for 'config' recipes that
are unlikely to increase in PV) and leave a clean slate for anyone implementing
a binary distro config.

References are left in meta-selftest since the tests there do involve them and
their removal upon upgrade.

(From OE-Core rev: d4c346e8ab8f3cae25d1b01c7331ed9f6d4f96ef)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-09-22 07:45:17 +01:00
Ross Burton
fe09892082 perf: disable perl support
The perf support was broken and if enabled results in non-reproducible
binaries, so disable it for now.

(From OE-Core rev: 55463c1898c220b79b77da95b2d0dd9bdc1628a2)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-08-24 16:50:24 +01:00
Ross Burton
d37eff3907 perf: split scripting PACKAGECONFIG into perl and python
There's no reason for Python and Perl support to be tied together, so
split the PACKAGECONFIG into two.

(From OE-Core rev: af1511065120b12600e39725d8507fa2c018ae1b)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-08-24 16:50:24 +01:00
Ross Burton
8eb4223c22 perf: fix perl binding support
The build of the perl integration has been broken for some time.

Update the PERL_* variables so that it can find libperl in the new
location.

This then fails because the Perl headers cause warnings and the feature
checks run with -Werror, so disable the errors.

The perf-dbg package then has target build paths, so set INSANE_SKIP for
now until this is resolved.

(From OE-Core rev: a59e31c78b5468fac461067e5bacf263c2cf23ad)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-08-24 16:50:24 +01:00
Ross Burton
0fa81bddd6 perf: add more PACKAGECONFIGs
libpfm4 and babeltrace are enabled if they're found, so add
PACKAGECONFIGs so that our configuration is explicit.

(From OE-Core rev: 8818a259495310f3054abc2918771587e6f82ae9)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-08-24 16:50:24 +01:00
Ross Burton
04f625d0d1 perf: enable verbose feature detection
Having verbose feature detection is helpful to see exactly what has been
enabled or disabled.

(From OE-Core rev: d08de74d09a83d3bc94cce80f886bd2c6add416b)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-08-24 16:50:24 +01:00
Bruce Ashfield
6a7a4feb62 perf: fix buildpaths QA warning in 6.4+
kernel version 6.4 introduces a new file that need to have
absolute paths removed, so we can avoid the buildpaths QA
warning and have relocatable packages.

We add pmu-flex.h to the processing, and the issue is resolved.

(From OE-Core rev: b9f1d1ec162531e0ce59ea829ae570ca907b3448)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-07-10 11:36:34 +01:00
Khem Raj
5f022cd62c perf: Make built-in libtraceevent plugins cohabit with external libtraceevent
This will package the plugins built by perf into kernel specific dir
under libdir, so it does not conflict with plugins from newly added
libtraceevent recipe

Fixes
do_sdk_depends: The file /usr/lib/traceevent/plugins/plugin_cfg80211.so is installed by both perf and libtraceevent, aborting

(From OE-Core rev: 28f39769c27d257a60ff0152acc0c76f0276fa6a)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-05-31 16:53:04 +01:00
Max Krummenacher
fc899f1e1b perf: add libtraceevent packageconfig
With kernel 6.4-rc1 commit 6898e60f709b ("perf build: If libtraceevent
isn't present error the build") having libtraceevent is a required
dependency unless building it with 'NO_LIBTRACEEVENT=1'.

Older kernels did build libtraceevent as provided by the kernel sources.
(Unless LIBTRACEEVENT_DYNAMIC=1 was defined, then it tried to pickup
an external provided libtraceevent and printed a warning if not found.)

Add a libtraceevent packageconfig which adds the dependency on
libtraceevent if set, otherwise builds with NO_LIBTRACEEVENT=1.
For older kernels the old behaviour of building libtraceevent from
the kernel sources isn't changed.

(From OE-Core rev: 7e7a7394b47f6fd4a4dd26a18a5d94302ab6df1e)

Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-05-22 10:53:47 +01:00
Max Krummenacher
03adf4b267 perf: make pkg-config available
Fixup the to be called pkg-config as $(CROSS_COMPILE)pkg-config doesn't
exist.
With kernels < 6.4 pkg-config is only used for the gtk+-2.0 integration
which is disabled in the OE config. Thus the issue wasn't exposed so
far. With kernel 6.4 pkg-config is additionally used for libtraceevent
and libtracefs.

(From OE-Core rev: f7e743428792fde93d5ca1c97244fc2b967fe666)

Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-05-22 10:53:47 +01:00
Bruce Ashfield
64c96cbe52 perf: fix buildpaths QA warning
In the 6.2+ kernel, arm64 perf has a buildpaths QA warning as
a syscall table is now being dynamically generated. That generated
table includes unistd.h by absolute path, which in turn triggers
the buildpaths QA warning.

This could easily be patched in linux-yocto, but that would
leave the QA issue in perf built from other kernel trees.

So we instead to the following:

 - Add the perf tools directory to the include path
 - Modify the Makefile to have a relative path to unistd.h and
   pass both the relative and absolute path to the generation
   script
 - Modify the generation script to take the relative location
   of unistd.h as a new parameter, and use that in the generated
   sycalls.c file

At build, the added include path of the perf source allows the
relative path file to be included, and no buildpaths warning is
generated.

(From OE-Core rev: c8845ab59cd7c28874473618f134a5d45906d6ea)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-03-11 00:08:41 +00:00
Richard Purdie
3ff392fb58 perf: Enable debug/source packaging
This was disabled in 2014[1] due to an error message which as far
as I can tell, no longer occurs.

Having debug information and source files present will make debugging
reproducibility issues much easier so remove this line as it appears
no longer needed.

Fix up a few files which have buildpaths in them to avoid QA warnings
and reproducubility issues.

[1] OE-Core revision c1b5a262c0201faf2c6bf545d6acb32dfe383ba3

(From OE-Core rev: 95983108121c8b96f5659d110498bf2afc6189d9)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-02-04 17:02:10 +00:00
Richard Purdie
063bdffc04 perf: Fix 6.1 kernel reproducibility issue
The pmu-events.c file is generated by a python script making os.scandir()
calls. The return value is "order on disk" which can cary between machines.

Add in a sed to fix the perf source to sort this data which makes
the pmu-events.c file deterministic.

We should try and upstream this change but we'll need to sed for varying
kernel versions. We should also try and get the perf source being added
to the perf-devsrc package so when failures like this occur, diffoscope
is much more helpful!

(From OE-Core rev: d2c27ae5c0d06363d2f0a2a8eb4e8e492df58444)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2023-02-03 16:52:15 +00:00
Khem Raj
dc0af3be0f perf: Depend on native setuptools3
perf has need for python setuptools when scripting is enabled
from 6.0.0 onwards it seems to throw an explicit error

(From OE-Core rev: da3d00178809bbf7cc453401e0c5937796ebc2c1)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-10-25 13:42:03 +01:00
Richard Purdie
f4951a44c6 perf: Fix for recent kernel upgrades
With recent kernel changes in stable, the full path to python was being
encoded into binaries and python install files. Add some workarounds
for both issues to fix build reproducibility issues.

(From OE-Core rev: cf33e2ab2693eafaf0e5fc45666355d60e084281)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-09-21 09:20:49 +01:00
Khem Raj
dfc6a93d0b perf: Add packageconfig for libbfd support and use disabled as default
Disable it by default, libbfd changes with binutils major releases and
sometimes it creates a dependency to fix it. See [1]

This will help building with binutils 2.39

[1] https://lore.kernel.org/lkml/20210910225756.729087-1-irogers@google.com/T/

(From OE-Core rev: 119b37cd59163970476644183ed509a2d2ea6acd)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-08-16 14:57:58 +01:00
Richard Purdie
0b7567d577 perf: Fix reproducibility issues with 5.19 onwards
In 5.19 onwards the build process changed and encoded full build paths
into the output. Adapt the code to look more like our setuptools class
calls. This seems to work ok with older kernels too.

(From OE-Core rev: 138673f833a72c636a7fa185089f25dda350dc54)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-08-12 11:46:26 +01:00
Ross Burton
a0e690138c perf: fix reproduciblity in older releases of Linux
If you build perf from Linux 5.4 it still contains buildpaths (pointing
to the sysroot's Python) as the existing fixes don't apply to the lines
in that old release.

Add further expressions to remove the final buildpaths.

(From OE-Core rev: 6783c1e295e5afafd73a02fd986ca8956a89dda7)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-07-23 13:55:26 +01:00
Bruce Ashfield
4a75d478da perf: fix reproducibility in 5.19+
kernels with upstream commit 630af16eee495f583db5202c3613d1b191f10694
[perf tools: Use Python devtools for version autodetection rather than
runtime], or -stable backports of that commmit, evade our substitutions
for reproducibility.

We add a second sed expression to ensure that our definition of python
is used, as we have the proper environement setup and don't need the
full path of python, which eventually will be captured by the perf
binaries.

(From OE-Core rev: b24e73fb34049061ea03a6f2b6a54cdbee7b406b)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-07-04 22:51:49 +01:00
Lucas Stach
04a4ecd767 perf: sort-pmuevents: really keep array terminators
Commit e1382583cd50 ("perf: sort-pmuevents: don't drop elements") tried
to fix a case where the array terminator elements were dropped from the
sorted list breaking the build, but it only worked for the case where
the terminator is the only element of the array. When the array has other
elements the terminator will still be silently dropped, causing invalid
memory accesses at runtime when the perf utility iterates over the array.

Fix this by treating any unmatched entry as an array terminator and also
add a comment to make it a little more clear how things are ending up at
the right position in the sorted list.

(From OE-Core rev: 69c35a48c5100b884f1b633142b07222b9390e92)

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-06-22 22:40:28 +01:00
Richard Purdie
b0130fcf91 meta/meta-selftest/meta-skeleton: Update LICENSE variable to use SPDX license identifiers
An automated conversion using scripts/contrib/convert-spdx-licenses.py to
convert to use the standard SPDX license identifiers. Two recipes in meta-selftest
were not converted as they're that way specifically for testing. A change in
linux-firmware was also skipped and may need a more manual tweak.

(From OE-Core rev: ceda3238cdbf1beb216ae9ddb242470d5dfc25e0)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-02-20 16:45:25 +00:00
Richard Purdie
fb8f1924f5 perf: Tweak for mips n64
With the changes to binutils, perf's direct calls to ld break for mips n64.
We already have tweaks for n32 so match those with the ones for n64.

(From OE-Core rev: 33828620872b80e1c745612e025215666ba755c8)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-12 11:27:23 +00:00
Khem Raj
11401c4505 perf: Enable libunwind packageconfig on riscv64
libunwind now supports risc64

(From OE-Core rev: 41ab1040b61a86157dd1995e36deb3df65d9c0c5)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-12-06 11:09:52 +00:00
Max Krummenacher
44a3909bf6 perf: sort-pmuevents: allow for additional type qualifiers and storage class
With kernel 5.16 some structs in pmu-events do get a const qualifier, some
a static const storage class and qualifier.

The current sort-pmuevents cannot cope with that and drops all struct
arrays with such additional elements. This then leads to compiler errors.

Allow '^struct', '^const struct', '^static struct', '^static const struct'.

(From OE-Core rev: 8406e83ade1c34d8a7d8063f2e7445aafa471721)

Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-11-26 17:01:08 +00:00
Max Krummenacher
c67fab09fe perf: sort-pmuevents: don't drop elements
If a struct element neither has an element cpuid or name it gets silenty
dropped.
Kernel 5.15 for some ARCHs have at least one array of structs matching
this.
e.g. for arm pmu-events.c:

|#include "pmu-events/pmu-events.h"
struct pmu_events_map pmu_events_map[] = {
{
	.cpuid = 0,
	.version = 0,
	.type = 0,
	.table = 0,
},
};

struct pmu_sys_events pmu_sys_event_tables[] = {
	{
		.table = 0
	},
};

Before this patch the second struct is translated to an empty array::

struct pmu_sys_events pmu_sys_event_tables[] = {
};

(From OE-Core rev: e1382583cd5060be301afaa9998ccf250cc8bca3)

Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-11-26 17:01:08 +00:00
Denys Dmytriyenko
fdf57744b4 meta: convert nested overrides leftovers to new syntax
Those were missed in previous rounds of automated and manual conversion.

(From OE-Core rev: 22f9c7268b542baf6cd8aa0e34c8fb7aa1579e08)

Signed-off-by: Denys Dmytriyenko <denis@denix.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-08-04 20:45:41 +01:00
Richard Purdie
bb6ddc3691 Convert to new override syntax
This is the result of automated script conversion:

scripts/contrib/convert-overrides.py <oe-core directory>

converting the metadata to use ":" as the override character instead of "_".

(From OE-Core rev: 42344347be29f0997cc2f7636d9603b1fe1875ae)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-08-02 15:44:10 +01:00
Richard Purdie
0f681265f5 perf: Use python3targetconfig to ensure we use target libraries
We've seen some reproducibility issues on the autobuilder in perf where the
size of the python module varies slightly between systems. After some head
scratching and removing the --quiet option to the python module build,
you can see it using -Lrecipe-sysroot-native in the linking commandline
for the module. This means it is linking against the native library
on systems where that works, skipping it and using the target one
otherwise, probably with warnings in logs we've not seen.

The fix is to inherit the python3targetconfig class which ensures
that the target sysroot is used, then the byte differences between
the builds go away and things are sane(r) again.

(From OE-Core rev: 8e2b6c042edd9ec76cb8281247604e4f81518780)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-06-17 13:42:31 +01:00
Bruce Ashfield
327eb77b0e perf: fix python-audit RDEPENDS
When doing the perf python3 conversion, the audit-python RDEPENDS
was caught up in the regex replacement and was incorrectly changed.

The audit recipe continues to produce a package called audit-python
and it is that package we should have as a RDEPENDS.

(From OE-Core rev: 7eccb9c0c2ea00685451c44cb8faa96c4a2272fd)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-05-04 22:48:16 +01:00
Bruce Ashfield
4de08d01ba perf-tests: add bash into RDEPENDS (v5.12-rc5+)
Upstream commit:

   commit 1dc481c0b0cf18d3952d93a73c4ece90dec277f0
   Author: Leo Yan <leo.yan@linaro.org>
   Date:   Sat Mar 20 18:45:54 2021 +0800

       perf test: Change to use bash for daemon test

       When executing the daemon test on Arm64 and x86 with Debian (Buster)
       distro, both skip the test case with the log:

Changes tools/perf/tests/shell/daemon.sh to be explicitly bash
(it was already required, but was just skipped on various
distros).

We add it into our RDEPENDS for perf-tests to fixup 5.12+
builds.

We already have relatively heavy RDEPENDS for perf tests (python3), so
adding bash into the RDEPENDS isn't signifcant even for older perf
builds that use the same recipe.

(From OE-Core rev: 159cdb159ad0e9d3ed73cfc07f9acd5c0b608e7b)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-04-06 22:37:23 +01:00
Khem Raj
b19c8f0af0 perf: Remove libunwind for rv32
libunwind is not yet ported to RISCV32

(From OE-Core rev: 2cce2a296b4659a6c7e7f069e11f6f35957608d2)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-03-14 16:33:59 +00:00
Bruce Ashfield
6bb1621815 perf: reproducibility fixes for pmu-events.c
perf generates pmu-events.c as part of the build process. The
code that generates the events is doing tree walks and potentially
other non-determinstic things.

We'd rather not mess with that implementation, so we add a script
that knows how to read the pmu-events.c, sort the entries and then
copy it over the generated one.

With this, we should always have events in the same order, improving
reproducibility.

(From OE-Core rev: 5281b2a6e16b6d24b66172b8269478356c0ce6c9)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-03-12 15:35:08 +00:00
Bruce Ashfield
a42b2bf96e perf: fix reproducibility issues
perf has been failing our reproducible testing due to multiple symbols
containg build paths.

With this commit, we fix the issues:

 1) The following line in the Makefle:

     override PYTHON := $(call get-executable-or-default,PYTHON,$(PYTHON_AUTO))

 "PYTHON" / "PYTHON_AUTO" have the full path as part of the variable. We've
 ensure that the environment is setup and we do not need the full path to be
 captured, since the symbol gets built into the executable, making it not
 reproducible.

 2) The following line:

    srcdir_SQ = $(patsubst %tools/perf,tools/perf,$(subst ','\'',$(srcdir))),

 Captures the full src path of perf, which of course makes it not
 reproducible. We really only need the relative location 'tools/perf', so we
 change the Makefile line to remove everything before 'tools/perf'

 3) OUTPUT is the full path, we have python on the path so we remove it from the
 definition. This is captured in the perf binary, so breaks reproducibility

     PYTHONPATH="BUILD_STR(python)

 4) To avoid bison generating #ifdefs that have captured paths, we make sure
 all the calls have YFLAGS, which contains prefix mapping information.

Upstream-status: OE specific to our cross/build environments. Variants
                 will be developed for upstream

(From OE-Core rev: dea57aa1cd879df4feae1b9595b38c5b6ff74574)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-03-10 10:30:39 +00:00
Martin Jansa
c36fb625d1 perf: backport a fix for confusing non-fatal error
* add V=1 to make log.do_compile a bit more useful, with this it shows:
  /bin/sh '/OE/build/oe-core/tmp-glibc/work/qemux86_64-oe-linux/perf/1.0-r9/perf-1.0/tools/perf/trace/beauty/arch_errno_names.sh' x86_64-oe-linux-gcc  -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse --sysroot=/OE/build/oe-core/tmp-glibc/work/qemux86_64-oe-linux/perf/1.0-r9/recipe-sysroot /OE/build/oe-core/tmp-glibc/work/qemux86_64-oe-linux/perf/1.0-r9/perf-1.0/tools > /OE/build/oe-core/tmp-glibc/work/qemux86_64-oe-linux/perf/1.0-r9/perf-1.0/trace/beauty/generated/arch_errno_name_array.c
  find: unknown predicate `-m64/arch'
  x86_64-oe-linux-gcc: error: unrecognized command-line option '-m64/include/uapi/asm-generic/errno.h'
  x86_64-oe-linux-gcc: fatal error: no input files
  compilation terminated.
  x86_64-oe-linux-gcc: error: unrecognized command-line option '-m64/include/uapi/asm-generic/errno.h'
  x86_64-oe-linux-gcc: fatal error: no input files
  compilation terminated.

* apply e4ffd066ff
  with sed call to fix this

(From OE-Core rev: c603e6e13e44ae907cf1f04abf6e1babf3d7be26)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2020-08-20 15:30:07 +01:00
Ross Burton
5093e5472b perf: add PACKAGECONFIG for CoreSight support
meta-arm has a recipe for OpenCSD, the CoreSight Trace Decoder library,
so add a PACKAGECONFIG so that users can enable the use of CoreSight in
perf builds.

(From OE-Core rev: 2e9c2f054730069554c9102333aa779c214d8b90)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2020-07-18 11:06:31 +01:00
Changqing Li
40f37ab231 perf: fix compile error when rebuilding
Fix error like:
Makefile.perf:597: recipe for target
'intel_x86_64-wrs-linux/perf/1.0-r9/perf-1.0/perf-in.o] Error 2
Makefile.perf:220: recipe for target 'sub-make' failed
make[1]: *** [sub-make] Error 2
Makefile:69: recipe for target 'all' failed
make: *** [all] Error 2

during rebuilding, when kernel version changed, some
source files also maybe changed. It could happened
that the source under ${S} messed up with some already
dropped files and also new files. Fix by clean the ${S}
before copy source files.

(From OE-Core rev: 57b4745cca8d486c1f20b8f01f4a25cb59c4b968)

Signed-off-by: Changqing Li <changqing.li@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2020-04-02 15:24:59 +01:00
Paul Barker
c82b02815b perf: Fix externalsrc support
When the externalsrc class is used the tasks listed in
SRCTREECOVEREDTASKS are deleted to prevent them being executed. If
externalsrc is used for the kernel then this will include
virtual/kernel:do_patch.

We can depend on do_shared_workdir instead as this will survive when
externalsrc is used.

(From OE-Core rev: eab605bab94552046ec4adae5debe026cc03bb4c)

Signed-off-by: Paul Barker <pbarker@konsulko.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2020-03-10 23:20:33 +00:00
He Zhe
3a1a18ba9d perf: Correct the substitution of python shebangs
To make the native python3 always used,

- Use sed one-liner instead
- Add substitution for ${S}/scripts/bpf_helpers_doc.py to fix the
  following warning.

File "/usr/lib/python3.6/sysconfig.py", line 421, in _init_posix
_temp = __import__(name, globals(), locals(), ['build_time_vars'], 0)
ModuleNotFoundError: No module named '_sysconfigdata'

This issue is first reported by Joel Stanley <joel@jms.id.au>
The sed one-liner is credited to Anuj Mittal <anuj.mittal@intel.com>

(From OE-Core rev: 3f93173130a94310255389cfc62c67102a4fb21b)

Signed-off-by: He Zhe <zhe.he@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2020-02-22 23:57:27 +00:00
Khem Raj
b7e6a763f6 perf: Pass LDSHARED and CCLD via EXTRA_OEMAKE
python code underneath is smart and pokes at python installation in
sysroot for compile environment, the overrides from EXTRA_OEMAKE are
ofcourse preferred but it falls back to python3's distutils/sysconfig
for rest of them, and it does use CCLD and LDSHARED for linking, when we
use clang to compile python3 then it encodes these variables to be clang
however, when building perf we inherit kernel which forces gcc to be
used for compiling perf, which then mixes both compilers due to CCLD and
LDSHARED demands. Therefore override CCLD and LDSHARED in make
environment helps python/distutils to use right linker

(From OE-Core rev: f9259da409c2aa92deb71aef0da2405c8d836615)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2020-01-27 16:48:09 +00:00
Bruce Ashfield
e5c4f31275 perf: fix build for v5.5+
In kernel 5.5+ there are python3 scripts that explicitly use
/usr/bin/python3 as the interpreter. That will find the host
python and produce undefined results.

We add that interpreter path to our substitutions to ensure
that our sysroot variant is used.

(From OE-Core rev: 103316d50d4947b3c3500eb5cbc4845702a62d22)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2020-01-16 22:33:09 +00:00
Bruce Ashfield
2f9b303ed4 perf: drop 'include' copy
The copy of the kernel's top level include directory is not
required to build perf. We have both the linux-libc-headers and
perf's captured/copied headers for what it requires.

The copy of the kernel's headers is leading us to multiple smaller
fixes to ensure that the various .h files are in sync. We can
remove the copy and all of the sync checks, and perf still builds
and executes correctly.

(From OE-Core rev: 79bfd5515887e5faf315a581d98bda63899760da)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-11-04 13:39:04 +00:00
Bruce Ashfield
a2b0925e10 perf: add 'cap' PACKAGECONFIG
perf can use libcap when available, so we add a packageconfig
for those that want the support.

(From OE-Core rev: 9a35c61d2218e139aa4420ef25f8cf4a0c4c2cfc)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-11-04 13:39:04 +00:00
Bruce Ashfield
f6166e64f1 perf: create directories before copying single files
If we need to copy a single file from the linux source tree into
the perf source tree, we need to ensure that the directory structure
it requires has been created first.

(From OE-Core rev: 7c33f0b1ee35031aa97e5e5231f53d8502b583c9)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-11-04 13:39:04 +00:00
Bruce Ashfield
2c6f420640 perf: fix v5.4+ builds
When building perf for 5.4+, we have some new files that need to
be copied (and synchronized) due to structural changes in the
kernel source tree.

Some of the issues these fixes are warnings, but none the less,
they are worth fixing.

 - We copy arch/${ARCH}/Makefile, since it is source by some perf
   Makefiles

 - We copy scripts/, since the perf utilities are looking for files
   in that directory stucture.

 - We have *three* copies of ctypes.h in the tools/* hierarchy
   during the build. If the tools/perf/util/include/linux/ variant
   is used, it will trigger build errors since it is not complete.
   We copy the kernel's main include/linux/ctype.h to ensure they
   are in sync.

(From OE-Core rev: 6a000d734c2fe57b4a601fe7e7373096345b02b4)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-11-04 13:39:04 +00:00
Martin Jansa
92469aad50 perf: fix build on kernels which don't have ${S}/tools/include/linux/bits.h
* tools/include/linux/bits.h was added in v4.20-rc1 with this commit:
  commit ba4aa02b417f08a0bee5e7b8ed70cac788a7c854
  Author: Arnaldo Carvalho de Melo <acme@redhat.com>
  Date:   Tue Sep 25 10:55:59 2018 -0300

    tools include: Adopt linux/bits.h

* also if you're building for such older kernel you will probably see
  do_compile failing with:
  | config/Makefile:448: Missing perl devel files. Disabling perl scripting support, please install perl-ExtUtils-Embed/libperl-dev
  | config/Makefile:495: Python 3 is not yet supported; please set
  | config/Makefile:496: PYTHON and/or PYTHON_CONFIG appropriately.

  easiest work around is to disable scripting PACKAGECONFIG, because
  since oe-core commit:

  commit 584af667e0000129bcb5c9e8108485f2f6590eaf
  Author: Bruce Ashfield <bruce.ashfield@gmail.com>
  Date:   Wed Aug 28 22:14:41 2019 -0400

    perf: change dependencies on python to python3

    The upstream kernel can now handle python3 for the perf scripts, coupled
    with the impending EOL of python2, we switch the dependencies in perf
    (scripting) to python3.

  it now uses python3, but the support for that was added in kernel
  v4.17-rc1 with:

  commit 66dfdff03d196e51322c6a85c0d8db8bb2bdd655
  Author: Jaroslav Skarvada <jskarvad@redhat.com>
  Date:   Fri Jan 19 21:56:41 2018 +0100

    perf tools: Add Python 3 support

    Added Python 3 support while keeping Python 2.7 compatibility.

  if you really need scripting support than either backport the kernel
  patch to your kernel or undo the perf recipe changes.

(From OE-Core rev: d6ee3d3bdf183a9060b5b0c25b97688a4b9d40dc)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-09-16 23:02:45 +01:00
Bruce Ashfield
d7a0fdf133 perf: v5.3+ build fixes
In the 5.3+ perf builds, there are multiple unistd.h files that need
to be kept in sync. So not only do we update one, we update both to
ensure that libc-headers and the perf build are in sync.

perf checks some key files itself to be sure they are in sync, and
bits.h can be out of sync. There's no build error that results with
bits.h at the moment, but we still make sure they are in sync to
avoid the configure/compile warning.

(From OE-Core rev: b850ee597e7116cc2a7546853f2b976c891196ef)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-08-30 17:10:28 +01:00
Bruce Ashfield
e66d183b9e perf: change dependencies on python to python3
The upstream kernel can now handle python3 for the perf scripts, coupled
with the impending EOL of python2, we switch the dependencies in perf
(scripting) to python3.

Outside of dependency changes, we also pass the following two variables
to the perf build: PYTHON=python3 PYTHON_CONFIG=python3-config. To
ensure that our python3 components are used.

For configurations that disable perf scripting, there is no change in
behaviour.

[YOCTO #13358]

(From OE-Core rev: 584af667e0000129bcb5c9e8108485f2f6590eaf)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-08-30 17:10:28 +01:00
Martin Jansa
c10a9f72e3 perf: make sure that the tools/include/uapi/asm-generic directory exists
* before trying to copy unistd.h into it

* older kernels don't have uapi in tools/include and do_configure fails
  with:
  DEBUG: Executing shell function do_configure
  cp: cannot create regular file '.../perf/1.0-r9/perf-1.0/tools/include/uapi/asm-generic/unistd.h':
  No such file or directory
  WARNING: exit code 1 from a shell command.

* tools/include/uapi was added in kernel 4.8 with
  c4b6014e8b
  tools: Add copy of perf_event.h to tools/include/linux/

(From OE-Core rev: 5fdb96f4996856286c4f72b93d31b7990ceed8aa)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-05-15 17:53:29 +01:00
Dengke Du
a9ab562777 perf: workaround the error cased by maybe-uninitialized warning
When enable DEBUG_BUILD, the perf build failed by the following error:
    libbpf.c:727:36: error: 'data' may be used uninitialized in this function [-Werror=maybe-uninitialized]
This is ok until Khem commit a patch in oe-core:
    16643b03227466e2c80a24c2d079fe36e89553c1
This commit import "-Og" option to "DEBUG_OPTIMIZATION", result in this error.

Actually, the warning was misinformation. We explore the code in libbpf.c:
    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/lib/bpf/libbpf.c#n640
--------------------------------------------------------------------------
	if (scn)
		data = elf_getdata(scn, NULL);
	if (!scn || !data) {
		pr_warning("failed to get Elf_Data from map section %d\n",
			   obj->efile.maps_shndx);
		return -EINVAL;
	}
	......
	using data...
	......
--------------------------------------------------------------------------
If the 'scn' was not null, the data will be initialized. if the data was null,
the function will return -EINVAL, so the data must be not null, but compiler
can't see it in 'if' code block, so treat it as 'maybe-uninitialized'.

(From OE-Core rev: 0eb4048bc5865579327f5a88086e3e3241b012cb)

Signed-off-by: Dengke Du <dengke.du@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-04-12 09:29:06 +01:00
Bruce Ashfield
29500c42b4 perf: synchronize unistd.h between libc-headers and perf source
During the build for some architectures, perf generates a program
which executes on the host to dump the syscall table.

The generation of that program uses the cross compiler + sysroot
to expand unistd.h. As such, we are getting the contents of that
file from linux-libc-headers.

The compilation of that generated program uses the host compiler
and a restricted include path to the perf source code. In the
perf source there is a captured unistd.h, as such it will be used
when compiling the host executable. The perf source code is copied
from the kernel version that is being built .. so we have a
mismatch between the generation and the compilation of the host
program.

Normally this mismatch is fine, but if the libc-headers are
newer than the kernel, we'll have syscalls (and their syscall
numbers) that are not defined in the perf source code. This
leads to a compiler error and a cascading failure of the perf
build due to a missing generated file.

To fix this, we can copy unistd.h from the recipe-sysroot
into the perf source code and they will always be in sync.

(From OE-Core rev: 3a23e094c4189af878e467f1636aea63955e250d)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-03-09 14:43:11 +00:00