blob: bb6ef0616234230b30f9724d2245827b2ef0740d [file] [log] [blame]
Patrick Williams92b42cb2022-09-03 06:53:57 -05001require glibc_${PV}.bb
2require glibc-tests.inc
3
4inherit ptest features_check
5REQUIRED_DISTRO_FEATURES = "ptest"
6
Andrew Geissler87f5cff2022-09-30 13:13:31 -05007SRC_URI += "\
Patrick Williams92b42cb2022-09-03 06:53:57 -05008 file://run-ptest \
9"
10
11SUMMARY = "glibc tests to be run with ptest"
12
13# Erase some variables already set by glibc_${PV}
14python __anonymous() {
15 # Remove packages provided by glibc build, we only need a subset of them
16 d.setVar("PACKAGES", "${PN} ${PN}-ptest")
17
18 d.setVar("PROVIDES", "${PN} ${PN}-ptest")
Patrick Williams92b42cb2022-09-03 06:53:57 -050019
20 bbclassextend = d.getVar("BBCLASSEXTEND").replace("nativesdk", "").strip()
21 d.setVar("BBCLASSEXTEND", bbclassextend)
22 d.setVar("RRECOMMENDS", "")
23 d.setVar("SYSTEMD_SERVICE:nscd", "")
24 d.setVar("SYSTEMD_PACKAGES", "")
25}
26
27# Remove any leftovers from original glibc recipe
28RPROVIDES:${PN} = "${PN}"
29RRECOMMENDS:${PN} = ""
30RDEPENDS:${PN} = " glibc sed"
Andrew Geissler517393d2023-01-13 08:55:19 -060031RDEPENDS:${PN}-ptest = "${PN}"
Andrew Geissler87f5cff2022-09-30 13:13:31 -050032DEPENDS += "sed"
Patrick Williams92b42cb2022-09-03 06:53:57 -050033
34export oe_srcdir="${exec_prefix}/src/debug/glibc/${PV}/"
35
36# Just build tests for target - do not run them
37do_check:append () {
38 oe_runmake -i check run-built-tests=no
39}
40addtask do_check after do_compile before do_install_ptest_base
41
42glibc_strip_build_directory () {
43 # Delete all non executable files from build directory
44 find ${B} ! -executable -type f -delete
45
46 # Remove build dynamic libraries and links to them as
47 # those are already installed in the target device
48 find ${B} -type f -name "*.so" -delete
49 find ${B} -type l -name "*.so*" -delete
50
51 # Remove headers (installed with glibc)
52 find ${B} -type f -name "*.h" -delete
53
54 find ${B} -type f -name "isomac" -delete
55 find ${B} -type f -name "annexc" -delete
56}
57
58do_install_ptest_base () {
59 glibc_strip_build_directory
60
61 ls -r ${B}/*/*-time64 > ${B}/tst_time64
62
63 # Remove '-time64' suffix - those tests are also time related
64 sed -e "s/-time64$//" ${B}/tst_time64 > ${B}/tst_time_tmp
65 tst_time=$(cat ${B}/tst_time_tmp ${B}/tst_time64)
66
67 rm ${B}/tst_time_tmp ${B}/tst_time64
68 echo "${tst_time}"
69
70 # Install build test programs to the image
71 install -d ${D}${PTEST_PATH}/tests/glibc-ptest/
72
73 for f in "${tst_time}"
74 do
75 cp -r ${f} ${D}${PTEST_PATH}/tests/glibc-ptest/
76 done
77
78 install -d ${D}${PTEST_PATH}
79 cp ${WORKDIR}/run-ptest ${D}${PTEST_PATH}/
80
81}
82
83# The datadir directory is required to allow core (and reused)
84# glibc cleanup function to finish correctly, as this directory
85# is not created for ptests
86stash_locale_package_cleanup:prepend () {
87 mkdir -p ${PKGD}${datadir}
88}
89
90stash_locale_sysroot_cleanup:prepend () {
91 mkdir -p ${SYSROOT_DESTDIR}${datadir}
92}
93
94# Prevent the do_package() task to set 'libc6' prefix
95# for glibc tests related packages
96python populate_packages:prepend () {
97 if d.getVar('DEBIAN_NAMES'):
98 d.setVar('DEBIAN_NAMES', '')
99}
100
101FILES:${PN} = "${PTEST_PATH}/* /usr/src/debug/${PN}/*"
102
103EXCLUDE_FROM_SHLIBS = "1"
104
105# Install debug data in .debug and sources in /usr/src/debug
106# It is more handy to have _all_ the sources and symbols in one
107# place (package) as this recipe will be used for validation and
108# debugging.
109PACKAGE_DEBUG_SPLIT_STYLE = ".debug"
110
111# glibc test cases violate by default some Yocto/OE checks (staticdev,
112# textrel)
113# 'debug-files' - add everything (including debug) into one package
114# (no need to install/build *-src package)
115INSANE_SKIP:${PN} += "staticdev textrel debug-files rpaths"
116
117deltask do_stash_locale
118do_install[noexec] = "1"
119do_populate_sysroot[noexec] = "1"