diff mbox series

[meta-oe,1/2] librelp: add ptest

Message ID 20230817170343.3597778-1-nicolas.marguet@windriver.com
State New
Headers show
Series [meta-oe,1/2] librelp: add ptest | expand

Commit Message

Nicolas Marguet Aug. 17, 2023, 5:03 p.m. UTC
From: Nicolas Marguet <nicolas.marguet@windriver.com>

Use internal test from librelp project as ptest.

This work is largely inspired on the rsyslog ptest implementation,
which copies the automake-based tests/Makefile to the target and runs
'make check-TESTS'. sed is used to fix a few Makefile paths or
env-vars so 'make' can run on the target.

Tested on qemux86_64 and qemuarm64:

==========================================
   librelp 1.11.0: tests/test-suite.log
==========================================

TOTAL: 30
PASS:  27
SKIP:  3
XFAIL: 0
FAIL:  0
XPASS: 0
ERROR: 0

The 3 skipped tests are either self-identified as “not do anything
really useful” or may need to port libtool to the target.

Signed-off-by: Nicolas Marguet <nicolas.marguet@windriver.com>
---
 ...line-errors-in-debug-optimization-Og.patch |  0
 .../rsyslog/librelp/run-ptest                 | 10 ++++
 .../rsyslog/librelp_1.11.0.bb                 | 59 ++++++++++++++++++-
 3 files changed, 68 insertions(+), 1 deletion(-)
 rename meta-oe/recipes-extended/rsyslog/{files => librelp}/0001-Fix-function-inline-errors-in-debug-optimization-Og.patch (100%)
 create mode 100644 meta-oe/recipes-extended/rsyslog/librelp/run-ptest

Comments

