mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-10-20 19:58:34 +00:00
kernel-selftest: Add a recipe on kernel selftest
The recipe builds the framework for kernel-selftest. Now, it just
contains two sets of testcase, bpf and vm. We will append more to
this recipe.
The following kernel config fragments must be manually enabled,
i.e. in local.conf, to use this test suite.
KERNEL_FEATURES_append += "features/bpf/bpf.scc \
cfg/debug-kselftest.scc \
features/hugetlb/hugetlb.scc \
"
Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
1 parent
d3ae34eec2
commit
146de1dfda
5 files changed
+833
No files matched your search
@@ -0,0 +1,104 @@
|
||||
SUMMARY = "Kernel selftest for Linux"
|
||||
DESCRIPTION = "Kernel selftest for Linux"
|
||||
LICENSE = "GPLv2"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7 \
|
||||
"
|
||||
|
||||
# for musl libc
|
||||
SRC_URI_libc-musl += "file://userfaultfd.patch \
|
||||
file://0001-bpf-test_progs.c-add-support-for-musllibc.patch \
|
||||
"
|
||||
|
||||
PACKAGECONFIG ??= "bpf vm"
|
||||
|
||||
PACKAGECONFIG[bpf] = ",,elfutils libcap libcap-ng rsync-native,"
|
||||
PACKAGECONFIG[vm] = ",,,libgcc bash"
|
||||
|
||||
do_patch[depends] += "virtual/kernel:do_shared_workdir"
|
||||
|
||||
inherit linux-kernel-base kernel-arch
|
||||
|
||||
do_populate_lic[depends] += "virtual/kernel:do_patch"
|
||||
|
||||
S = "${WORKDIR}/${BP}"
|
||||
|
||||
# now we just test bpf and vm
|
||||
# we will append other kernel selftest in the future
|
||||
TEST_LIST = "bpf \
|
||||
vm \
|
||||
"
|
||||
|
||||
EXTRA_OEMAKE = '\
|
||||
CROSS_COMPILE=${TARGET_PREFIX} \
|
||||
ARCH=${ARCH} \
|
||||
CC="${CC}" \
|
||||
AR="${AR}" \
|
||||
LD="${LD}" \
|
||||
'
|
||||
|
||||
EXTRA_OEMAKE += "\
|
||||
'DESTDIR=${D}' \
|
||||
"
|
||||
|
||||
KERNEL_SELFTEST_SRC ?= "Makefile \
|
||||
include \
|
||||
tools \
|
||||
scripts \
|
||||
arch \
|
||||
COPYING \
|
||||
"
|
||||
|
||||
python __anonymous () {
|
||||
import re
|
||||
|
||||
var = d.getVar('TARGET_CC_ARCH')
|
||||
pattern = '_FORTIFY_SOURCE=[^0]'
|
||||
|
||||
if re.search(pattern, var):
|
||||
d.appendVar('TARGET_CC_ARCH', " -O")
|
||||
}
|
||||
|
||||
do_compile() {
|
||||
for i in ${TEST_LIST}
|
||||
do
|
||||
oe_runmake -C ${S}/tools/testing/selftests/${i}
|
||||
done
|
||||
}
|
||||
|
||||
do_install() {
|
||||
for i in ${TEST_LIST}
|
||||
do
|
||||
oe_runmake -C ${S}/tools/testing/selftests/${i} INSTALL_PATH=${D}/usr/kernel-selftest/${i} install
|
||||
done
|
||||
|
||||
chown root:root -R ${D}/usr/kernel-selftest
|
||||
}
|
||||
|
||||
do_configure() {
|
||||
:
|
||||
}
|
||||
|
||||
do_patch[prefuncs] += "copy_kselftest_source_from_kernel remove_clang_related"
|
||||
python copy_kselftest_source_from_kernel() {
|
||||
sources = (d.getVar("KERNEL_SELFTEST_SRC") or "").split()
|
||||
src_dir = d.getVar("STAGING_KERNEL_DIR")
|
||||
dest_dir = d.getVar("S")
|
||||
bb.utils.mkdirhier(dest_dir)
|
||||
for s in sources:
|
||||
src = oe.path.join(src_dir, s)
|
||||
dest = oe.path.join(dest_dir, s)
|
||||
if os.path.isdir(src):
|
||||
oe.path.copytree(src, dest)
|
||||
else:
|
||||
bb.utils.copyfile(src, dest)
|
||||
}
|
||||
|
||||
remove_clang_related() {
|
||||
sed -i -e '/test_pkt_access/d' -e '/test_pkt_md_access/d' ${S}/tools/testing/selftests/bpf/Makefile
|
||||
}
|
||||
|
||||
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
||||
|
||||
INHIBIT_PACKAGE_DEBUG_SPLIT="1"
|
||||
FILES_${PN} += "/usr/kernel-selftest"
|
||||
Reference in new issue
Block a user