[OE-core] [PATCH 1/2] perf: use PACKAGECONFIG instead of hand-rolled logic

Bruce Ashfield bruce.ashfield at windriver.com
Mon Jan 16 14:18:16 UTC 2017


On 2017-01-16 8:44 AM, Ross Burton wrote:
> PERF_FEATURES_ENABLE and perf_feature_enabled() was basically a poor man's clone
> of PACKAGECONFIG, without the automatic handling of dependencies and configure
> options.

I think some of the parts pre-dated packageconfig capabilities, but
yah, something that needed to get tossed in the bin.

>
> As part of the port to PACKAGECONFIG the options have been changed to remove the
> perf- prefix, but are otherwise unchanged.
>
> Also remove BUILDPERF_libc_uclibc assignment as nothing in the metadata uses a
> BUILDPERF variable.

I applied the patches here, and was able to build a perf in my standard
config.

Acked-by: Bruce Ashfield <bruce.ashfield at windriver.com>

Bruce

>
> Signed-off-by: Ross Burton <ross.burton at intel.com>
> ---
>  meta/recipes-kernel/perf/perf-features.inc | 22 ----------------------
>  meta/recipes-kernel/perf/perf.bb           | 26 +++++++++-----------------
>  2 files changed, 9 insertions(+), 39 deletions(-)
>  delete mode 100644 meta/recipes-kernel/perf/perf-features.inc
>
> diff --git a/meta/recipes-kernel/perf/perf-features.inc b/meta/recipes-kernel/perf/perf-features.inc
> deleted file mode 100644
> index a4402cc..0000000
> --- a/meta/recipes-kernel/perf/perf-features.inc
> +++ /dev/null
> @@ -1,22 +0,0 @@
> -PERF_FEATURES_ENABLE ?= "perf-scripting perf-tui"
> -
> -def perf_feature_enabled(feature, trueval, falseval, d):
> -    """
> -    Check which perf features are enabled.
> -
> -    The PERF_FEATURES_ENABLE variable lists the perf features to
> -    enable.  Override it if you want something different from what's
> -    listed above, which is the default.  If empty, the build won't
> -    enable any features (which may be exactly what you want, just a
> -    barebones perf without any extra baggage, what you get if you
> -    specify an empty feature list).
> -
> -    Available perf features:
> -      perf-scripting: enable support for Perl and Python bindings
> -      perf-tui: enable support for the perf TUI (via libnewt)
> -
> -    """
> -    enabled_features = d.getVar("PERF_FEATURES_ENABLE") or ""
> -    if feature in enabled_features:
> -        return trueval
> -    return falseval
> diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb
> index cfbe628..8b5028e 100644
> --- a/meta/recipes-kernel/perf/perf.bb
> +++ b/meta/recipes-kernel/perf/perf.bb
> @@ -10,24 +10,21 @@ LICENSE = "GPLv2"
>
>  PR = "r9"
>
> -require perf-features.inc
> -
>  BUILDPERF_libc-uclibc = "no"
>
> +PACKAGECONFIG ??= "scripting tui"
> +PACKAGECONFIG[scripting] = ",NO_LIBPERL=1 NO_LIBPYTHON=1,perl python"
>  # 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
> -TUI_DEPENDS = "${@perf_feature_enabled('perf-tui', 'libnewt slang', '',d)}"
> -SCRIPTING_DEPENDS = "${@perf_feature_enabled('perf-scripting', 'perl python', '',d)}"
> -LIBUNWIND_DEPENDS = "${@perf_feature_enabled('perf-libunwind', 'libunwind', '',d)}"
> +PACKAGECONFIG[tui] = ",NO_NEWT=1,libnewt slang"
> +PACKAGECONFIG[libunwind] = ",NO_LIBUNWIND=1 NO_LIBDW_DWARF_UNWIND=1,libunwind"
> +PACKAGECONFIG[libnuma] = ",NO_LIBNUMA=1"
>
>  DEPENDS = " \
>      virtual/${MLPREFIX}libc \
>      ${MLPREFIX}elfutils \
>      ${MLPREFIX}binutils \
> -    ${TUI_DEPENDS} \
> -    ${SCRIPTING_DEPENDS} \
> -    ${LIBUNWIND_DEPENDS} \
>      bison flex xz \
>      xmlto-native \
>      asciidoc-native \
> @@ -61,11 +58,6 @@ inherit kernelsrc
>  B = "${WORKDIR}/${BPN}-${PV}"
>  SPDX_S = "${S}/tools/perf"
>
> -SCRIPTING_DEFINES = "${@perf_feature_enabled('perf-scripting', '', 'NO_LIBPERL=1 NO_LIBPYTHON=1',d)}"
> -TUI_DEFINES = "${@perf_feature_enabled('perf-tui', '', 'NO_NEWT=1',d)}"
> -LIBUNWIND_DEFINES = "${@perf_feature_enabled('perf-libunwind', '', 'NO_LIBUNWIND=1 NO_LIBDW_DWARF_UNWIND=1',d)}"
> -LIBNUMA_DEFINES = "${@perf_feature_enabled('perf-libnuma', '', 'NO_LIBNUMA=1',d)}"
> -
>  # The LDFLAGS is required or some old kernels fails due missing
>  # symbols and this is preferred than requiring patches to every old
>  # supported kernel.
> @@ -82,8 +74,8 @@ EXTRA_OEMAKE = '\
>      EXTRA_CFLAGS="-ldw" \
>      EXTRA_LDFLAGS="${PERF_EXTRA_LDFLAGS}" \
>      perfexecdir=${libexecdir} \
> -    NO_GTK2=1 ${TUI_DEFINES} NO_DWARF=1 ${LIBUNWIND_DEFINES} \
> -    ${SCRIPTING_DEFINES} ${LIBNUMA_DEFINES} \
> +    NO_GTK2=1 NO_DWARF=1 \
> +    ${PACKAGECONFIG_CONFARGS} \
>  '
>
>  EXTRA_OEMAKE += "\
> @@ -116,7 +108,7 @@ do_install() {
>  	unset CFLAGS
>  	oe_runmake install
>  	# we are checking for this make target to be compatible with older perf versions
> -	if [ "${@perf_feature_enabled('perf-scripting', 1, 0, d)}" = "1" ] && grep -q install-python_ext ${S}/tools/perf/Makefile*; then
> +	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
>  	fi
>  }
> @@ -225,7 +217,7 @@ RDEPENDS_${PN}-python =+ "bash python python-modules"
>  RDEPENDS_${PN}-perl =+ "bash perl perl-modules"
>  RDEPENDS_${PN}-tests =+ "python"
>
> -RSUGGESTS_SCRIPTING = "${@perf_feature_enabled('perf-scripting', '${PN}-perl ${PN}-python', '',d)}"
> +RSUGGESTS_SCRIPTING = "${@bb.utils.contains('PACKAGECONFIG', 'scripting', '${PN}-perl ${PN}-python', '',d)}"
>  RSUGGESTS_${PN} += "${PN}-archive ${PN}-tests ${RSUGGESTS_SCRIPTING}"
>
>  #FILES_${PN} += "${libexecdir}/perf-core ${exec_prefix}/libexec/perf-core /usr/lib64/traceevent ${libdir}/traceevent"
>




More information about the Openembedded-core mailing list