[oe] [meta-oe][PATCH] kselftest: Add a recipe on kernel selftest

Khem Raj raj.khem at gmail.com
Sun Jul 22 07:05:42 UTC 2018


It fails for rpi3 for both musl and glibc

glibc

| Auto-detecting system features:
| ...                        libelf: [ ^[[31mOFF^[[m ]
| ...                           bpf: [ ^[[31mOFF^[[m ]
|
| No libelf found
| make[1]: *** [Makefile:216: elfdep] Error 255
| make[1]: *** Waiting for unfinished jobs....
| BPF API too old
| make[1]: *** [Makefile:219: bpfdep] Error 255

musl

|                  from test_progs.c:19:
| /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-musleabi/kernel-selftest/1.0-r0/recipe-sysroot/usr/include/linux/swab.h:161:8:
error: unknown type name '__always_inline'
|  static __always_inline __u16 __swab16p(const __u16 *p)
|         ^~~~~~~~~~~~~~~
| /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-musleabi/kernel-selftest/1.0-r0/recipe-sysroot/usr/include/linux/swab.h:161:30:
error: expected '=', ',', ';', 'asm' or '__attribute__' before
'__swab16p'
|  static __always_inline __u16 __swab16p(const __u16 *p)
|                               ^~~~~~~~~
| /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-musleabi/kernel-selftest/1.0-r0/recipe-sysroot/usr/include/linux/swab.h:174:8:
error: unknown type name '__always_inline'
|  static __always_inline __u32 __swab32p(const __u32 *p)
|         ^~~~~~~~~~~~~~~
| /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-musleabi/kernel-selftest/1.0-r0/recipe-sysroot/usr/include/linux/swab.h:174:30:
error: expected '=', ',', ';', 'asm' or '__attribute__' before
'__swab32p'
|  static __always_inline __u32 __swab32p(const __u32 *p)
|                               ^~~~~~~~~
| /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-musleabi/kernel-selftest/1.0-r0/recipe-sysroot/usr/include/linux/swab.h:187:8:
error: unknown type name '__always_inline'
|  static __always_inline __u64 __swab64p(const __u64 *p)
|         ^~~~~~~~~~~~~~~
| /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-musleabi/kernel-selftest/1.0-r0/recipe-sysroot/usr/include/linux/swab.h:187:30:
error: expected '=', ',', ';', 'asm' or '__attribute__' before
'__swab64p'
|  static __always_inline __u64 __swab64p(const __u64 *p)
|                               ^~~~~~~~~
| /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-musleabi/kernel-selftest/1.0-r0/recipe-sysroot/usr/include/linux/swab.h:242:23:
error: expected ';' before 'void'
|  static __always_inline void __swab32s(__u32 *p)
|                        ^~~~~
|                        ;
| /mnt/a/oe/build/tmp/work/raspberrypi3-bec-linux-musleabi/kernel-selftest/1.0-r0/recipe-sysroot/usr/include/linux/swab.h:255:23:
error: expected ';' before 'void'
|  static __always_inline void __swab64s(__u64 *p)
|                        ^~~~~
|                        ;
On Thu, Jul 19, 2018 at 11:04 PM Hongzhi, Song
<hongzhi.song at windriver.com> wrote:
>
> Hi Raj,
>
> Even if enable ptest, the error can't be reproduced. In fact, the recipe
>
> doesn't inherit ptest, it just compiles programs and output them, which
>
> will be used by other oe modules(oe-selftest or ptest), to a custom
> directory.
>
>
> I know that you are busy with your job. And my request will add your
> workload
>
> , which is not my intention. But it is really hard for me to reproduce
> your error.~_~
>
>
> So I sincerely hope that could I get your whole environment, including
> your metadata
>
> and other files? I think docker would be an easy way.
>
>
> Could you help me again? If I get your image, I think I will be
> confident to fix the error.
>
>
> --Hongzhi
>
>
> On 2018年07月20日 00:21, Khem Raj wrote:
> > can you try with ptest enabled in DISTRO_FEATURES
> > On Wed, Jul 18, 2018 at 12:57 AM Hongzhi, Song
> > <hongzhi.song at windriver.com> wrote:
> >> Hi Raj,
> >>
> >> I have try my best to reproduce your error, but I failed.
> >>
> >> Could you help me to do the build in docker and share the dock image
> >> with us. Or maybe you have a better method.
> >>
> >>
> >> Thanks,
> >>
> >> Hongzhi
> >>
> >>
> >> On 2018年07月10日 12:11, Khem Raj wrote:
> >>> This is failing to build here
> >>>
> >>> | DEBUG: Executing shell function do_compile
> >>> | NOTE: make -j 16 CROSS_COMPILE=x86_64-bec-linux- ARCH=x86
> >>> CC=x86_64-bec-linux-gcc  -m64 -march=core2 -mtune=core2 -msse3
> >>> -mfpmath=sse -fstack-protector-strong  -D_FORTIFY_SOURCE=2 -Wformat
> >>> -Wformat-security -Werror=format-security
> >>> --sysroot=/mnt/a/oe/build/tmp/work/qemux86_64-bec-linux/kernel-selftest/1.0-r0/recipe-sysroot
> >>> AR=x86_64-bec-linux-ar LD=x86_64-bec-linux-ld
> >>> --sysroot=/mnt/a/oe/build/tmp/work/qemux86_64-bec-linux/kernel-selftest/1.0-r0/recipe-sysroot
> >>>     DESTDIR=/mnt/a/oe/build/tmp/work/qemux86_64-bec-linux/kernel-selftest/1.0-r0/image
> >>> -C /mnt/a/oe/build/tmp/work/qemux86_64-bec-linux/kernel-selftest/1.0-r0/kernel-selftest-1.0/tools/testing/selftests/bpf
> >>> | make: Entering directory
> >>> '/mnt/a/oe/build/tmp/work/qemux86_64-bec-linux/kernel-selftest/1.0-r0/kernel-selftest-1.0/tools/testing/selftests/bpf'
> >>> | Makefile:19: *** recipe commences before first target.  Stop.
> >>> | make: Leaving directory
> >>> '/mnt/a/oe/build/tmp/work/qemux86_64-bec-linux/kernel-selftest/1.0-r0/kernel-selftest-1.0/tools/testing/selftests/bpf'
> >>> | ERROR: oe_runmake failed
> >>> On Sat, Jul 7, 2018 at 11:05 PM Hongzhi.Song <hongzhi.song at windriver.com> wrote:
> >>>> The recipe builds the framework for kernel-selftest. Now, it just
> >>>> contains two sets of testcase, bpf and vm. We are appending others
> >>>> to the recipe.
> >>>>
> >>>> It needs some features which will be written into relevant recipe.
> >>>> But now, you should add them to conf/local.conf manually.
> >>>> KERNEL_FEATURES_append += "features/bpf/bpf.scc"
> >>>>
> >>>> Signed-off-by: Dengke Du <dengke.du at windriver.com>
> >>>> Signed-off-by: Hongzhi.Song <hongzhi.song at windriver.com>
> >>>> ---
> >>>>    .../recipes-kernel/kselftest/kernel-selftest.bb    | 94 ++++++++++++++++++++++
> >>>>    1 file changed, 94 insertions(+)
> >>>>    create mode 100644 meta-oe/recipes-kernel/kselftest/kernel-selftest.bb
> >>>>
> >>>> diff --git a/meta-oe/recipes-kernel/kselftest/kernel-selftest.bb b/meta-oe/recipes-kernel/kselftest/kernel-selftest.bb
> >>>> new file mode 100644
> >>>> index 0000000..6f20bd3
> >>>> --- /dev/null
> >>>> +++ b/meta-oe/recipes-kernel/kselftest/kernel-selftest.bb
> >>>> @@ -0,0 +1,94 @@
> >>>> +SUMMARY = "Kernel selftest for Linux"
> >>>> +DESCRIPTION = "Kernel selftest for Linux"
> >>>> +LICENSE = "GPLv2"
> >>>> +
> >>>> +# for bpf and vm
> >>>> +DEPENDS = " \
> >>>> +    elfutils \
> >>>> +    libcap \
> >>>> +    libcap-ng \
> >>>> +    fuse \
> >>>> +    util-linux \
> >>>> +    rsync-native \
> >>>> +"
> >>>> +# for vm
> >>>> +RDEPENDS_${PN} += "libgcc \
> >>>> +                   bash \
> >>>> +"
> >>>> +
> >>>> +do_configure[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 \
> >>>> +"
> >>>> +
> >>>> +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}/opt/kselftest/${i} install
> >>>> +    done
> >>>> +
> >>>> +    chown root:root  -R ${D}/opt/kselftest
> >>>> +}
> >>>> +
> >>>> +do_configure() {
> >>>> +    :
> >>>> +}
> >>>> +
> >>>> +do_configure[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} += "/opt/kselftest/"
> >>>> --
> >>>> 2.8.1
> >>>>
> >>>> --
> >>>> _______________________________________________
> >>>> Openembedded-devel mailing list
> >>>> Openembedded-devel at lists.openembedded.org
> >>>> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
>



More information about the Openembedded-devel mailing list