[OE-core] [PATCH v2] perf: change dependencies on python to python3

Bruce Ashfield bruce.ashfield at gmail.com
Thu Aug 29 03:20:34 UTC 2019


On Wed, Aug 28, 2019 at 10:14 PM <bruce.ashfield at gmail.com> wrote:
>
> From: Bruce Ashfield <bruce.ashfield at gmail.com>
>
> 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]
>
> Signed-off-by: Bruce Ashfield <bruce.ashfield at gmail.com>
> ---
>
> v2:
>   - tested against 4.19, 5.0 and 5.2+
>   - broadened search path for scripts
>   - added /usr/bin/python to the fixup list

Also, if a meta-python2 is created, we can do a perf variant that
depends on python2 so older kernels (that can't be patched) can still
use perf scripting if they want. But I'm betting the number of
users/kernels is quite small, so it may just be better as an "on
demand" thing.

Cheers,

Bruce

>
>  meta/recipes-kernel/perf/perf.bb | 19 +++++++++++--------
>  1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
> index 4e603f1a32..af0410c88d 100644
> --- a/meta/recipes-kernel/perf/perf.bb
> +++ b/meta/recipes-kernel/perf/perf.bb
> @@ -13,7 +13,7 @@ PR = "r9"
>
>  PACKAGECONFIG ??= "scripting tui libunwind"
>  PACKAGECONFIG[dwarf] = ",NO_DWARF=1"
> -PACKAGECONFIG[scripting] = ",NO_LIBPERL=1 NO_LIBPYTHON=1,perl python"
> +PACKAGECONFIG[scripting] = ",NO_LIBPERL=1 NO_LIBPYTHON=1,perl python3"
>  # gui support was added with kernel 3.6.35
>  # since 3.10 libnewt was replaced by slang
>  # to cover a wide range of kernel we add both dependencies
> @@ -44,8 +44,8 @@ PROVIDES = "virtual/perf"
>  inherit linux-kernel-base kernel-arch manpages
>
>  # needed for building the tools/perf Python bindings
> -inherit ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'pythonnative', '', d)}
> -inherit python-dir
> +inherit ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'python3native', '', d)}
> +inherit python3-dir
>  export PYTHON_SITEPACKAGES_DIR
>
>  #kernel 3.1+ supports WERROR to disable warnings as errors
> @@ -94,6 +94,7 @@ EXTRA_OEMAKE += "\
>      'sharedir=${@os.path.relpath(datadir, prefix)}' \
>      'mandir=${@os.path.relpath(mandir, prefix)}' \
>      'infodir=${@os.path.relpath(infodir, prefix)}' \
> +    ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'PYTHON=python3 PYTHON_CONFIG=python3-config', '', d)} \
>  "
>
>  # During do_configure, we might run a 'make clean'. That often breaks
> @@ -132,7 +133,7 @@ do_install() {
>         oe_runmake install
>         # we are checking for this make target to be compatible with older perf versions
>         if ${@bb.utils.contains('PACKAGECONFIG', 'scripting', 'true', 'false', d)} && grep -q install-python_ext ${S}/tools/perf/Makefile*; then
> -               oe_runmake DESTDIR=${D} install-python_ext
> +           oe_runmake DESTDIR=${D} install-python_ext
>         fi
>  }
>
> @@ -232,8 +233,10 @@ do_configure_prepend () {
>      fi
>
>      # use /usr/bin/env instead of version specific python
> -    for s in `find ${S}/tools/perf/scripts/python/ -name '*.py'`; do
> -        sed -i 's,/usr/bin/python2,/usr/bin/env python,' "${s}"
> +    for s in `find ${S}/tools/perf/ -name '*.py'`; do
> +        sed -i 's,/usr/bin/python,/usr/bin/env python3,' "${s}"
> +        sed -i 's,/usr/bin/python2,/usr/bin/env python3,' "${s}"
> +        sed -i 's,/usr/bin/env python2,/usr/bin/env python3,' "${s}"
>      done
>
>      # unistd.h can be out of sync between libc-headers and the captured version in the perf source
> @@ -252,9 +255,9 @@ PACKAGES =+ "${PN}-archive ${PN}-tests ${PN}-perl ${PN}-python"
>
>  RDEPENDS_${PN} += "elfutils bash"
>  RDEPENDS_${PN}-archive =+ "bash"
> -RDEPENDS_${PN}-python =+ "bash python python-modules ${@bb.utils.contains('PACKAGECONFIG', 'audit', 'audit-python', '', d)}"
> +RDEPENDS_${PN}-python =+ "bash python3 python3-modules ${@bb.utils.contains('PACKAGECONFIG', 'audit', 'audit-python3', '', d)}"
>  RDEPENDS_${PN}-perl =+ "bash perl perl-modules"
> -RDEPENDS_${PN}-tests =+ "python"
> +RDEPENDS_${PN}-tests =+ "python3"
>
>  RSUGGESTS_SCRIPTING = "${@bb.utils.contains('PACKAGECONFIG', 'scripting', '${PN}-perl ${PN}-python', '',d)}"
>  RSUGGESTS_${PN} += "${PN}-archive ${PN}-tests ${RSUGGESTS_SCRIPTING}"
> --
> 2.19.1
>


-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


More information about the Openembedded-core mailing list