summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
diff options
context:
space:
mode:
authorHongzhi.Song <hongzhi.song@windriver.com>2018-08-01 01:32:39 -0700
committerKhem Raj <raj.khem@gmail.com>2018-08-02 11:23:03 -0700
commit146de1dfdac3e640af1b082b3a0c8bcf4ee8dad3 (patch)
tree3a9fc67faa78357e9d1b30b1c233a3b272f19e84 /meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
parentd3ae34eec2d312410da6cc1dd1c6fb85e8259261 (diff)
downloadmeta-openembedded-146de1dfdac3e640af1b082b3a0c8bcf4ee8dad3.tar.gz
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>
Diffstat (limited to 'meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb')
-rw-r--r--meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb104
1 files changed, 104 insertions, 0 deletions
diff --git a/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb b/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
new file mode 100644
index 0000000000..27d98a3049
--- /dev/null
+++ b/meta-oe/recipes-kernel/kernel-selftest/kernel-selftest.bb
@@ -0,0 +1,104 @@
1SUMMARY = "Kernel selftest for Linux"
2DESCRIPTION = "Kernel selftest for Linux"
3LICENSE = "GPLv2"
4
5LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7 \
6"
7
8# for musl libc
9SRC_URI_libc-musl += "file://userfaultfd.patch \
10 file://0001-bpf-test_progs.c-add-support-for-musllibc.patch \
11"
12
13PACKAGECONFIG ??= "bpf vm"
14
15PACKAGECONFIG[bpf] = ",,elfutils libcap libcap-ng rsync-native,"
16PACKAGECONFIG[vm] = ",,,libgcc bash"
17
18do_patch[depends] += "virtual/kernel:do_shared_workdir"
19
20inherit linux-kernel-base kernel-arch
21
22do_populate_lic[depends] += "virtual/kernel:do_patch"
23
24S = "${WORKDIR}/${BP}"
25
26# now we just test bpf and vm
27# we will append other kernel selftest in the future
28TEST_LIST = "bpf \
29 vm \
30"
31
32EXTRA_OEMAKE = '\
33 CROSS_COMPILE=${TARGET_PREFIX} \
34 ARCH=${ARCH} \
35 CC="${CC}" \
36 AR="${AR}" \
37 LD="${LD}" \
38'
39
40EXTRA_OEMAKE += "\
41 'DESTDIR=${D}' \
42"
43
44KERNEL_SELFTEST_SRC ?= "Makefile \
45 include \
46 tools \
47 scripts \
48 arch \
49 COPYING \
50"
51
52python __anonymous () {
53 import re
54
55 var = d.getVar('TARGET_CC_ARCH')
56 pattern = '_FORTIFY_SOURCE=[^0]'
57
58 if re.search(pattern, var):
59 d.appendVar('TARGET_CC_ARCH', " -O")
60}
61
62do_compile() {
63 for i in ${TEST_LIST}
64 do
65 oe_runmake -C ${S}/tools/testing/selftests/${i}
66 done
67}
68
69do_install() {
70 for i in ${TEST_LIST}
71 do
72 oe_runmake -C ${S}/tools/testing/selftests/${i} INSTALL_PATH=${D}/usr/kernel-selftest/${i} install
73 done
74
75 chown root:root -R ${D}/usr/kernel-selftest
76}
77
78do_configure() {
79 :
80}
81
82do_patch[prefuncs] += "copy_kselftest_source_from_kernel remove_clang_related"
83python copy_kselftest_source_from_kernel() {
84 sources = (d.getVar("KERNEL_SELFTEST_SRC") or "").split()
85 src_dir = d.getVar("STAGING_KERNEL_DIR")
86 dest_dir = d.getVar("S")
87 bb.utils.mkdirhier(dest_dir)
88 for s in sources:
89 src = oe.path.join(src_dir, s)
90 dest = oe.path.join(dest_dir, s)
91 if os.path.isdir(src):
92 oe.path.copytree(src, dest)
93 else:
94 bb.utils.copyfile(src, dest)
95}
96
97remove_clang_related() {
98 sed -i -e '/test_pkt_access/d' -e '/test_pkt_md_access/d' ${S}/tools/testing/selftests/bpf/Makefile
99}
100
101PACKAGE_ARCH = "${MACHINE_ARCH}"
102
103INHIBIT_PACKAGE_DEBUG_SPLIT="1"
104FILES_${PN} += "/usr/kernel-selftest"