Martin Jansa Aug. 19, 2023, 8 a.m. UTC | #1
+    cp -f ${S}/${TESTDIR}/*.{sh,py} ${D}${PTEST_PATH}/${TESTDIR}

Can you please change this to:
 cp -f ${S}/${TESTDIR}/*.sh ${S}/${TESTDIR}/*,py
${D}${PTEST_PATH}/${TESTDIR}

so that it works with dash as well? It's now failing with:

DEBUG: Executing shell function do_install_ptest_base
cp: cannot stat
'TOPDIR/BUILD/work/qemux86_64-oe-linux/librelp/1.11.0/git/tests/*.{sh,py}':
No such file or directory
WARNING: exit code 1 from a shell command.

On Thu, Aug 17, 2023 at 7:04 PM nicolas.marguet via lists.openembedded.org
<nicolas.marguet=windriver.com@lists.openembedded.org> wrote:

> From: Nicolas Marguet <nicolas.marguet@windriver.com>
>
> Use internal test from librelp project as ptest.
>
> This work is largely inspired on the rsyslog ptest implementation,
> which copies the automake-based tests/Makefile to the target and runs
> 'make check-TESTS'. sed is used to fix a few Makefile paths or
> env-vars so 'make' can run on the target.
>
> Tested on qemux86_64 and qemuarm64:
>
> ==========================================
>    librelp 1.11.0: tests/test-suite.log
> ==========================================
>
> TOTAL: 30
> PASS:  27
> SKIP:  3
> XFAIL: 0
> FAIL:  0
> XPASS: 0
> ERROR: 0
>
> The 3 skipped tests are either self-identified as “not do anything
> really useful” or may need to port libtool to the target.
>
> Signed-off-by: Nicolas Marguet <nicolas.marguet@windriver.com>
> ---
>  ...line-errors-in-debug-optimization-Og.patch |  0
>  .../rsyslog/librelp/run-ptest                 | 10 ++++
>  .../rsyslog/librelp_1.11.0.bb                 | 59 ++++++++++++++++++-
>  3 files changed, 68 insertions(+), 1 deletion(-)
>  rename meta-oe/recipes-extended/rsyslog/{files =>
> librelp}/0001-Fix-function-inline-errors-in-debug-optimization-Og.patch
> (100%)
>  create mode 100644 meta-oe/recipes-extended/rsyslog/librelp/run-ptest
>
> diff --git
> a/meta-oe/recipes-extended/rsyslog/files/0001-Fix-function-inline-errors-in-debug-optimization-Og.patch
> b/meta-oe/recipes-extended/rsyslog/librelp/0001-Fix-function-inline-errors-in-debug-optimization-Og.patch
> similarity index 100%
> rename from
> meta-oe/recipes-extended/rsyslog/files/0001-Fix-function-inline-errors-in-debug-optimization-Og.patch
> rename to
> meta-oe/recipes-extended/rsyslog/librelp/0001-Fix-function-inline-errors-in-debug-optimization-Og.patch
> diff --git a/meta-oe/recipes-extended/rsyslog/librelp/run-ptest
> b/meta-oe/recipes-extended/rsyslog/librelp/run-ptest
> new file mode 100644
> index 000000000..a649a5716
> --- /dev/null
> +++ b/meta-oe/recipes-extended/rsyslog/librelp/run-ptest
> @@ -0,0 +1,10 @@
> +#!/bin/sh
> +#
> +set -e
> +set -o pipefail
> +
> +SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
> +cd ${SCRIPTPATH}
> +useradd tester  || echo "user already exists"
> +su tester -c "make -C tests -k check-TESTS"
> +userdel tester
> diff --git a/meta-oe/recipes-extended/rsyslog/librelp_1.11.0.bb
> b/meta-oe/recipes-extended/rsyslog/librelp_1.11.0.bb
> index bac5abb05..cbbc31b7d 100644
> --- a/meta-oe/recipes-extended/rsyslog/librelp_1.11.0.bb
> +++ b/meta-oe/recipes-extended/rsyslog/librelp_1.11.0.bb
> @@ -8,10 +8,67 @@ DEPENDS = "gmp nettle libidn zlib gnutls openssl"
>
>  SRC_URI = "git://
> github.com/rsyslog/librelp.git;protocol=https;branch=stable \
>
> file://0001-Fix-function-inline-errors-in-debug-optimization-Og.patch \
> +           file://run-ptest \
>  "
>
>  SRCREV = "b421f56d9ee31a966058d23bd23c966221c91396"
>
>  S = "${WORKDIR}/git"
>
> -inherit autotools pkgconfig
> +inherit autotools pkgconfig ptest
> +
> +# For ptests, copy source tests/*.sh scripts, Makefile and
> +# executables and run them with make on target.
> +TESTDIR = "tests"
> +do_compile_ptest() {
> +    echo 'buildtest-TESTS: $(check_PROGRAMS)' >> ${TESTDIR}/Makefile
> +    oe_runmake -C ${TESTDIR} buildtest-TESTS
> +}
> +
> +do_install_ptest() {
> +    install -d ${D}${PTEST_PATH}/${TESTDIR}
> +
> +    # copy source tests/*.sh and python scripts
> +    cp -f ${S}/${TESTDIR}/*.{sh,py} ${D}${PTEST_PATH}/${TESTDIR}
> +    # install data files needed by the test scripts on the target
> +    cp -f ${S}/${TESTDIR}/*.supp ${D}${PTEST_PATH}/${TESTDIR}
> +    cp -rf ${S}/${TESTDIR}/tls-certs ${D}${PTEST_PATH}/${TESTDIR}
> +
> +    # copy executables
> +    find ${B}/${TESTDIR} -type f -executable -exec cp {}
> ${D}${PTEST_PATH}/${TESTDIR} \;
> +    cp -rf ${B}/${TESTDIR}/.libs ${D}${PTEST_PATH}/${TESTDIR}
> +    # copy Makefile
> +    # run-ptest will run make which runs the executables
> +    cp -f ${B}/${TESTDIR}/Makefile ${D}${PTEST_PATH}/${TESTDIR}
> +    cp -f ${B}/${TESTDIR}/set-envvars ${D}${PTEST_PATH}/${TESTDIR}
> +
> +    # give permissions to all users
> +    # some tests need to write to this directory
> +    chmod 777 -R ${D}${PTEST_PATH}/${TESTDIR}
> +
> +    # do NOT need to rebuild Makefile or $(check_PROGRAMS)
> +    sed -i 's/^Makefile:.*$/Makefile:/'
> ${D}${PTEST_PATH}/${TESTDIR}/Makefile
> +    sed -i 's/^check-TESTS:.*$/check-TESTS:/'
> ${D}${PTEST_PATH}/${TESTDIR}/Makefile
> +
> +    # fix the srcdir, top_srcdir, abs_top_builddir
> +    sed -i 's,^\(srcdir = \).*,\1${PTEST_PATH}/${TESTDIR},'
> ${D}${PTEST_PATH}/${TESTDIR}/Makefile
> +    sed -i 's,^\(top_srcdir = \).*,\1${PTEST_PATH}/${TESTDIR},'
> ${D}${PTEST_PATH}/${TESTDIR}/Makefile
> +    sed -i 's,^\(abs_top_builddir = \).*,\1${PTEST_PATH}/,'
> ${D}${PTEST_PATH}/${TESTDIR}/Makefile
> +
> +    # install test-driver
> +    install -m 644 ${S}/test-driver ${D}${PTEST_PATH}
> +
> +    # fix the python3 path for tests/set-envar
> +    sed -i -e s:${HOSTTOOLS_DIR}:${bindir}:g
> ${D}${PTEST_PATH}/${TESTDIR}/set-envvars
> +
> +    # these 2 scripts need help finding their
> /usr/lib/librelp/ptest/tests/.libs libraries
> +    sed -i 's:${B}/src:${PTEST_PATH}/${TESTDIR}:'
> ${D}${PTEST_PATH}/${TESTDIR}/send
> +    sed -i 's:${B}/src:${PTEST_PATH}/${TESTDIR}:'
> ${D}${PTEST_PATH}/${TESTDIR}/receive
> +}
> +
> +RDEPENDS:${PN}-ptest += "\
> +  make bash coreutils libgcc util-linux gawk grep \
> +  python3-core python3-io \
> +"
> +
> +RRECOMMENDS:${PN}-ptest += " valgrind"
> --
> 2.39.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#104473):
> https://lists.openembedded.org/g/openembedded-devel/message/104473
> Mute This Topic: https://lists.openembedded.org/mt/100804400/3617156
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [
> Martin.Jansa@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
diff mbox series

Patch

diff --git a/meta-oe/recipes-extended/rsyslog/files/0001-Fix-function-inline-errors-in-debug-optimization-Og.patch b/meta-oe/recipes-extended/rsyslog/librelp/0001-Fix-function-inline-errors-in-debug-optimization-Og.patch
similarity index 100%
rename from meta-oe/recipes-extended/rsyslog/files/0001-Fix-function-inline-errors-in-debug-optimization-Og.patch
rename to meta-oe/recipes-extended/rsyslog/librelp/0001-Fix-function-inline-errors-in-debug-optimization-Og.patch
diff --git a/meta-oe/recipes-extended/rsyslog/librelp/run-ptest b/meta-oe/recipes-extended/rsyslog/librelp/run-ptest
new file mode 100644
index 000000000..a649a5716
--- /dev/null
+++ b/meta-oe/recipes-extended/rsyslog/librelp/run-ptest
@@ -0,0 +1,10 @@ 
+#!/bin/sh
+#
+set -e
+set -o pipefail
+
+SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
+cd ${SCRIPTPATH}
+useradd tester  || echo "user already exists"
+su tester -c "make -C tests -k check-TESTS"
+userdel tester
diff --git a/meta-oe/recipes-extended/rsyslog/librelp_1.11.0.bb b/meta-oe/recipes-extended/rsyslog/librelp_1.11.0.bb
index bac5abb05..cbbc31b7d 100644
--- a/meta-oe/recipes-extended/rsyslog/librelp_1.11.0.bb
+++ b/meta-oe/recipes-extended/rsyslog/librelp_1.11.0.bb
@@ -8,10 +8,67 @@  DEPENDS = "gmp nettle libidn zlib gnutls openssl"
 
 SRC_URI = "git://github.com/rsyslog/librelp.git;protocol=https;branch=stable \
            file://0001-Fix-function-inline-errors-in-debug-optimization-Og.patch \
+           file://run-ptest \
 "
 
 SRCREV = "b421f56d9ee31a966058d23bd23c966221c91396"
 
 S = "${WORKDIR}/git"
 
-inherit autotools pkgconfig
+inherit autotools pkgconfig ptest
+
+# For ptests, copy source tests/*.sh scripts, Makefile and 
+# executables and run them with make on target.
+TESTDIR = "tests"
+do_compile_ptest() {
+    echo 'buildtest-TESTS: $(check_PROGRAMS)' >> ${TESTDIR}/Makefile
+    oe_runmake -C ${TESTDIR} buildtest-TESTS
+}
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/${TESTDIR}
+
+    # copy source tests/*.sh and python scripts
+    cp -f ${S}/${TESTDIR}/*.{sh,py} ${D}${PTEST_PATH}/${TESTDIR}
+    # install data files needed by the test scripts on the target
+    cp -f ${S}/${TESTDIR}/*.supp ${D}${PTEST_PATH}/${TESTDIR}
+    cp -rf ${S}/${TESTDIR}/tls-certs ${D}${PTEST_PATH}/${TESTDIR}
+
+    # copy executables
+    find ${B}/${TESTDIR} -type f -executable -exec cp {} ${D}${PTEST_PATH}/${TESTDIR} \;
+    cp -rf ${B}/${TESTDIR}/.libs ${D}${PTEST_PATH}/${TESTDIR}
+    # copy Makefile
+    # run-ptest will run make which runs the executables
+    cp -f ${B}/${TESTDIR}/Makefile ${D}${PTEST_PATH}/${TESTDIR}
+    cp -f ${B}/${TESTDIR}/set-envvars ${D}${PTEST_PATH}/${TESTDIR}
+
+    # give permissions to all users
+    # some tests need to write to this directory
+    chmod 777 -R ${D}${PTEST_PATH}/${TESTDIR}
+
+    # do NOT need to rebuild Makefile or $(check_PROGRAMS)
+    sed -i 's/^Makefile:.*$/Makefile:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+    sed -i 's/^check-TESTS:.*$/check-TESTS:/' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+
+    # fix the srcdir, top_srcdir, abs_top_builddir
+    sed -i 's,^\(srcdir = \).*,\1${PTEST_PATH}/${TESTDIR},' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+    sed -i 's,^\(top_srcdir = \).*,\1${PTEST_PATH}/${TESTDIR},' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+    sed -i 's,^\(abs_top_builddir = \).*,\1${PTEST_PATH}/,' ${D}${PTEST_PATH}/${TESTDIR}/Makefile
+
+    # install test-driver
+    install -m 644 ${S}/test-driver ${D}${PTEST_PATH}
+
+    # fix the python3 path for tests/set-envar
+    sed -i -e s:${HOSTTOOLS_DIR}:${bindir}:g ${D}${PTEST_PATH}/${TESTDIR}/set-envvars
+
+    # these 2 scripts need help finding their /usr/lib/librelp/ptest/tests/.libs libraries
+    sed -i 's:${B}/src:${PTEST_PATH}/${TESTDIR}:' ${D}${PTEST_PATH}/${TESTDIR}/send
+    sed -i 's:${B}/src:${PTEST_PATH}/${TESTDIR}:' ${D}${PTEST_PATH}/${TESTDIR}/receive
+}
+
+RDEPENDS:${PN}-ptest += "\
+  make bash coreutils libgcc util-linux gawk grep \
+  python3-core python3-io \
+"
+
+RRECOMMENDS:${PN}-ptest += " valgrind"