Message ID | 20230817170343.3597778-1-nicolas.marguet@windriver.com |
---|---|
State | New |
Headers | show |
Series | [meta-oe,1/2] librelp: add ptest | expand |
+ 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 --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"