From: "?ukasz Majewski" <lukma@denx.de>
To: Khem Raj <raj.khem@gmail.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [OE-core] [PATCH 2/2] glibc: ptest: Add support for running glibc test suite with ptest
Date: Mon, 23 Aug 2021 22:09:26 +0200 [thread overview]
Message-ID: <20210823220926.37d87121@ktm> (raw)
In-Reply-To: <CAMKF1srLFY_R4KX3gG3hZMhZNtjSN8D4mEp0Wwr78Se9RE_20g@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 11327 bytes --]
On Mon, 23 Aug 2021 12:52:44 -0700
Khem Raj <raj.khem@gmail.com> wrote:
> On Mon, Aug 23, 2021 at 11:24 AM Lukasz Majewski <lukma@denx.de>
> wrote:
>
> > Hi Khem,
> >
> > > On 8/23/21 8:08 AM, ?ukasz Majewski wrote:
> > > > This patch introduces new recipe - namely 'glibc-tests', which
> > > > builds and installs glibc test suite to OE/Yocto built image.
> > > >
> > > > It reuses code from already available 'glibc-testsuite' recipe,
> > > > which is run with 'bitbake glibc-testsuite -c check' and uses
> > > > qemu to execute remotely (via SSH) tests on some emulated
> > > > machine.
> > > >
> > > > This recipe installs eligible tests on some rootfs image.
> > > > Afterwards, either all of them or only time related subset,
> > > > those tests can be executed on the real hardware, to facilitate
> > > > validation of this platform with for example Y2038 problem
> > > > compliance.
> > > >
> > > > By default all tests are executed, with 'ptest-runner
> > > > glibc-tests'. To test only time related subset - one needs to
> > > > call: cd /usr/lib/glibc-tests/ptest/; rm run-ptest; \
> > > > ln -s run-ptest-time run-ptest; cd -; ptest-runner glibc-tests
> > > >
> > > > To facilitate debugging, source files are provided by default
> > > > with the unstripped debugging symbols. Such approach would
> > > > reduce the already complex recipe (as it inherits base glibc
> > > > one), so there is no need to also install *-dbg and *-src
> > > > packages.
> > >
> > >
> > > does it have to be a separate recipe I wonder if we can have it
> > > built as part of glibc itself controlled via ptest knob
> >
> > I've followed the glibc-testsuite recipe to provide tests for ptest.
> > Test creation is similar to it, but doesn't require QEMU run (tests
> > are executed on the HW).
> >
> > Another rationale was to have some kind of "features" separation in
> > different file (liked glibc-mtrace), which is easier to maintain and
> > review.
> >
> > Last but not least - separate recipe (and built binaries) allow some
> > kind of magic with selection of used test programs (this may be
> > useful if one would like to have different sets of tests in
> > different packages)
>
> That’s seems ok I think the names are quite confusing now not that it
> was not so much better before but now we have glibc-tests and
> glibc-testsuites which do same things but in very different way maybe
> glibc-testsuite should be renamed to something like glibc-tests-crosd
> or some such
I think that glibc-testsuite_2.34.bb shall be renamed to
glibc-tests-qemu_2.34.bb as it is more descriptive.
Then, glibc-tests_2.34.bb could be left as it is now, as inheriting
ptest requires it to be added as 'glibc-tests-ptest' in
meta/conf/distro/include/ptest-packagelists.inc
(I've tried to rename it to glibc-tests-ptest_2.34.bb, but then it was
required to add glibc-tests-ptest-ptest to the ptest-packagelist.inc
file, which is a bit clumsy IMHO).
>
> >
> > >
> > > >
> > > > Signed-off-by: Lukasz Majewski <lukma@denx.de>
> > > > ---
> > > > .../distro/include/ptest-packagelists.inc | 1 +
> > > > meta/recipes-core/glibc/glibc-tests_2.34.bb | 101
> > > > ++++++++++++++++++ meta/recipes-core/glibc/glibc/run-ptest-all
> > > > | 25 +++++ meta/recipes-core/glibc/glibc/run-ptest-time | 30
> > > > ++++++ 4 files changed, 157 insertions(+)
> > > > create mode 100644 meta/recipes-core/glibc/glibc-tests_2.34.bb
> > > > create mode 100755 meta/recipes-core/glibc/glibc/run-ptest-all
> > > > create mode 100755
> > > > meta/recipes-core/glibc/glibc/run-ptest-time
> > > >
> > > > diff --git a/meta/conf/distro/include/ptest-packagelists.inc
> > > > b/meta/conf/distro/include/ptest-packagelists.inc index
> > > > 3872bdc942..e460ad1c8b 100644 ---
> > > > a/meta/conf/distro/include/ptest-packagelists.inc +++
> > > > b/meta/conf/distro/include/ptest-packagelists.inc @@ -59,6
> > > > +59,7 @@ PTESTS_FAST = "\ slang-ptest \
> > > > wayland-ptest \
> > > > zlib-ptest \
> > > > + glibc-tests-ptest \
> > > > "
> > > > PTESTS_FAST:remove:mips64 = "qemu-ptest"
> > > > PTESTS_PROBLEMS:append:mips64 = "qemu-ptest"
> > > > diff --git a/meta/recipes-core/glibc/glibc-tests_2.34.bb
> > > > b/meta/recipes-core/glibc/glibc-tests_2.34.bb new file mode
> > > > 100644 index 0000000000..896809f700
> > > > --- /dev/null
> > > > +++ b/meta/recipes-core/glibc/glibc-tests_2.34.bb
> > > > @@ -0,0 +1,101 @@
> > > > +require glibc_${PV}.bb
> > > > +require glibc-tests.inc
> > > > +
> > > > +inherit ptest
> > > > +
> > > > +SRC_URI:append = " \
> > > > + file://run-ptest-all file://run-ptest-time \
> > > > +"
> > > > +
> > > > +SUMMARY = "glibc tests to be run with ptest"
> > > > +
> > > > +# Erase some variables already set by glibc_${PV}
> > > > +python __anonymous() {
> > > > + # Remove packages provided by glibc build, we only need
> > > > a subset of them
> > > > + d.setVar("PACKAGES", "${PN}")
> > > > +
> > > > + d.setVar("PROVIDES", "${PN}")
> > > > + d.setVar("RPROVIDES", "${PN} glibc-ptest")
> > > > +
> > > > + d.setVar("RRECOMMENDS", "")
> > > > +}
> > > > +
> > > > +# Remove any lefovers from original glibc recipe
> > > > +RPROVIDES:${PN} = "${PN}"
> > > > +RRECOMMENDS:${PN} = ""
> > > > +RDEPENDS:${PN} = "sed"
> > > > +
> > > > +# Just build tests for target - do not run them
> > > > +do_check:append () {
> > > > + oe_runmake -i check run-built-tests=no
> > > > +}
> > > > +addtask do_check after do_compile before do_install_ptest_base
> > > > +
> > > > +glibc_strip_build_directory () {
> > > > + # Delete all non executable files from build directory
> > > > + find ${B} ! -executable -type f -delete
> > > > +
> > > > + # Remove build dynamic libraries and links to them as
> > > > + # those are already installed in the target device
> > > > + find ${B} -type f -name "*.so" -delete
> > > > + find ${B} -type l -name "*.so*" -delete
> > > > +
> > > > + # Remove headers (installed with glibc)
> > > > + find ${B} -type f -name "*.h" -delete
> > > > +
> > > > + find ${B} -type f -name "isomac" -delete
> > > > + find ${B} -type f -name "annexc" -delete
> > > > +}
> > > > +
> > > > +do_install_ptest_base () {
> > > > + glibc_strip_build_directory
> > > > +
> > > > + # Install build test programs to the image
> > > > + install -d ${D}${PTEST_PATH}/tests/glibc-ptest/
> > > > + cp -r ${B}/* ${D}${PTEST_PATH}/tests/glibc-ptest/
> > > > +
> > > > + install -d ${D}${PTEST_PATH}
> > > > + cp ${WORKDIR}/run-ptest-* ${D}${PTEST_PATH}/
> > > > +
> > > > + # By default run all glibc tests
> > > > + cd ${D}${PTEST_PATH}/
> > > > + ln -s run-ptest-all run-ptest
> > > > +}
> > > > +
> > > > +# The datadir directory is required to allow core (and reused)
> > > > +# glibc cleanup function to finish correctly, as this directory
> > > > +# is not created for ptests
> > > > +stash_locale_package_cleanup:prepend () {
> > > > + mkdir -p ${PKGD}${datadir}
> > > > +}
> > > > +
> > > > +stash_locale_sysroot_cleanup:prepend () {
> > > > + mkdir -p ${SYSROOT_DESTDIR}${datadir}
> > > > +}
> > > > +
> > > > +# Prevent the do_package() task to set 'libc6' prefix
> > > > +# for glibc tests related packages
> > > > +python populate_packages:prepend () {
> > > > + if d.getVar('DEBIAN_NAMES'):
> > > > + d.setVar('DEBIAN_NAMES', '')
> > > > +}
> > > > +
> > > > +FILES:${PN} = "${PTEST_PATH}/* /usr/src/debug/glibc-tests/*"
> > > > +
> > > > +EXCLUDE_FROM_SHLIBS = "1"
> > > > +
> > > > +# Install debug data in .debug and sources in /usr/src/debug
> > > > +# It is more handy to have _all_ the sources and symbols in one
> > > > +# place (package) as this recipe will be used for validation
> > > > and +# debugging.
> > > > +PACKAGE_DEBUG_SPLIT_STYLE = "debug"
> > > > +
> > > > +# glibc test cases violate by default some Yocto/OE checks
> > > > (staticdev, +# textrel)
> > > > +# 'debug-files' - add everything (including debug) into one
> > > > package +# (no need to install/build *-src
> > > > package) +INSANE_SKIP:${PN} += "staticdev textrel debug-files
> > > > rpaths" +
> > > > +deltask do_stash_locale
> > > > +do_install[noexec] = "1"
> > > > +do_populate_sysroot[noexec] = "1"
> > > > diff --git a/meta/recipes-core/glibc/glibc/run-ptest-all
> > > > b/meta/recipes-core/glibc/glibc/run-ptest-all new file mode
> > > > 100755 index 0000000000..47bfe5238c
> > > > --- /dev/null
> > > > +++ b/meta/recipes-core/glibc/glibc/run-ptest-all
> > > > @@ -0,0 +1,25 @@
> > > > +#!/bin/sh
> > > > +# ptest script for glibc - to run time related tests to
> > > > +# facilitate Y2038 validation
> > > > +# Run with 'ptest-runner glibc-tests'
> > > > +
> > > > +output() {
> > > > + retcode=$?
> > > > + if [ $retcode -eq 0 ]
> > > > + then echo "PASS: $i"
> > > > + elif [ $retcode -eq 77 ]
> > > > + then echo "SKIP: $i"
> > > > + else echo "FAIL: $i"
> > > > + fi
> > > > +}
> > > > +
> > > > +# Allow altering time on the target
> > > > +export GLIBC_TEST_ALLOW_TIME_SETTING="1"
> > > > +
> > > > +tst=$(ls -r ${PWD}/tests/glibc-ptest/*/*)
> > > > +
> > > > +for i in ${tst}
> > > > +do
> > > > + $i >/dev/null 2>&1
> > > > + output
> > > > +done
> > > > diff --git a/meta/recipes-core/glibc/glibc/run-ptest-time
> > > > b/meta/recipes-core/glibc/glibc/run-ptest-time new file mode
> > > > 100755 index 0000000000..24dedc6e32
> > > > --- /dev/null
> > > > +++ b/meta/recipes-core/glibc/glibc/run-ptest-time
> > > > @@ -0,0 +1,30 @@
> > > > +#!/bin/sh
> > > > +# ptest script for glibc - to run time related tests to
> > > > +# facilitate Y2038 validation
> > > > +# Run with 'ptest-runner glibc-tests'
> > > > +
> > > > +output() {
> > > > + retcode=$?
> > > > + if [ $retcode -eq 0 ]
> > > > + then echo "PASS: $i"
> > > > + elif [ $retcode -eq 77 ]
> > > > + then echo "SKIP: $i"
> > > > + else echo "FAIL: $i"
> > > > + fi
> > > > +}
> > > > +
> > > > +# Allow altering time on the target
> > > > +export GLIBC_TEST_ALLOW_TIME_SETTING="1"
> > > > +
> > > > +tst_time64=$(ls -r ${PWD}/tests/glibc-ptest/*/*-time64)
> > > > +
> > > > +# Remove '-time64' suffix - those tests are also time
> > > > +# related
> > > > +tst_time_tmp=$(sed -e "s/-time64$//" <<< ${tst_time64})
> > > > +tst_time="${tst_time_tmp} ${tst_time64}"
> > > > +
> > > > +for i in ${tst_time}
> > > > +do
> > > > + $i >/dev/null 2>&1
> > > > + output
> > > > +done
> > > >
> > > >
> > > >
> > > >
> > > >
> >
> >
> >
> >
> > Best regards,
> >
> > Lukasz Majewski
> >
> > --
> >
> > DENX Software Engineering GmbH, Managing Director: Wolfgang
> > Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell,
> > Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email:
> > lukma@denx.de
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 499 bytes --]
next prev parent reply other threads:[~2021-08-23 20:09 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-23 15:08 [PATCH 1/2] glibc: Exclude common code to build tests to glibc-tests.inc ?ukasz Majewski
2021-08-23 15:08 ` [PATCH 2/2] glibc: ptest: Add support for running glibc test suite with ptest ?ukasz Majewski
2021-08-23 16:17 ` [OE-core] " Khem Raj
2021-08-23 18:24 ` ?ukasz Majewski
2021-08-23 19:52 ` Khem Raj
2021-08-23 20:09 ` ?ukasz Majewski [this message]
2021-08-23 20:41 ` Khem Raj
2021-08-24 7:36 ` ?ukasz Majewski
2021-08-24 7:41 ` Richard Purdie
2021-08-24 8:42 ` ?ukasz Majewski
2021-08-26 12:27 ` ?ukasz Majewski
2021-08-26 13:38 ` Richard Purdie
2021-08-26 14:12 ` ?ukasz Majewski
2021-08-26 16:25 ` Richard Purdie
2021-08-27 7:52 ` Nathan Rossi
2021-08-27 9:20 ` ?ukasz Majewski
2021-08-27 11:29 ` Nathan Rossi
2021-08-27 14:19 ` ?ukasz Majewski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210823220926.37d87121@ktm \
--to=lukma@denx.de \
--cc=openembedded-core@lists.openembedded.org \
--cc=raj.khem@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox