From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6828154244872273920 X-Received: by 2002:a05:651c:1035:: with SMTP id w21mr10961684ljm.278.1589818007012; Mon, 18 May 2020 09:06:47 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a2e:b5d5:: with SMTP id g21ls1812816ljn.1.gmail; Mon, 18 May 2020 09:06:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwvkVhOjhjTB2u+AoFzAE/RGaE/zq1kh6YlGMaUYjT+mxxM0MyJQSFEn1J0FoM2DtEsuxyD X-Received: by 2002:a2e:9005:: with SMTP id h5mr4294650ljg.246.1589818005923; Mon, 18 May 2020 09:06:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589818005; cv=none; d=google.com; s=arc-20160816; b=TYpcUvQIC60BINvVauay4U23zS9Wg84OjebpA+0Vh8LrWHFwYaYrByjMfP3m4jCu0J MSsbQ91pBAdAFcKsHeQaRmvanhhFI7qiJerHpdzgd6KAqzHKpjBY/hiJ5elINQs4/kq8 7X6LC5CdM6441w7mCTw4ggNCp1785qkjNBVXqpvYO4vrB7NtgbNGbqbd+6fJe27/CBWi L7Spl3DLNvlzihXWE8lKGsg9S4TGFHlqTIAEtOiHrbveEHfVJAQPdTnHbmqph7TpTGuS b98gAvT1gSCmfFeY9VjTxICCDyjpApVkjxmHerGI8mF/gk2qbPgrUbxlWHrUoyzBM6tf 2a/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:from:references:cc:to:subject; bh=QSii5px/wNk125KIc04du9S+iSfs/fR2d9hMb6/6+Gg=; b=BLRgzzTDAeEqkjxyD/0F/acV2eAuUXUkF8qv/DjH0nJbIzBLdDcVO+4Zm9u/goFBCT qSmBD15JHsxPnyCkipTVhd/RUqKuJ59bEVqxL6mFLaYuHDNkg5POFWkM/NLzfy9ddGc6 H35Zo5aCx/9taEffBrggqABH2JdLGbayvSyzSEn5MTMBKZzTU23XokB/rOT1krJVZWiq dRyQjfzjDpR++EqlDb3ScdXQzfZuOJNDiEIg7ntiJbJAycBgOrNjlPGmCJ6KJ54PGcXw oL1FctVaiQF9qk2O9PloKbFS6zP+oGcWGS6FjPa+Oj94pAkX89dlPqlotQCaKgKcoL9b Skfw== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from david.siemens.de (david.siemens.de. [192.35.17.14]) by gmr-mx.google.com with ESMTPS id 130si206785lfi.3.2020.05.18.09.06.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 18 May 2020 09:06:45 -0700 (PDT) Received-SPF: pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) client-ip=192.35.17.14; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of jan.kiszka@siemens.com designates 192.35.17.14 as permitted sender) smtp.mailfrom=jan.kiszka@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by david.siemens.de (8.15.2/8.15.2) with ESMTPS id 04IG6ixR013939 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 18 May 2020 18:06:44 +0200 Received: from [167.87.94.217] ([167.87.94.217]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id 04IG6hvG006189; Mon, 18 May 2020 18:06:44 +0200 Subject: Re: [PATCH] Add recipe for linux kselftest To: vijai kumar Cc: isar-users References: <20200518120526.8279-1-Vijaikumar_Kanagarajan@mentor.com> <42ea0194-db8d-09eb-2157-2b1af59bcad9@siemens.com> From: Jan Kiszka Message-ID: Date: Mon, 18 May 2020 18:06:43 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-TUID: vD+32Sqop7k0 On 18.05.20 17:57, vijai kumar wrote: > On Mon, May 18, 2020 at 8:43 PM Jan Kiszka wrote: >> >> On 18.05.20 14:05, Vijai Kumar K wrote: >>> 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 >>> --- >>> .../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, \ >>> + " >> >> Are all of these deps specific to the version, or would it make sense to >> extract some common ones (or even all?) to kselftest.inc? > > On the limited versions of Linux I have tested, this seems common when > you build ALL > test cases. This list is a collection of dependencies needed by ALL > the testcases(TARGETS) > that kselftest builds. > > We could also specify the limited list of test cases you want to > compile using "TARGETS=" & "SKIP_TARGETS=" > variables. > > If you just compiling for say "size" test case you may not need any > of these. That is the > reason I had these depends in the bb. The common ones like bison, flex > and rsync are there kselftest.inc > If you can identify some dependency clusters for specific test case set, adding them automatically when selecting a set would be nice. Otherwise, I would simply go for "add them all". Background is that only little information should be left in the example & test layer meta-isar. >> >>> + >>> +SRC_URI += "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${PV}.tar.xz" >>> +SRC_URI[sha256sum] = "f125d79c8f6974213638787adcad6b575bbd35a05851802fd83f622ec18ff987" >>> + >>> +S = "${WORKDIR}/linux-${PV}" >> >> The SRC_URI and S are likely also version-independent. > > Sorry, but I am not getting this. Can you please elaborate? > Move them to kselftest.inc. Reduces the boilerplate one has to add to an own recipe. >> >>> 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 Tue, 6 Feb 2018 00:00:00 +0000 >> >> deb_add_changelog? > > I will have a look into that API. Will address in v2. > >> >>> 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 >>> + >>> +Package: ${PN} >>> +Architecture: any >>> +Description: ${DESCRIPTION} >> >> This looks to like deb_create_control could generate it as well. If you >> like, you could still patch the setion afterward from misc to kernel. > > Will have a look and possibly address in v2. > >> >>> 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" >> >> Why that? Please leave a comment so that it can be revisited in future >> releases, or make version dependent (-> move to .bb recipe). > > I remember having issues with some test cases failing in cross > compilation. Added this to make sure the deb has > consistent working testcases in ISAR cross compilation setup. I have > to look back at my notes on what failed. > Will have a look and take care of this in v2. > Perfect. Thanks, Jan > Thanks, > Vijai Kumar K > >> >>> + >>> +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 >>> +} >>> >> >> Jan >> >> -- >> Siemens AG, Corporate Technology, CT RDA IOT SES-DE >> Corporate Competence Center Embedded Linux >> >> -- >> You received this message because you are subscribed to the Google Groups "isar-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. >> To view this discussion on the web visit https://groups.google.com/d/msgid/isar-users/42ea0194-db8d-09eb-2157-2b1af59bcad9%40siemens.com. > -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux