[3/3] pcp: Added a new recipe which provides dstat command.

Message ID 1641576297-3341-4-git-send-email-leimaohui@fujitsu.com
State New
Headers show
Series Updated dstat command | expand

Commit Message

Maohui Lei (Fujitsu) Jan. 7, 2022, 5:24 p.m. UTC
Performance Co-Pilot is a system performance analysis toolkit
 - Collect performance metrics from your systems efficiently.
 - Analyze systems' performance metrics in real-time or using historical data.
 - Extend the collected performance metrics in a simple way.

Signed-off-by: Lei Maohui <leimaohui@fujitsu.com>
---
 .../recipes-support/pcp/pcp-native_5.3.5.bb   |  49 ++++
 meta-oe/recipes-support/pcp/pcp.inc           |  32 +++
 ...ove-unsuitble-part-for-cross-compile.patch |  45 ++++
 meta-oe/recipes-support/pcp/pcp/config.linux  |  13 ++
 meta-oe/recipes-support/pcp/pcp_5.3.5.bb      | 217 ++++++++++++++++++
 5 files changed, 356 insertions(+)
 create mode 100644 meta-oe/recipes-support/pcp/pcp-native_5.3.5.bb
 create mode 100644 meta-oe/recipes-support/pcp/pcp.inc
 create mode 100644 meta-oe/recipes-support/pcp/pcp/0001-Remove-unsuitble-part-for-cross-compile.patch
 create mode 100644 meta-oe/recipes-support/pcp/pcp/config.linux
 create mode 100644 meta-oe/recipes-support/pcp/pcp_5.3.5.bb

Comments

Khem Raj Jan. 10, 2022, 6:46 a.m. UTC | #1
this needs some packaging fixes see

https://errors.yoctoproject.org/Errors/Details/621867/

ERROR: QA Issue: pcp: Files/directories were installed but not shipped
in any package:
  /etc/cron.d
  /etc/init.d
  /etc/cron.d/pcp-pmfind
  /etc/cron.d/pcp-pmie
  /etc/cron.d/pcp-pmlogger
  /etc/cron.d/pcp-pmlogger-daily-report
  /etc/init.d/pmcd
  /etc/init.d/pmproxy
  /etc/init.d/pmie
  /etc/init.d/pmlogger
  /etc/init.d/pcp
Please set FILES such that these items are packaged. Alternatively if
they are unneeded, avoid installing them or dele

