From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6828154244872273920 X-Received: by 2002:a65:6686:: with SMTP id b6mr14466230pgw.427.1589886128026; Tue, 19 May 2020 04:02:08 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a17:90a:4f04:: with SMTP id p4ls1355731pjh.3.canary-gmail; Tue, 19 May 2020 04:02:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx8cKkbXO0WzM70LNeqveQ14iNUmGmtTXjxmx5DDQImmF0uhyB9V5FoutcbEI/N2bkCHyo3 X-Received: by 2002:a17:90a:8c0c:: with SMTP id a12mr4493750pjo.149.1589886127468; Tue, 19 May 2020 04:02:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589886127; cv=none; d=google.com; s=arc-20160816; b=Butc2Ky7pEBt1bBOPbhsA8pRoItJYxXQm+xxlEH7MkyCNTfJpFUrcUdbfgVsn5tg2h cifum7/ec3JtmTs3UTpK5zdvHX0NuWJ4B0YT7Lvm8h8T8/RcNWkerScs0rajLoyMhoPC BBKNxdhiW8yYhh6jK6fYhh1qSWMm39n9v/YIIKabsbdRcdwhWfVhnW4q7WwLdLkeWUH6 aZu45ZEklo2mAGBIVZ/CZzvMrWx7E1c1TowvRM6cLUm0gsxLS9YnlV3EiRt2wRKSmo4S ydFBaZRaxtlNAjD0POakdr3d/54fkBrLuMaAHBjuTyOXWc/9D16ygaCRIhodA8CLPG7M 9Cuw== 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=VdTVjpVfnr8X+BnWZ0gxk9oRyRAvEF0DEH0roNsLHfs=; b=ZZ1o+wF80qsMhIlnc6L4s8woFs8XNJ3m9ifhmJiLC7ZMVWjE5V3BQw9zrqsFa0djlJ iLNbIoQXcpT6cmv1/NMEc1UeE1TE3c3d/Fj+dq6TFKlnJrjp8JOrxcNvyTcOMl3SaHR1 sn+hH/HiGcmIbNRCVdkvDp3HiqFHEec9ZjdJe8Z7u053kBoHqO670/BWQkagvlmJC6vr 9IyVB6UcOCCdx01y3K1cozJpASM7YLIwuilCarK9NV+DMUPAHunNX/Mqy3Xj51vLVeAJ xQRpppPUynQHqDTl0I9DLBk3VKvrKZZktmfJtKiTlVvtroZ5mt7ffeQPXccB1mSZwqep lBFg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of vijaikumar_kanagarajan@mentor.com designates 68.232.129.153 as permitted sender) smtp.mailfrom=Vijaikumar_Kanagarajan@mentor.com Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com. [68.232.129.153]) by gmr-mx.google.com with ESMTPS id kb2si51502pjb.1.2020.05.19.04.02.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 May 2020 04:02:07 -0700 (PDT) Received-SPF: pass (google.com: domain of vijaikumar_kanagarajan@mentor.com designates 68.232.129.153 as permitted sender) client-ip=68.232.129.153; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of vijaikumar_kanagarajan@mentor.com designates 68.232.129.153 as permitted sender) smtp.mailfrom=Vijaikumar_Kanagarajan@mentor.com IronPort-SDR: mXZKZ4S8wubXnXrHy4LDvKNzGY8N6znIOHPKqqF+/KqAxYkS/oWhoJiPZp6X9UNMTok3a9CppV J7n3J7B3nwoRNTxBkRgqQIhnq6SdZjQlgWBN6ImFjzTzp02Q9L1SV0c6MWMCC0VMYPifcyZIHW WKOxZlYltVKoo7XHCMGFr26PIgnCR3Kyfsiq526Akg7agV+V0337Pj5bHF0NIjL3ZzMKVIyAFS XyWvvvkmbCBz2jYUqrg95fQGQEl+vY6oPPNPouWXbddgbhCjD77+zwi7SwlB0tVo9iKeJ/W0yj r1A= X-IronPort-AV: E=Sophos;i="5.73,409,1583222400"; d="scan'208";a="51015609" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 19 May 2020 03:02:06 -0800 IronPort-SDR: l/YsDZS/RnmqxSUeuVWO3JLoNSXoTnwgb2Nm/b+ovvNXdf19Aq0LkHYkuwX6jABFXNF3Mrsngr KT+XFr++7ZzCQ+L5xivJTpeeh1E5zRlVvhHbNDOzKEE0WRWj0m8FcAJq8XamGxx/8JhUUpFV3u 0LqOVAk1rNx4/ME5fTEpibstRiYYTkbNQgtwSe/+ztqCC70Rid95hmP9AKJOpx/BSPx5SNXinv 6BBw5fHlXwww5if5ReWUrD4re/8cX7tSkwCcBtdRwa+M5Yi6rOb7ct+ntqZeOQoIzv8gC9G0VD CdQ= From: Vijai Kumar K To: CC: Vijai Kumar K Subject: [PATCH v2] Add recipe for linux kselftest Date: Tue, 19 May 2020 16:31:47 +0530 Message-ID: <20200519110147.14281-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-04.mgc.mentorg.com (147.34.90.204) To svr-orw-mbx-01.mgc.mentorg.com (147.34.90.201) X-TUID: UT7Z8MJW4F+i 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 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 ++++ .../kselftest/files/debian/rules | 41 +++++++++++++ meta/recipes-kernel/kselftest/kselftest.inc | 61 +++++++++++++++++++ 3 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/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..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/debian/rules b/meta/recipes-kernel/kselftest/files/debian/rules new file mode 100755 index 0000000..776d341 --- /dev/null +++ b/meta/recipes-kernel/kselftest/files/debian/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..46ca282 --- /dev/null +++ b/meta/recipes-kernel/kselftest/kselftest.inc @@ -0,0 +1,61 @@ +# 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:" + +# 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://debian" +S = "${WORKDIR}/linux-${PV}" + +KSELFTEST_TARGETS ?= "" +KSELFTEST_SKIP_TARGETS ?= "" +KSELFTEST_FORCE_TARGETS ?= "0" + +inherit dpkg + +do_prepare_build() { + cp -rf ${WORKDIR}/debian ${S}/debian + deb_create_compat + deb_create_control + deb_add_changelog +} + +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