From: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
To: <isar-users@googlegroups.com>
Cc: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
Subject: [PATCH v4] Add recipe for linux kselftest
Date: Mon, 2 Nov 2020 12:55:11 +0530 [thread overview]
Message-ID: <20201102072511.26675-1-Vijaikumar_Kanagarajan@mentor.com> (raw)
Kselftest is a set of unit and regression tests under the
tools/testing/selftests/ directory of the Linux kernel. These are used
for testing individual code paths in the kernel.
Kselftest is not debianized and is not available as part of the official
Debian repository.
This patch provides a recipe to build kselftest from the linux source of
your choice.
Sometimes developers/testers tend to use the latest version of selftests
from Linux upstream stable releases for testing and hence the need for a
separate recipe instead of being part of the linux recipe of ISAR.
Some kselftest test cases build are known to break in certain linux
versions, this has to be addressed upstream. Right now kselftest build
succeeds even if atleast one of the testcase case build succeeds.
You can change that by setting KSELFTEST_FORCE_TARGETS=1.
TARGETS, TARGETS_SKIP, FORCE_TARGETS can be set using the appropriate
KSELFTEST_* recipe variable.
Signed-off-by: Vijai Kumar K <Vijaikumar_Kanagarajan@mentor.com>
---
Changes since v3:
- Remove libnuma-dev. Since it is not available in stretch.
- remove entry in isar-image-debug. Added to CI image using IMAGE_INSTALL.
Changes since v2:
- Use deb_debianize instead of individual calls for changelog, compat & control.
- Add package to isar-image-debug
Changes since v1:
- Addressed review comments in v1
- Used debianize APIs for control, compat and changelog.
- Moved Depends & S definitions to include file.
- Added cross compilation bits in rules.
- Change clang, llvm to clang:native & llvm:native
.../kselftest/kselftest_5.6.13.bb | 11 ++++
meta/recipes-kernel/kselftest/files/rules | 41 +++++++++++++
meta/recipes-kernel/kselftest/kselftest.inc | 58 +++++++++++++++++++
scripts/ci_build.sh | 1 +
4 files changed, 111 insertions(+)
create mode 100644 meta-isar/recipes-kernel/kselftest/kselftest_5.6.13.bb
create mode 100755 meta/recipes-kernel/kselftest/files/rules
create mode 100644 meta/recipes-kernel/kselftest/kselftest.inc
diff --git a/meta-isar/recipes-kernel/kselftest/kselftest_5.6.13.bb b/meta-isar/recipes-kernel/kselftest/kselftest_5.6.13.bb
new file mode 100644
index 0000000..0c9818a
--- /dev/null
+++ b/meta-isar/recipes-kernel/kselftest/kselftest_5.6.13.bb
@@ -0,0 +1,11 @@
+# Kselftest package
+#
+# This software is a part of ISAR.
+# Copyright (c) Mentor Graphics, a Siemens business, 2020
+#
+# SPDX-License-Identifier: MIT
+
+require recipes-kernel/kselftest/kselftest.inc
+
+SRC_URI += "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${PV}.tar.xz"
+SRC_URI[sha256sum] = "f125d79c8f6974213638787adcad6b575bbd35a05851802fd83f622ec18ff987"
diff --git a/meta/recipes-kernel/kselftest/files/rules b/meta/recipes-kernel/kselftest/files/rules
new file mode 100755
index 0000000..776d341
--- /dev/null
+++ b/meta/recipes-kernel/kselftest/files/rules
@@ -0,0 +1,41 @@
+#!/usr/bin/make -f
+
+# Debian rules for Kselftest build
+#
+# This software is a part of ISAR.
+# Copyright (c) Mentor, A Siemens Business
+#
+# SPDX-License-Identifier: MIT
+
+deb_top_dir:=$(CURDIR)/debian
+kselftest_install_dir :=$(deb_top_dir)/kselftest/usr/libexec/kselftest
+export CROSS_COMPILE=$(DEB_HOST_GNU_TYPE)-
+
+ifeq ($(DEB_HOST_GNU_CPU), arm)
+export ARCH=arm
+endif
+ifeq ($(DEB_HOST_GNU_CPU), aarch64)
+export ARCH=arm64
+endif
+ifeq ($(DEB_HOST_GNU_CPU), riscv64)
+export ARCH=riscv
+endif
+ifneq (,$(findstring 86,$(DEB_HOST_GNU_CPU)))
+export ARCH=x86
+endif
+
+PARALLEL_BUILD=-j $(shell echo $$(($$(nproc) * 2)))
+
+override_dh_auto_build:
+ $(MAKE) defconfig
+ $(MAKE) $(PARALLEL_BUILD) -C tools/testing/selftests/ ${KSELFTEST_ARGS}
+
+override_dh_auto_install:
+ mkdir -p ${kselftest_install_dir}
+ cd tools/testing/selftests/ && KSFT_INSTALL_PATH=${kselftest_install_dir} $(MAKE) $(PARALLEL_BUILD) install ${KSELFTEST_ARGS}
+
+override_dh_auto_clean:
+ rm -rf ${deb_top_dir}/kselftest/
+
+%:
+ CFLAGS= LDFLAGS= dh $@ --parallel
diff --git a/meta/recipes-kernel/kselftest/kselftest.inc b/meta/recipes-kernel/kselftest/kselftest.inc
new file mode 100644
index 0000000..2a76028
--- /dev/null
+++ b/meta/recipes-kernel/kselftest/kselftest.inc
@@ -0,0 +1,58 @@
+# Kselftest package for Linux
+#
+# This software is a part of ISAR.
+# Copyright (c) Mentor Graphics, a Siemens Business, 2020
+#
+# SPDX-License-Identifier: MIT
+
+inherit dpkg
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+# Some test-cases like memfd compilation failed in cross-compilation.
+# Force native compilation for now to have consistent output across
+# ISAR native/cross compilation setups.
+ISAR_CROSS_COMPILE = "0"
+
+DESCRIPTION ?= "Kernel selftests from Linux kernel ${PV}"
+
+DEBIAN_BUILD_DEPENDS ?= " \
+ rsync, \
+ flex, \
+ bison, \
+ fuse, \
+ libelf-dev:native, \
+ libcap-ng-dev:native, \
+ libpopt-dev:native, \
+ libcap-dev:native, \
+ libmount-dev:native, \
+ libfuse-dev:native, \
+ libmnl-dev:native, \
+ pkg-config, \
+ clang:native, \
+ llvm:native, \
+"
+
+SRC_URI += "file://rules"
+S = "${WORKDIR}/linux-${PV}"
+
+KSELFTEST_TARGETS ?= ""
+KSELFTEST_SKIP_TARGETS ?= ""
+KSELFTEST_FORCE_TARGETS ?= "0"
+
+do_prepare_build[cleandirs] += "${S}/debian"
+do_prepare_build() {
+ deb_debianize
+}
+
+dpkg_runbuild_prepend() {
+ if [ -n "${KSELFTEST_TARGETS}" ];then
+ export KSELFTEST_ARGS="TARGETS=\"${KSELFTEST_TARGETS}\""
+ fi
+ if [ ${KSELFTEST_FORCE_TARGETS} -eq 1 ];then
+ export KSELFTEST_ARGS="${KSELFTEST_ARGS} FORCE_TARGETS=1"
+ fi
+ if [ -n "${KSELFTEST_SKIP_TARGETS}" ];then
+ export KSELFTEST_ARGS="${KSELFTEST_ARGS} SKIP_TARGETS=\"${KSELFTEST_SKIP_TARGETS}\""
+ fi
+}
diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh
index c0a032e..2d06543 100755
--- a/scripts/ci_build.sh
+++ b/scripts/ci_build.sh
@@ -143,6 +143,7 @@ cat >>conf/local.conf <<EOF
ISAR_ENABLE_COMPAT_ARCH_amd64 = "1"
ISAR_ENABLE_COMPAT_ARCH_arm64 = "1"
ISAR_ENABLE_COMPAT_ARCH_debian-stretch_amd64 = "0"
+IMAGE_INSTALL += "kselftest"
EOF
if [ -n "$CROSS_BUILD" ]; then
--
2.17.1
next reply other threads:[~2020-11-02 10:39 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-02 7:25 Vijai Kumar K [this message]
2020-11-04 20:44 ` Henning Schild
2020-11-05 6:17 ` vijaikumar....@gmail.com
2020-11-06 13:38 ` Henning Schild
2020-11-26 18:38 ` vijaikumar....@gmail.com
2021-02-08 15:33 ` Anton Mikanovich
2021-02-10 6:34 ` vijaikumar....@gmail.com
2021-02-10 10:21 ` Henning Schild
2021-02-15 15:16 ` Baurzhan Ismagulov
2021-02-18 5:11 ` vijaikumar....@gmail.com
2021-03-30 9:11 ` vijai kumar
2021-04-22 11:49 ` vijaikumar....@gmail.com
2021-04-26 13:40 ` Baurzhan Ismagulov
2021-05-06 12:20 ` Anton Mikanovich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201102072511.26675-1-Vijaikumar_Kanagarajan@mentor.com \
--to=vijaikumar_kanagarajan@mentor.com \
--cc=isar-users@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox