From: Lukasz Majewski <lukma@denx.de>
To: Richard Purdie <richard.purdie@linuxfoundation.org>,
Nathan Rossi <nathan@nathanrossi.com>,
Khem Raj <raj.khem@gmail.com>
Cc: Adhemerval Zanella <adhemerval.zanella@linaro.org>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Patches and discussions about the oe-core layer
<openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH v3] glibc: ptest: Add running glibc time related test suite (Y2038) with ptest
Date: Mon, 8 Nov 2021 14:42:17 +0100 [thread overview]
Message-ID: <20211108144217.5be89bde@ktm> (raw)
In-Reply-To: <20211028120020.23276-1-lukma@denx.de>
[-- Attachment #1: Type: text/plain, Size: 7670 bytes --]
Dear Community,
> This patch introduces new recipe - namely 'glibc-tests', which
> builds and installs time related (to check if Y2038 support works)
> 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 time related glibc tests on some rootfs image.
> Afterwards, those tests can be executed on the real hardware, to
> facilitate validation of it with Y2038 problem compliance.
>
> To test time related subset - one needs to call:
> ptest-runner glibc-tests
> then change the date after Y2038 threshold for 32 bit systems:
> date -s "20 JAN 2038 18:00:00"
> and then run ptest-runner again.
>
> 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.
>
Gentle ping on this patch ...
> Signed-off-by: Lukasz Majewski <lukma@denx.de>
>
> ---
> Changes for v3:
> - Provide missing ${PN}-ptest for PACKAGES, PROVIDES and
> RPROVIDES variables
>
> Changes for v2:
> - Just focus on time related set of tests as those can be run as
> standalone
> - Reuse of already built tests (from glibc-tests.inc) and depoloy
> them on the HW target.
> - Provide single 'run-ptest' script.
> - Update the recipe to run with newest poky's -master
> ---
> .../distro/include/ptest-packagelists.inc | 1 +
> meta/recipes-core/glibc/glibc-tests_2.34.bb | 112
> ++++++++++++++++++ meta/recipes-core/glibc/glibc/run-ptest |
> 37 ++++++ 3 files changed, 150 insertions(+)
> create mode 100644 meta/recipes-core/glibc/glibc-tests_2.34.bb
> create mode 100755 meta/recipes-core/glibc/glibc/run-ptest
>
> diff --git a/meta/conf/distro/include/ptest-packagelists.inc
> b/meta/conf/distro/include/ptest-packagelists.inc index
> 2e324f8da4..fd52fa72a4 100644 ---
> a/meta/conf/distro/include/ptest-packagelists.inc +++
> b/meta/conf/distro/include/ptest-packagelists.inc @@ -61,6 +61,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..0a6920eef4
> --- /dev/null
> +++ b/meta/recipes-core/glibc/glibc-tests_2.34.bb
> @@ -0,0 +1,112 @@
> +require glibc_${PV}.bb
> +require glibc-tests.inc
> +
> +inherit ptest
> +
> +SRC_URI:append = " \
> + file://run-ptest \
> +"
> +
> +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} ${PN}-ptest")
> +
> + d.setVar("PROVIDES", "${PN} ${PN}-ptest")
> + d.setVar("RPROVIDES", "${PN} ${PN}-ptest")
> +
> + d.setVar("RRECOMMENDS", "")
> +}
> +
> +# Remove any lefovers from original glibc recipe
> +RPROVIDES:${PN} = "${PN}"
> +RRECOMMENDS:${PN} = ""
> +RDEPENDS:${PN} = " glibc sed"
> +DEPENDS:append = " 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
> +
> + ls -r ${B}/*/*-time64 > ${B}/tst_time64
> +
> + # Remove '-time64' suffix - those tests are also time related
> + sed -e "s/-time64$//" ${B}/tst_time64 > ${B}/tst_time_tmp
> + tst_time=$(cat ${B}/tst_time_tmp ${B}/tst_time64)
> +
> + rm ${B}/tst_time_tmp ${B}/tst_time64
> + echo "${tst_time}"
> +
> + # Install build test programs to the image
> + install -d ${D}${PTEST_PATH}/tests/glibc-ptest/
> +
> + for f in "${tst_time}"
> + do
> + cp -r ${f} ${D}${PTEST_PATH}/tests/glibc-ptest/
> + done
> +
> + install -d ${D}${PTEST_PATH}
> + cp ${WORKDIR}/run-ptest ${D}${PTEST_PATH}/
> +
> +}
> +
> +# 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
> b/meta/recipes-core/glibc/glibc/run-ptest new file mode 100755
> index 0000000000..f637986105
> --- /dev/null
> +++ b/meta/recipes-core/glibc/glibc/run-ptest
> @@ -0,0 +1,37 @@
> +#!/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})
> +
> +# Run tests supporting only 32 bit time
> +for i in ${tst_time_tmp}
> +do
> + $i >/dev/null 2>&1
> + output
> +done
> +
> +# Run tests supporting only 64 bit time
> +for i in ${tst_time64}
> +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
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2021-11-08 13:42 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-28 12:00 [PATCH v3] glibc: ptest: Add running glibc time related test suite (Y2038) with ptest Lukasz Majewski
2021-10-29 22:02 ` [OE-core] " Alexandre Belloni
2021-11-08 16:31 ` Lukasz Majewski
2021-11-09 9:20 ` Lee, Chee Yang
2021-11-09 14:21 ` Lukasz Majewski
2021-11-08 13:42 ` Lukasz Majewski [this message]
2021-11-08 13:47 ` Richard Purdie
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=20211108144217.5be89bde@ktm \
--to=lukma@denx.de \
--cc=adhemerval.zanella@linaro.org \
--cc=alexandre.belloni@bootlin.com \
--cc=nathan@nathanrossi.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=raj.khem@gmail.com \
--cc=richard.purdie@linuxfoundation.org \
/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