From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6828154244872273920 X-Received: by 2002:a62:1c93:: with SMTP id c141mr8078155pfc.289.1590747337252; Fri, 29 May 2020 03:15:37 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:aa7:8e4e:: with SMTP id d14ls2224642pfr.0.gmail; Fri, 29 May 2020 03:15:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy2fKlxHaCs5O5JOX4/OsIVxh0LoBx7VoqG6n04ddSEUNtpAZOfWzMVP5I//VVJbpAx+459 X-Received: by 2002:a62:1807:: with SMTP id 7mr8263838pfy.18.1590747336746; Fri, 29 May 2020 03:15:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1590747336; cv=none; d=google.com; s=arc-20160816; b=npxakSzDWcxvn+QZL5fxjriLz7bjdtsMezAel4E8Q44s/+zbvIl4WSQRTg/MRwfMY+ WTT7aiOLb3RQWXc5l+N0F3RftqNKaL7V9LI7w2POmCcQbuPA/hlEFsQMOYQ0svmHjiXG U1GI9y+ExILvF29BxKsf4G4mXrnt4/9FvzmOmsmh+z+WbQW/TFzgPXk9uld39CT0PF5M EELyKDKVJHe17B07fMaMuTyfh9MuoipSnuRRvjAUE4WAayLNtns1+CCxFzrRb/46cVqp SO+EMc5YQ09gSM8+fyCTctSpcWPv5XIg4p/jG0+S0QIqp16ShmYiEpKXOMjmi4sDDS/5 bwGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:ironport-sdr:ironport-sdr; bh=UMi8uI5/Nta6W4mJlEXyOWl6R/0bLgEbYrHlnYzGumk=; b=sZetFM3X0uaSStne92IHsk+SYO5vkRePj+WxkEqJBWn+qse1hOoN6LfInmpLT82hH2 Ksv/Fpbd9zgcHpOrgzdvER01Wo7zT5ngpTiOlpGBrogme0BcTNcJLrlt1prHEBvA/TlK h5A/HcQzYHlP/xwUdu+UiIsP8bhSz5UDx3/t7BChvAzj0xojwZxE+vab7lyUVmKEGpIg Ixj77gQRpY6UI6p4eIvdNBrU6r5/NM5kKHllyRULJkVkYerAkpbYP58ooK/YixQySJn+ 41jmARR8bAsAYi7TlLLeC9wz04cd9MIkeSApH+m4/VbmeHBYyRY6UatVQjNr7HT66oy8 dv5Q== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of vijaikumar_kanagarajan@mentor.com designates 68.232.141.98 as permitted sender) smtp.mailfrom=Vijaikumar_Kanagarajan@mentor.com Return-Path: Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com. [68.232.141.98]) by gmr-mx.google.com with ESMTPS id b4si322276pjn.3.2020.05.29.03.15.36 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 29 May 2020 03:15:36 -0700 (PDT) Received-SPF: pass (google.com: domain of vijaikumar_kanagarajan@mentor.com designates 68.232.141.98 as permitted sender) client-ip=68.232.141.98; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of vijaikumar_kanagarajan@mentor.com designates 68.232.141.98 as permitted sender) smtp.mailfrom=Vijaikumar_Kanagarajan@mentor.com IronPort-SDR: K3eBju9b+ovh1h1hHIaN0f/xA7P+uY8fUsuNPVXM6Dw/jsFOoTixBJRGSSNS80GsJGZaK+vaJ2 yPAI1JJkcDKQ21D59ZRYDKAxlerJp+znNjqSTray1bZDKFa7QcWNnweTF9cAaqLmkY26GN0tFs ezh+6V+b366sqnX7IwfcjUAjBOoH77lWrlgy/CC0UdJqyCRkGZJfVQyio9dHYnyHJNBJH6M9cf lghsPz57vLHDqIUDxLs6oUMpomcB+FK75TsYc9dCCUfi0VCV/eaLKX8V5e/RRkwzGZGYnT/8cX /7E= X-IronPort-AV: E=Sophos;i="5.73,448,1583222400"; d="scan'208";a="49268738" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa2.mentor.iphmx.com with ESMTP; 29 May 2020 02:15:36 -0800 IronPort-SDR: MM3q5dhNli0whpLMvjJj2Gl+TWjCOo81jrrJqWedF5xPGblVtvC7ExD4SwhrE10CeeNky9+bbn a5u3dok687r/I94Lp8rPkX4X7i84tYy9aOdG6ZBOOYgrQ0H8FDmPUkG30o1YxnFBYLJ2fjDqxS RKEDr908JOz3TEkyDkzyR0bFu0ddCBU3jIGVPdI/kClolmYKYfUbcazH5JlLmqX7RSMgKCs416 f0px7x8uYQPrJSM/1I67rsVWy2FkhWUsm2J2yKKOsJwPY6lJFB26SGwv8X1HxF4ciNjjg8a4gg cPQ= From: Vijai Kumar K To: , CC: Vijai Kumar K Subject: [PATCH v3] Add recipe for linux kselftest Date: Fri, 29 May 2020 15:45:15 +0530 Message-ID: <20200529101515.6454-1-Vijaikumar_Kanagarajan@mentor.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain Return-Path: Vijaikumar_Kanagarajan@mentor.com X-ClientProxiedBy: SVR-ORW-MBX-06.mgc.mentorg.com (147.34.90.206) To svr-orw-mbx-01.mgc.mentorg.com (147.34.90.201) X-TUID: yoGviIC/WV6o 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 --- 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 .../recipes-core/images/isar-image-debug.bb | 2 + .../kselftest/kselftest_5.6.13.bb | 11 ++++ meta/recipes-kernel/kselftest/files/rules | 41 +++++++++++++ meta/recipes-kernel/kselftest/kselftest.inc | 59 +++++++++++++++++++ 4 files changed, 113 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-core/images/isar-image-debug.bb b/meta-isar/recipes-core/images/isar-image-debug.bb index 791d623..d0fe331 100644 --- a/meta-isar/recipes-core/images/isar-image-debug.bb +++ b/meta-isar/recipes-core/images/isar-image-debug.bb @@ -7,3 +7,5 @@ require recipes-core/images/isar-image-base.bb IMAGE_PREINSTALL += "gdb \ strace" + +IMAGE_INSTALL += "kselftest" 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..ca9b882 --- /dev/null +++ b/meta/recipes-kernel/kselftest/kselftest.inc @@ -0,0 +1,59 @@ +# 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, \ + libnuma-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 +} -- 2.17.1