On Fri, Jan 7, 2022 at 12:25 AM leimaohui <leimaohui@fujitsu.com> wrote:
>
> Performance Co-Pilot is a system performance analysis toolkit
>  - Collect performance metrics from your systems efficiently.
>  - Analyze systems' performance metrics in real-time or using historical data.
>  - Extend the collected performance metrics in a simple way.
>
> Signed-off-by: Lei Maohui <leimaohui@fujitsu.com>
> ---
>  .../recipes-support/pcp/pcp-native_5.3.5.bb   |  49 ++++
>  meta-oe/recipes-support/pcp/pcp.inc           |  32 +++
>  ...ove-unsuitble-part-for-cross-compile.patch |  45 ++++
>  meta-oe/recipes-support/pcp/pcp/config.linux  |  13 ++
>  meta-oe/recipes-support/pcp/pcp_5.3.5.bb      | 217 ++++++++++++++++++
>  5 files changed, 356 insertions(+)
>  create mode 100644 meta-oe/recipes-support/pcp/pcp-native_5.3.5.bb
>  create mode 100644 meta-oe/recipes-support/pcp/pcp.inc
>  create mode 100644 meta-oe/recipes-support/pcp/pcp/0001-Remove-unsuitble-part-for-cross-compile.patch
>  create mode 100644 meta-oe/recipes-support/pcp/pcp/config.linux
>  create mode 100644 meta-oe/recipes-support/pcp/pcp_5.3.5.bb
>
> diff --git a/meta-oe/recipes-support/pcp/pcp-native_5.3.5.bb b/meta-oe/recipes-support/pcp/pcp-native_5.3.5.bb
> new file mode 100644
> index 0000000000..029a47531b
> --- /dev/null
> +++ b/meta-oe/recipes-support/pcp/pcp-native_5.3.5.bb
> @@ -0,0 +1,49 @@
> +require pcp.inc
> +inherit python3native native
> +#autotools-brokensep
> +DEPENDS = "python3-native python3-setuptools-native flex-native bison-native"
> +
> +export PCP_DIR = "${D}"
> +export PCP_TMP_DIR = "${D}/tmp"
> +export PCP_BIN_DIR = "${D}/usr/bin"
> +
> +B = "${S}"
> +
> +do_configure:prepend() {
> +    export SED=${TMPDIR}/hosttools/sed
> +    export AR=${TMPDIR}/hosttools/ar
> +#    export PYTHON=python3
> +
> +    rm -rf ${S}/include/pcp/configsz.h
> +    rm -rf ${S}/include/pcp/platformsz.h
> +
> +}
> +do_compile:prepend() {
> +    sed -i -e "s,#undef HAVE_64BIT_LONG,,g" \
> +           -e "s,#undef HAVE_64BIT_PTR,,g" \
> +           -e "s,#undef PM_SIZEOF_SUSECONDS_T,,g" \
> +           -e "s,#undef PM_SIZEOF_TIME_T,,g" \
> +           ${S}/src/include/pcp/config.h.in
> +
> +    export AR=${TMPDIR}/hosttools/ar
> +#    export PYTHON=python3
> +}
> +
> +do_compile() {
> +        oe_runmake default_pcp
> +}
> +
> +do_install () {
> +    oe_runmake install \
> +    PCP_ETC_DIR=${D}/${sysconfdir} \
> +    PCP_SYSCONF_DIR=${D}/${sysconfdir} \
> +    PCP_VAR_DIR=${D}/${localstatedir} \
> +    PCP_SHARE_DIR=${D}/${datadir} \
> +    PCP_BIN_DIR=${D}/${bindir} \
> +    PCP_BINADM_DIR=${D}/${libexecdir}/pcp/bin \
> +    PCP_LIBADM_DIR=${D}/${libdir} \
> +    PCP_LIB_DIR=${D}/${libdir} \
> +    PCP_MAN_DIR=${D}/${mandir} \
> +    PCP_DOC_DIR=${D}/${docdir}
> +}
> +
> diff --git a/meta-oe/recipes-support/pcp/pcp.inc b/meta-oe/recipes-support/pcp/pcp.inc
> new file mode 100644
> index 0000000000..f6f111b0e8
> --- /dev/null
> +++ b/meta-oe/recipes-support/pcp/pcp.inc
> @@ -0,0 +1,32 @@
> +SUMMARY = "System-level performance monitoring and performance management"
> +HOMEPAGE = "http://www.pcp.io"
> +SECTION =  "Applications/System"
> +
> +LICENSE = "GPLv2+ & LGPLv2.1"
> +LIC_FILES_CHKSUM = "file://COPYING;md5=37ab75b580d5aad4ada04260efa3702f \
> +                    "
> +COMPATIBLE_HOST:libc-musl = "null"
> +
> +SRC_URI = "https://performancecopilot.jfrog.io/artifactory/pcp-source-release/pcp-5.3.5.src.tar.gz \
> +          file://config.linux \
> +          "
> +
> +SRC_URI[sha256sum] = "589a610f753a49af6d2015cede87e9d469bd07880ebef26fe1607b6ded375e97"
> +
> +inherit distutils3-base pkgconfig autotools
> +
> +B = "${S}"
> +
> +# Specify any options you want to pass to the configure script using EXTRA_OECONF:
> +CACHED_CONFIGUREVARS = "PACKAGE_DISTRIBUTION=arch"
> +EXTRA_OECONF:append = " --with-dstat-symlink=yes --with-infiniband=no \
> +                --with-pmdapodman=no --with-python=no --with-python3=yes --with-perl=no \
> +               --with-pmdabcc=no --with-pmdajson=no  --with-perfevent=no \
> +               --with-pmdabcc=yes \
> +               --with-rundir=${localstatedir}/run \
> +                --with-sysconfigdir=${sysconfdir} \
> +                --with-logdir=${localstatedir}/log \
> +                --with-docdir=${docdir} \
> +                "
> +
> +
> diff --git a/meta-oe/recipes-support/pcp/pcp/0001-Remove-unsuitble-part-for-cross-compile.patch b/meta-oe/recipes-support/pcp/pcp/0001-Remove-unsuitble-part-for-cross-compile.patch
> new file mode 100644
> index 0000000000..292499850e
> --- /dev/null
> +++ b/meta-oe/recipes-support/pcp/pcp/0001-Remove-unsuitble-part-for-cross-compile.patch
> @@ -0,0 +1,45 @@
> +From db9e6a4b7a48dee62fccb662347dd638a2d286d5 Mon Sep 17 00:00:00 2001
> +From: Lei Maohui <leimaohui@fujitsu.com>
> +Date: Thu, 2 Dec 2021 14:29:06 +0900
> +Subject: [PATCH] Remove unsuitble part for cross-compile.
> +
> +Upstream-Status: Inappropriate [OE specific]
> +
> +Signed-off-by: Lei Maohui <leimaohui@fujitsu.com>
> +---
> + configure.ac               | 6 ------
> + src/libpcp/src/GNUmakefile | 1 -
> + 2 files changed, 7 deletions(-)
> +
> +diff --git a/configure.ac b/configure.ac
> +index 5b25382..5d24714 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -623,12 +623,6 @@ fi
> + which=$WHICH
> + AC_SUBST(which)
> +
> +-if test -z "$AR"; then
> +-    AC_PATH_PROGS(AR, [gcc-ar ar], /usr/bin/ar)
> +-fi
> +-if test ! -x "$AR"; then
> +-    AC_MSG_ERROR([cannot find a valid 'ar' command.])
> +-fi
> + ar=$AR
> + AC_SUBST(ar)
> +
> +diff --git a/src/libpcp/src/GNUmakefile b/src/libpcp/src/GNUmakefile
> +index 3c4ccd6..d1eba19 100644
> +--- a/src/libpcp/src/GNUmakefile
> ++++ b/src/libpcp/src/GNUmakefile
> +@@ -176,7 +176,6 @@ exports:   exports.in mk.exports
> + # cases
> + #
> + check.done:   $(OBJECTS)
> +-      ./check-statics
> +       touch check.done
> +
> + ifneq ($(LIBTARGET),)
> +--
> +2.25.1
> +
> diff --git a/meta-oe/recipes-support/pcp/pcp/config.linux b/meta-oe/recipes-support/pcp/pcp/config.linux
> new file mode 100644
> index 0000000000..191f87acc6
> --- /dev/null
> +++ b/meta-oe/recipes-support/pcp/pcp/config.linux
> @@ -0,0 +1,13 @@
> +sizeof_int=4
> +sizeof_long=4
> +sizeof_pointer=8
> +sizeof_suseconds_t=8
> +sizeof_time_t=8
> +bit_field_scheme=2100
> +enable_python3='yes'
> +enable_python3='true'
> +have_python_OrderedDict="true"
> +have_python=python3
> +printf_p_prefix=0x
> +printf_fmt_int64=I64d
> +strtoint64=strtoll
> diff --git a/meta-oe/recipes-support/pcp/pcp_5.3.5.bb b/meta-oe/recipes-support/pcp/pcp_5.3.5.bb
> new file mode 100644
> index 0000000000..e6c139e1d3
> --- /dev/null
> +++ b/meta-oe/recipes-support/pcp/pcp_5.3.5.bb
> @@ -0,0 +1,217 @@
> +require pcp.inc
> +#inherit perlnative
> +
> +# NOTE: the following prog dependencies are unknown, ignoring: gtar gzip pkgmk xmlto lzma qshape md5sum pod2man publican git makedepend qmake-qt4 xconfirm true gmake xz dblatex hdiutil rpm bzip2 which mkinstallp dtrace seinfo qmake-qt5 gawk dlltool rpmbuild dpkg makepkg qmake echo
> +# NOTE: unable to map the following pkg-config dependencies: libmicrohttpd libsystemd-journal
> +#       (this is based on recipes that have previously been built and packaged)
> +# NOTE: the following library dependencies are unknown, ignoring: nspr gen ibumad regex sasl2 pfm nss papi ibmad
> +#       (this is based on recipes that have previously been built and packaged)
> +DEPENDS += "perl-native bison-native flex-native python3-native python3-setuptools python3 \
> +       pcp-native cairo zlib ncurses readline libx11 avahi openssl"
> +
> +
> +SRC_URI += "file://0001-Remove-unsuitble-part-for-cross-compile.patch \
> +           "
> +
> +export PCP_DIR="${RECIPE_SYSROOT_NATIVE}"
> +#export PCP_RUN_DIR="${RECIPE_SYSROOT_NATIVE}"
> +EXTRA_OEMAKE = "CC="${CC}" LD="${LD}" AR="${AR}""
> +inherit useradd systemd
> +
> +SYSTEMD_AUTO_ENABLE:${PN} = "enable"
> +SYSTEMD_SERVICE:${PN} = "pmcd.service pmcd.service pmie_check.service pmie_farm_check.service \
> +                         pmlogger_daily.service pmlogger_farm_check.service pmfind.service \
> +                         pmie_daily.service  pmlogger.service pmlogger_daily_report.service \
> +                         pmproxy.service pmie.service pmie_farm.service pmlogger_check.service \
> +                         pmlogger_farm.service"
> +
> +USERADD_PACKAGES = "${PN}"
> +USERADD_PARAM:${PN} = "--system --home ${localstatedir}/lib/pcp --no-create-home \
> +                       --user-group pcp"
> +
> +USERADD_PACKAGES = "${PN}-testsuite"
> +USERADD_PARAM:${PN}-testsuite = "--system --home ${localstatedir}/lib/pcp/testsuite --no-create-home \
> +                       --user-group pcpqa"
> +
> +RDEPENDS:${PN} += "perl"
> +RDEPENDS:${PN}-testsuite += "${PN} bash perl"
> +RDEPENDS:python3-${PN} += "${PN} python3"
> +
> +do_configure:prepend () {
> +    cp ${WORKDIR}/config.linux ${B}
> +    rm -rf ${S}/include/pcp/configsz.h
> +    rm -rf ${S}/include/pcp/platformsz.h
> +    export SED=${TMPDIR}/hosttools/sed
> +    export PYTHON=python3
> +}
> +
> +do_compile:prepend() {
> +       sed -i -e "s,#undef HAVE_64BIT_LONG,,g" \
> +               -e "s,#undef HAVE_64BIT_PTR,,g" \
> +               -e "s,#undef PM_SIZEOF_SUSECONDS_T,,g" \
> +               -e "s,#undef PM_SIZEOF_TIME_T,,g" \
> +               ${S}/src/include/pcp/config.h.in
> +       sed -i -e "s,HAVE_PYTHON_ORDEREDDICT = false,HAVE_PYTHON_ORDEREDDICT = true,g" \
> +               ${S}/src/include/builddefs
> +       sed -i -e "s,TOPDIR)/python3-pcp.list,TOPDIR)/python3-pcp.list --install-lib=${PYTHON_SITEPACKAGES_DIR},g" ${S}/src/python/GNUmakefile
> +       export PYTHON=python3
> +       #export PYTHON3=${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN}
> +}
> +
> +do_compile() {
> +        oe_runmake default_pcp
> +}
> +
> +do_install () {
> +       export NO_CHOWN=true
> +       oe_runmake install DIST_ROOT=${D}\
> +       install_pcp
> +
> +       rm -rf ${D}${localstatedir}/log
> +       rm -rf ${D}${localstatedir}/lib/pcp/pmcd
> +       rm -rf ${D}${localstatedir}/lib/pcp/tmp
> +       rm -rf ${D}${localstatedir}/run
> +       mv ${D}${docdir}/C* ${D}${docdir}/pcp-doc/
> +       mv ${D}${docdir}/I* ${D}${docdir}/pcp-doc/
> +       mv ${D}${docdir}/R* ${D}${docdir}/pcp-doc/
> +       mv ${D}${docdir}/V* ${D}${docdir}/pcp-doc/
> +       sed -i "s#PCP_AWK_PROG=.*#PCP_AWK_PROG=awk#" ${D}/${sysconfdir}/pcp.conf
> +       sed -i "s#PCP_SORT_PROG=.*#PCP_SORT_PROG=sort#" ${D}/${sysconfdir}/pcp.conf
> +       sed -i "s#PCP_ECHO_PROG=.*#PCP_ECHO_PROG=echo#" ${D}/${sysconfdir}/pcp.conf
> +       sed -i "s#PCP_WHICH_PROG=.*#PCP_WHICH_PROG=which#" ${D}/${sysconfdir}/pcp.conf
> +}
> +
> +PACKAGES += " ${PN}-export-zabbix-agent ${PN}-testsuite \
> +       libpcp-gui2  libpcp-gui2-dev \
> +       libpcp-import1 \
> +       libpcp-mmv1 libpcp-mmv1-dev \
> +       libpcp-pmda3 libpcp-pmda3-dev \
> +       libpcp-trace2 libpcp-trace2-dev \
> +       libpcp-web1 libpcp-web1-dev \
> +       libpcp3 libpcp3-dev python3-${PN}\
> +"
> +FILES:libpcp-gui2 = "${libdir}/libpcp_gui.so.2 \
> +"
> +FILES:libpcp-gui2-dev = " \
> +       ${libdir}/libpcp_gui.so \
> +       ${libdir}/libpcp_gui.a \
> +       ${includedir}/pmafm.h \
> +       ${includedir}/pmtime.h \
> +"
> +FILES:libpcp-mmv1 = " \
> +       ${libdir}/libpcp_mmv.so.1 \
> +"
> +FILES:libpcp-mmv1-dev = " \
> +       ${libdir}/libpcp_mmv.a \
> +       ${libdir}/libpcp_mmv.so \
> +       ${libdir}/libpcp_mmv.so \
> +       ${includedir}/mmv_stats.h \
> +       ${includedir}/mmv_dev.h \
> +       ${datadir}/man/man3/mmv_* \
> +       ${datadir}/man/man5/mmv.5.gz \
> +"
> +FILES:libpcp-import1 = " \
> +       ${libdir}/libpcp_import.so.1 \
> +"
> +FILES:libpcp-pmda3 = " \
> +       ${libdir}/libpcp_pmda.so.3 \
> +"
> +FILES:libpcp-pmda3-dev = " \
> +       ${includedir}/pmda.h \
> +       ${includedir}/pmdaroot.h \
> +       ${libdir}/libpcp_pmda.a \
> +       ${libdir}/libpcp_pmda.so \
> +       ${libdir}/pkgconfig/libpcp_pmda.pc \
> +       ${datadir}/man/man3/PMDA.3.gz \
> +       ${datadir}/man/man3/pmda* \
> +"
> +FILES:libpcp-trace2 = " \
> +       ${libdir}/libpcp_trace.so.2 \
> +"
> +FILES:libpcp-trace2-dev = " \
> +       ${includedir}/trace.h \
> +       ${includedir}/trace_dev.h \
> +       ${libdir}/libpcp_trace.a \
> +       ${libdir}/libpcp_trace.so \
> +       ${datadir}/man/man3/pmtrace* \
> +"
> +FILES:libpcp-web1 = " \
> +       ${libdir}/libpcp_web.so.1 \
> +"
> +FILES:libpcp-web1-dev = " \
> +       ${includedir}/pmhttp.h \
> +       ${includedir}/pmjson.h \
> +       ${libdir}/libpcp_web.a \
> +       ${libdir}/libpcp_web.so \
> +       ${datadir}/man/man3/pmhttp* \
> +       ${datadir}/man/man3/pmjson* \
> +"
> +FILES:libpcp3 = " \
> +       ${libdir}/libpcp.so.3 \
> +"
> +
> +FILES:${PN} = " \
> +       ${sysconfdir}/pcp \
> +       ${libexecdir} \
> +       ${bindir} \
> +       ${datadir}/bash-completion \
> +       ${datadir}/pcp-gui \
> +       ${datadir}/zsh \
> +       ${systemd_system_unitdir}/ \
> +       ${libdir}/pcp/ \
> +       ${datadir}/pcp \
> +       ${libdir}/*.sh \
> +       ${datadir}/man \
> +       ${libdir}/rc-proc.sh.minimal \
> +       ${sysconfdir}/p* \
> +       ${sysconfdir}/s* \
> +       ${localstatedir}/lib/pcp/config \
> +       ${localstatedir}/lib/pcp/pmdas/ \
> +       ${localstatedir}/lib/pcp/pmns \
> +       ${libdir}/libpcp_fault.so.3 \
> +"
> +
> +FILES:${PN}-export-zabbix-agent += " \
> +       ${libdir}/zabbix \
> +       ${sysconfdir}/zabbix \
> +       ${mandir}/man3/zbxpcp.3.gz \
> +       ${libdir}/zabbix \
> +"
> +FILES:${PN}-testsuite = "${localstatedir}/lib/pcp/testsuite/"
> +FILES:python3-${PN} = "${PYTHON_SITEPACKAGES_DIR}"
> +FILES:${PN}-dev += " \
> +        ${includedir}/pcp \
> +        ${libdir}/libpcp.a \
> +        ${libdir}/libpcp.so \
> +        ${localstatedir}/lib/pcp/pmdas/*/*.so \
> +        ${libexecdir}/pcp/bin/install-sh \
> +        ${libdir}/pkgconfig/libpcp.pc \
> +        ${libdir}/zabbix/modules/*.so \
> +        ${datadir}/man/man3/LOGIMPORT.3.gz \
> +        ${datadir}/man/man3/P* \
> +        ${datadir}/man/man3/Q* \
> +        ${datadir}/man/man3/__pm* \
> +        ${datadir}/man/man3/pmA* \
> +        ${datadir}/man/man3/pmC* \
> +        ${datadir}/man/man3/pmD* \
> +        ${datadir}/man/man3/pmE* \
> +        ${datadir}/man/man3/pmF* \
> +        ${datadir}/man/man3/pmG* \
> +        ${datadir}/man/man3/pmH* \
> +        ${datadir}/man/man3/pmI* \
> +        ${datadir}/man/man3/pmL* \
> +        ${datadir}/man/man3/pmM* \
> +        ${datadir}/man/man3/pmN* \
> +        ${datadir}/man/man3/pmO* \
> +        ${datadir}/man/man3/pmP* \
> +        ${datadir}/man/man3/pmR* \
> +        ${datadir}/man/man3/pmS* \
> +        ${datadir}/man/man3/pmT* \
> +        ${datadir}/man/man3/pmU* \
> +        ${datadir}/man/man3/pmW* \
> +        ${datadir}/man/man3/pmf* \
> +        ${datadir}/man/man3/pmg* \
> +        ${datadir}/man/man3/pmi* \
> +        ${datadir}/man/man3/pms* \
> +        ${datadir}/man/man3/pmt* \
> +"
> --
> 2.25.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#94679): https://lists.openembedded.org/g/openembedded-devel/message/94679
> Mute This Topic: https://lists.openembedded.org/mt/88257328/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>

