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_TARETS can be set using the appropriate
KSELFTEST_* recipe variable.
Signed-off-by: Vijai Kumar K <
Vijaikumar_...@mentor.com>
---
.../kselftest/
kselftest_5.6.13.bb | 27 ++++++++++++
.../kselftest/files/debian/changelog.tmpl | 5 +++
.../kselftest/files/debian/compat | 1 +
.../kselftest/files/debian/control.tmpl | 10 +++++
.../kselftest/files/debian/rules | 27 ++++++++++++
meta/recipes-kernel/kselftest/kselftest.inc | 44 +++++++++++++++++++
6 files changed, 114 insertions(+)
create mode 100644 meta-isar/recipes-kernel/kselftest/
kselftest_5.6.13.bb
create mode 100644 meta/recipes-kernel/kselftest/files/debian/changelog.tmpl
create mode 100644 meta/recipes-kernel/kselftest/files/debian/compat
create mode 100644 meta/recipes-kernel/kselftest/files/debian/control.tmpl
create mode 100755 meta/recipes-kernel/kselftest/files/debian/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..3303742
--- /dev/null
+++ b/meta-isar/recipes-kernel/kselftest/
kselftest_5.6.13.bb
@@ -0,0 +1,27 @@
+# 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
+
+KSELFTEST_DEPENDS += " \
+ libelf-dev:native, \
+ libcap-ng-dev:native, \
+ libpopt-dev:native, \
+ libcap-dev:native, \
+ libmount-dev:native, \
+ libnuma-dev:native, \
+ libfuse-dev:native, \
+ libmnl-dev:native, \
+ pkg-config, \
+ clang, \
+ llvm, \
+ "
+
+SRC_URI += "
https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${PV}.tar.xz"
+SRC_URI[sha256sum] = "f125d79c8f6974213638787adcad6b575bbd35a05851802fd83f622ec18ff987"
+
+S = "${WORKDIR}/linux-${PV}"
diff --git a/meta/recipes-kernel/kselftest/files/debian/changelog.tmpl b/meta/recipes-kernel/kselftest/files/debian/changelog.tmpl
new file mode 100644
index 0000000..6e59e06
--- /dev/null
+++ b/meta/recipes-kernel/kselftest/files/debian/changelog.tmpl
@@ -0,0 +1,5 @@
+${PN} (${PV}) unstable; urgency=low
+
+ * Generated package.
+
+ -- ISAR project <
isar-...@googlegroups.com> Tue, 6 Feb 2018 00:00:00 +0000
diff --git a/meta/recipes-kernel/kselftest/files/debian/compat b/meta/recipes-kernel/kselftest/files/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/meta/recipes-kernel/kselftest/files/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/meta/recipes-kernel/kselftest/files/debian/control.tmpl b/meta/recipes-kernel/kselftest/files/debian/control.tmpl
new file mode 100644
index 0000000..de5d315
--- /dev/null
+++ b/meta/recipes-kernel/kselftest/files/debian/control.tmpl
@@ -0,0 +1,10 @@
+Source: ${PN}
+Section: kernel
+Priority: optional
+Build-Depends: ${KSELFTEST_DEPENDS}
+Standards-Version: 3.9.6
+Maintainer: ISAR project <
isar-...@googlegroups.com>
+
+Package: ${PN}
+Architecture: any
+Description: ${DESCRIPTION}
diff --git a/meta/recipes-kernel/kselftest/files/debian/rules b/meta/recipes-kernel/kselftest/files/debian/rules
new file mode 100755
index 0000000..6f49138
--- /dev/null
+++ b/meta/recipes-kernel/kselftest/files/debian/rules
@@ -0,0 +1,27 @@
+#!/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
+
+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..12ebec9
--- /dev/null
+++ b/meta/recipes-kernel/kselftest/kselftest.inc
@@ -0,0 +1,44 @@
+# Kselftest package for Linux
+#
+# This software is a part of ISAR.
+# Copyright (c) Mentor Graphics, a Siemens Business, 2020
+#
+# SPDX-License-Identifier: MIT
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+DESCRIPTION ?= "Kernel selftests from Linux kernel ${PV}"
+
+ISAR_CROSS_COMPILE = "0"
+
+SRC_URI += "file://debian"
+KSELFTEST_DEPENDS ?= " \
+ rsync, \
+ flex, \
+ bison, \
+ "
+KSELFTEST_TARGETS ?= ""
+KSELFTEST_SKIP_TARGETS ?= ""
+KSELFTEST_FORCE_TARGETS ?= "0"
+
+inherit dpkg
+
+TEMPLATE_FILES += "debian/control.tmpl \
+ debian/changelog.tmpl"
+TEMPLATE_VARS += "KSELFTEST_DEPENDS"
+
+do_prepare_build() {
+ cp -rf ${WORKDIR}/debian ${S}/debian
+}
+
+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
+}
--
2.17.1