blob: 8c7ecf89ba99da4debf214b815d968ce7e4219da [file] [log] [blame]
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("BBCLASSEXTEND", "")
d.setVar("RRECOMMENDS", "")
d.setVar("SYSTEMD_SERVICE:nscd", "")
d.setVar("SYSTEMD_PACKAGES", "")
}
# Remove any leftovers 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"