Patch

diff --git a/meta-oe/recipes-support/pcp/pcp-native_5.3.5.bb b/meta-oe/recipes-support/pcp/pcp-native_5.3.5.bb
new file mode 100644
index 0000000000..029a47531b
--- /dev/null
+++ b/meta-oe/recipes-support/pcp/pcp-native_5.3.5.bb
@@ -0,0 +1,49 @@ 
+require pcp.inc
+inherit python3native native 
+#autotools-brokensep 
+DEPENDS = "python3-native python3-setuptools-native flex-native bison-native"
+
+export PCP_DIR = "${D}"
+export PCP_TMP_DIR = "${D}/tmp"
+export PCP_BIN_DIR = "${D}/usr/bin"
+
+B = "${S}"
+
+do_configure:prepend() {
+    export SED=${TMPDIR}/hosttools/sed
+    export AR=${TMPDIR}/hosttools/ar
+#    export PYTHON=python3
+    
+    rm -rf ${S}/include/pcp/configsz.h
+    rm -rf ${S}/include/pcp/platformsz.h
+
+}
+do_compile:prepend() {
+    sed -i -e "s,#undef HAVE_64BIT_LONG,,g" \
+           -e "s,#undef HAVE_64BIT_PTR,,g" \
+           -e "s,#undef PM_SIZEOF_SUSECONDS_T,,g" \
+           -e "s,#undef PM_SIZEOF_TIME_T,,g" \
+           ${S}/src/include/pcp/config.h.in
+
+    export AR=${TMPDIR}/hosttools/ar
+#    export PYTHON=python3
+}
+
+do_compile() {
+        oe_runmake default_pcp
+}
+
+do_install () {
+    oe_runmake install \
+    PCP_ETC_DIR=${D}/${sysconfdir} \
+    PCP_SYSCONF_DIR=${D}/${sysconfdir} \
+    PCP_VAR_DIR=${D}/${localstatedir} \
+    PCP_SHARE_DIR=${D}/${datadir} \
+    PCP_BIN_DIR=${D}/${bindir} \
+    PCP_BINADM_DIR=${D}/${libexecdir}/pcp/bin \
+    PCP_LIBADM_DIR=${D}/${libdir} \
+    PCP_LIB_DIR=${D}/${libdir} \
+    PCP_MAN_DIR=${D}/${mandir} \
+    PCP_DOC_DIR=${D}/${docdir} 
+}
+
diff --git a/meta-oe/recipes-support/pcp/pcp.inc b/meta-oe/recipes-support/pcp/pcp.inc
new file mode 100644
index 0000000000..f6f111b0e8
--- /dev/null
+++ b/meta-oe/recipes-support/pcp/pcp.inc
@@ -0,0 +1,32 @@ 
+SUMMARY = "System-level performance monitoring and performance management"
+HOMEPAGE = "http://www.pcp.io"
+SECTION =  "Applications/System"
+
+LICENSE = "GPLv2+ & LGPLv2.1"
+LIC_FILES_CHKSUM = "file://COPYING;md5=37ab75b580d5aad4ada04260efa3702f \
+                    "
+COMPATIBLE_HOST:libc-musl = "null"
+
+SRC_URI = "https://performancecopilot.jfrog.io/artifactory/pcp-source-release/pcp-5.3.5.src.tar.gz \
+	   file://config.linux \
+	   "
+
+SRC_URI[sha256sum] = "589a610f753a49af6d2015cede87e9d469bd07880ebef26fe1607b6ded375e97"
+
+inherit distutils3-base pkgconfig autotools
+
+B = "${S}"
+
+# Specify any options you want to pass to the configure script using EXTRA_OECONF:
+CACHED_CONFIGUREVARS = "PACKAGE_DISTRIBUTION=arch"
+EXTRA_OECONF:append = " --with-dstat-symlink=yes --with-infiniband=no \
+                --with-pmdapodman=no --with-python=no --with-python3=yes --with-perl=no \
+		--with-pmdabcc=no --with-pmdajson=no  --with-perfevent=no \
+		--with-pmdabcc=yes \
+		--with-rundir=${localstatedir}/run \
+                --with-sysconfigdir=${sysconfdir} \
+                --with-logdir=${localstatedir}/log \
+                --with-docdir=${docdir} \
+                "
+
+
diff --git a/meta-oe/recipes-support/pcp/pcp/0001-Remove-unsuitble-part-for-cross-compile.patch b/meta-oe/recipes-support/pcp/pcp/0001-Remove-unsuitble-part-for-cross-compile.patch
new file mode 100644
index 0000000000..292499850e
--- /dev/null
+++ b/meta-oe/recipes-support/pcp/pcp/0001-Remove-unsuitble-part-for-cross-compile.patch
@@ -0,0 +1,45 @@ 
+From db9e6a4b7a48dee62fccb662347dd638a2d286d5 Mon Sep 17 00:00:00 2001
+From: Lei Maohui <leimaohui@fujitsu.com>
+Date: Thu, 2 Dec 2021 14:29:06 +0900
+Subject: [PATCH] Remove unsuitble part for cross-compile.
+
+Upstream-Status: Inappropriate [OE specific]
+
+Signed-off-by: Lei Maohui <leimaohui@fujitsu.com>
+---
+ configure.ac               | 6 ------
+ src/libpcp/src/GNUmakefile | 1 -
+ 2 files changed, 7 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 5b25382..5d24714 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -623,12 +623,6 @@ fi
+ which=$WHICH
+ AC_SUBST(which)
+ 
+-if test -z "$AR"; then
+-    AC_PATH_PROGS(AR, [gcc-ar ar], /usr/bin/ar)
+-fi
+-if test ! -x "$AR"; then
+-    AC_MSG_ERROR([cannot find a valid 'ar' command.])
+-fi
+ ar=$AR
+ AC_SUBST(ar)
+ 
+diff --git a/src/libpcp/src/GNUmakefile b/src/libpcp/src/GNUmakefile
+index 3c4ccd6..d1eba19 100644
+--- a/src/libpcp/src/GNUmakefile
++++ b/src/libpcp/src/GNUmakefile
+@@ -176,7 +176,6 @@ exports:	exports.in mk.exports
+ # cases
+ #
+ check.done:	$(OBJECTS)
+-	./check-statics
+ 	touch check.done
+ 
+ ifneq ($(LIBTARGET),)
+-- 
+2.25.1
+
diff --git a/meta-oe/recipes-support/pcp/pcp/config.linux b/meta-oe/recipes-support/pcp/pcp/config.linux
new file mode 100644
index 0000000000..191f87acc6
--- /dev/null
+++ b/meta-oe/recipes-support/pcp/pcp/config.linux
@@ -0,0 +1,13 @@ 
+sizeof_int=4
+sizeof_long=4
+sizeof_pointer=8
+sizeof_suseconds_t=8
+sizeof_time_t=8
+bit_field_scheme=2100
+enable_python3='yes'
+enable_python3='true'
+have_python_OrderedDict="true"
+have_python=python3
+printf_p_prefix=0x
+printf_fmt_int64=I64d
+strtoint64=strtoll
diff --git a/meta-oe/recipes-support/pcp/pcp_5.3.5.bb b/meta-oe/recipes-support/pcp/pcp_5.3.5.bb
new file mode 100644
index 0000000000..e6c139e1d3
--- /dev/null
+++ b/meta-oe/recipes-support/pcp/pcp_5.3.5.bb
@@ -0,0 +1,217 @@ 
+require pcp.inc
+#inherit perlnative
+
+# NOTE: the following prog dependencies are unknown, ignoring: gtar gzip pkgmk xmlto lzma qshape md5sum pod2man publican git makedepend qmake-qt4 xconfirm true gmake xz dblatex hdiutil rpm bzip2 which mkinstallp dtrace seinfo qmake-qt5 gawk dlltool rpmbuild dpkg makepkg qmake echo
+# NOTE: unable to map the following pkg-config dependencies: libmicrohttpd libsystemd-journal
+#       (this is based on recipes that have previously been built and packaged)
+# NOTE: the following library dependencies are unknown, ignoring: nspr gen ibumad regex sasl2 pfm nss papi ibmad
+#       (this is based on recipes that have previously been built and packaged)
+DEPENDS += "perl-native bison-native flex-native python3-native python3-setuptools python3 \
+	pcp-native cairo zlib ncurses readline libx11 avahi openssl"
+
+
+SRC_URI += "file://0001-Remove-unsuitble-part-for-cross-compile.patch \
+           "
+
+export PCP_DIR="${RECIPE_SYSROOT_NATIVE}"
+#export PCP_RUN_DIR="${RECIPE_SYSROOT_NATIVE}"
+EXTRA_OEMAKE = "CC="${CC}" LD="${LD}" AR="${AR}""
+inherit useradd systemd 
+
+SYSTEMD_AUTO_ENABLE:${PN} = "enable"
+SYSTEMD_SERVICE:${PN} = "pmcd.service pmcd.service pmie_check.service pmie_farm_check.service \
+                         pmlogger_daily.service pmlogger_farm_check.service pmfind.service \
+                         pmie_daily.service  pmlogger.service pmlogger_daily_report.service \
+                         pmproxy.service pmie.service pmie_farm.service pmlogger_check.service \
+                         pmlogger_farm.service"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --home ${localstatedir}/lib/pcp --no-create-home \
+                       --user-group pcp"
+
+USERADD_PACKAGES = "${PN}-testsuite"
+USERADD_PARAM:${PN}-testsuite = "--system --home ${localstatedir}/lib/pcp/testsuite --no-create-home \
+                       --user-group pcpqa"
+
+RDEPENDS:${PN} += "perl"
+RDEPENDS:${PN}-testsuite += "${PN} bash perl"
+RDEPENDS:python3-${PN} += "${PN} python3"
+
+do_configure:prepend () {
+    cp ${WORKDIR}/config.linux ${B}
+    rm -rf ${S}/include/pcp/configsz.h
+    rm -rf ${S}/include/pcp/platformsz.h
+    export SED=${TMPDIR}/hosttools/sed
+    export PYTHON=python3
+}
+
+do_compile:prepend() {
+	sed -i -e "s,#undef HAVE_64BIT_LONG,,g" \
+		-e "s,#undef HAVE_64BIT_PTR,,g" \
+		-e "s,#undef PM_SIZEOF_SUSECONDS_T,,g" \
+		-e "s,#undef PM_SIZEOF_TIME_T,,g" \
+		${S}/src/include/pcp/config.h.in
+	sed -i -e "s,HAVE_PYTHON_ORDEREDDICT = false,HAVE_PYTHON_ORDEREDDICT = true,g" \
+		${S}/src/include/builddefs
+	sed -i -e "s,TOPDIR)/python3-pcp.list,TOPDIR)/python3-pcp.list --install-lib=${PYTHON_SITEPACKAGES_DIR},g" ${S}/src/python/GNUmakefile
+	export PYTHON=python3
+	#export PYTHON3=${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN}
+}
+
+do_compile() {
+        oe_runmake default_pcp 
+}
+
+do_install () {
+	export NO_CHOWN=true
+	oe_runmake install DIST_ROOT=${D}\
+	install_pcp
+
+	rm -rf ${D}${localstatedir}/log
+	rm -rf ${D}${localstatedir}/lib/pcp/pmcd
+	rm -rf ${D}${localstatedir}/lib/pcp/tmp
+	rm -rf ${D}${localstatedir}/run
+	mv ${D}${docdir}/C* ${D}${docdir}/pcp-doc/
+	mv ${D}${docdir}/I* ${D}${docdir}/pcp-doc/
+	mv ${D}${docdir}/R* ${D}${docdir}/pcp-doc/
+	mv ${D}${docdir}/V* ${D}${docdir}/pcp-doc/
+	sed -i "s#PCP_AWK_PROG=.*#PCP_AWK_PROG=awk#" ${D}/${sysconfdir}/pcp.conf
+	sed -i "s#PCP_SORT_PROG=.*#PCP_SORT_PROG=sort#" ${D}/${sysconfdir}/pcp.conf
+	sed -i "s#PCP_ECHO_PROG=.*#PCP_ECHO_PROG=echo#" ${D}/${sysconfdir}/pcp.conf
+	sed -i "s#PCP_WHICH_PROG=.*#PCP_WHICH_PROG=which#" ${D}/${sysconfdir}/pcp.conf
+}
+
+PACKAGES += " ${PN}-export-zabbix-agent ${PN}-testsuite \
+	libpcp-gui2  libpcp-gui2-dev \
+	libpcp-import1 \
+	libpcp-mmv1 libpcp-mmv1-dev \
+	libpcp-pmda3 libpcp-pmda3-dev \
+	libpcp-trace2 libpcp-trace2-dev \
+	libpcp-web1 libpcp-web1-dev \
+	libpcp3 libpcp3-dev python3-${PN}\
+"
+FILES:libpcp-gui2 = "${libdir}/libpcp_gui.so.2 \
+"	
+FILES:libpcp-gui2-dev = " \
+	${libdir}/libpcp_gui.so \
+	${libdir}/libpcp_gui.a \
+	${includedir}/pmafm.h \
+	${includedir}/pmtime.h \
+"
+FILES:libpcp-mmv1 = " \
+	${libdir}/libpcp_mmv.so.1 \
+"
+FILES:libpcp-mmv1-dev = " \
+	${libdir}/libpcp_mmv.a \
+	${libdir}/libpcp_mmv.so \
+	${libdir}/libpcp_mmv.so \
+	${includedir}/mmv_stats.h \
+	${includedir}/mmv_dev.h \
+	${datadir}/man/man3/mmv_* \
+	${datadir}/man/man5/mmv.5.gz \
+"
+FILES:libpcp-import1 = " \
+	${libdir}/libpcp_import.so.1 \
+"
+FILES:libpcp-pmda3 = " \
+	${libdir}/libpcp_pmda.so.3 \
+"
+FILES:libpcp-pmda3-dev = " \
+	${includedir}/pmda.h \
+	${includedir}/pmdaroot.h \
+	${libdir}/libpcp_pmda.a \
+	${libdir}/libpcp_pmda.so \
+	${libdir}/pkgconfig/libpcp_pmda.pc \
+	${datadir}/man/man3/PMDA.3.gz \
+	${datadir}/man/man3/pmda* \
+"
+FILES:libpcp-trace2 = " \
+	${libdir}/libpcp_trace.so.2 \
+"
+FILES:libpcp-trace2-dev = " \
+	${includedir}/trace.h \
+	${includedir}/trace_dev.h \
+	${libdir}/libpcp_trace.a \
+	${libdir}/libpcp_trace.so \
+	${datadir}/man/man3/pmtrace* \
+"
+FILES:libpcp-web1 = " \
+	${libdir}/libpcp_web.so.1 \
+"
+FILES:libpcp-web1-dev = " \
+	${includedir}/pmhttp.h \
+	${includedir}/pmjson.h \
+	${libdir}/libpcp_web.a \
+	${libdir}/libpcp_web.so \
+	${datadir}/man/man3/pmhttp* \
+	${datadir}/man/man3/pmjson* \
+"
+FILES:libpcp3 = " \
+	${libdir}/libpcp.so.3 \
+"
+
+FILES:${PN} = " \
+	${sysconfdir}/pcp \
+	${libexecdir} \
+	${bindir} \
+	${datadir}/bash-completion \
+	${datadir}/pcp-gui \
+	${datadir}/zsh \
+	${systemd_system_unitdir}/ \
+	${libdir}/pcp/ \
+	${datadir}/pcp \
+	${libdir}/*.sh \
+	${datadir}/man \
+	${libdir}/rc-proc.sh.minimal \
+	${sysconfdir}/p* \
+	${sysconfdir}/s* \
+	${localstatedir}/lib/pcp/config \
+	${localstatedir}/lib/pcp/pmdas/ \
+	${localstatedir}/lib/pcp/pmns \
+	${libdir}/libpcp_fault.so.3 \
+"
+
+FILES:${PN}-export-zabbix-agent += " \
+	${libdir}/zabbix \
+	${sysconfdir}/zabbix \
+	${mandir}/man3/zbxpcp.3.gz \
+	${libdir}/zabbix \
+"
+FILES:${PN}-testsuite = "${localstatedir}/lib/pcp/testsuite/"
+FILES:python3-${PN} = "${PYTHON_SITEPACKAGES_DIR}"
+FILES:${PN}-dev += " \
+        ${includedir}/pcp \
+        ${libdir}/libpcp.a \
+        ${libdir}/libpcp.so \
+        ${localstatedir}/lib/pcp/pmdas/*/*.so \
+        ${libexecdir}/pcp/bin/install-sh \
+        ${libdir}/pkgconfig/libpcp.pc \
+        ${libdir}/zabbix/modules/*.so \
+        ${datadir}/man/man3/LOGIMPORT.3.gz \
+        ${datadir}/man/man3/P* \
+        ${datadir}/man/man3/Q* \
+        ${datadir}/man/man3/__pm* \
+        ${datadir}/man/man3/pmA* \
+        ${datadir}/man/man3/pmC* \
+        ${datadir}/man/man3/pmD* \
+        ${datadir}/man/man3/pmE* \
+        ${datadir}/man/man3/pmF* \
+        ${datadir}/man/man3/pmG* \
+        ${datadir}/man/man3/pmH* \
+        ${datadir}/man/man3/pmI* \
+        ${datadir}/man/man3/pmL* \
+        ${datadir}/man/man3/pmM* \
+        ${datadir}/man/man3/pmN* \
+        ${datadir}/man/man3/pmO* \
+        ${datadir}/man/man3/pmP* \
+        ${datadir}/man/man3/pmR* \
+        ${datadir}/man/man3/pmS* \
+        ${datadir}/man/man3/pmT* \
+        ${datadir}/man/man3/pmU* \
+        ${datadir}/man/man3/pmW* \
+        ${datadir}/man/man3/pmf* \
+        ${datadir}/man/man3/pmg* \
+        ${datadir}/man/man3/pmi* \
+        ${datadir}/man/man3/pms* \
+        ${datadir}/man/man3/pmt* \
+"