diff mbox series

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

Message ID 1484574253-30817-1-git-send-email-ross.burton@intel.com
State Accepted
Commit 33d05772c30036e8d2bb2dc8928989bf98d388f1
Headers show
Series [1/2] perf: use PACKAGECONFIG instead of hand-rolled logic | expand

Commit Message

Ross Burton Jan. 16, 2017, 1:44 p.m. UTC
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.

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.

Signed-off-by: Ross Burton <ross.burton@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

-- 
2.8.1

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Comments

Bruce Ashfield Jan. 16, 2017, 2:18 p.m. UTC | #1
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@windriver.com>


Bruce

>

> Signed-off-by: Ross Burton <ross.burton@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"

>


-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
diff mbox series

Patch

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"