From patchwork Fri Apr 30 06:02:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "MOESSBAUER, Felix" X-Patchwork-Id: 476 Return-Path: Delivered-To: ilbers.mnt@gmail.com Received: by 2002:a4a:df46:0:0:0:0:0 with SMTP id j6csp92508oou; Fri, 30 Apr 2021 07:06:36 -0700 (PDT) X-Received: by 2002:a5d:60cd:: with SMTP id x13mr6836489wrt.377.1619791596370; Fri, 30 Apr 2021 07:06:36 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1619791596; cv=pass; d=google.com; s=arc-20160816; b=JXPGwhMK1SDd8Gu6y9Vl+mu7sjtqDe3cEpSeZ9EktamGHPYG4Wr68DaY0b24xBYVBZ 763VzWJSKxHOHIrNzRkkscI4T39zkbPp0xcHBDETRdE68MmQO7I1QAjLz698/9YhEPMX t052t5sjY71L7MwZxocxhZKoMOoKQf0nT7mekICcBNBKl466FiTM3v8mjkYO95C28bJj KE+FXl7czGBgGwyoFrjlcrNNm0aLIr8J4F/eF8U3Cc4V2SZ4yByirg9bD+pTm8B0Dbdw x6SJRXO3JApG9X6nZrfiE7GmpHASBgrcMb14l+ncwf9co/FjR5ZvHtsxU5i7wPNFtPOu PW6g== ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=ZVfsK9LjhldOpjsC2MZwiRl7COfa9akHUItD5tK5n3I=; b=MscfesXMeUoUj3EIz+SkQIE66o1j2hQgFnKgkwB6XYq88LGk6l/K8BsJs6XDsao9wa V0U2TkpISs92Wbf0tUxyhVt5UugHlKepLcFnIeO9MDlwldFbeER7jAshlVi0IE3+L3wD MhlU6o8BKNyRiy7rdu1ZananahLFLE8loALzvS4zjtKQ7OZCK53ToTYNjYL240NTi0m+ 7Aev8hWm93OOdsesN45jxwXoAoN5wNWqkf0HzEC0EW6VBN4rAD5NIZb2Mn7FZEJo6V4q XKsigDD/9KbYbJGWmjc9sm3G0XN0uzsFvb6I6XTCg1I5igxfW/yRHPkLaSfV6k4KZQln /Hqw== ARC-Authentication-Results: i=3; mx.google.com; dkim=pass header.i=@googlegroups.com header.s=20161025 header.b=Wvyju82a; arc=pass (i=2 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of isar-users+bncbczk33mgwucrb245wccamgqeruj4zay@googlegroups.com designates 209.85.220.55 as permitted sender) smtp.mailfrom=isar-users+bncBCZK33MGWUCRB245WCCAMGQERUJ4ZAY@googlegroups.com; dmarc=fail (p=NONE sp=NONE dis=NONE arc=pass) header.from=siemens.com Received: from mail-sor-f55.google.com (mail-sor-f55.google.com. [209.85.220.55]) by mx.google.com with SMTPS id s9sor3855158wrt.18.2021.04.30.07.06.36 (Google Transport Security); Fri, 30 Apr 2021 07:06:36 -0700 (PDT) Received-SPF: pass (google.com: domain of isar-users+bncbczk33mgwucrb245wccamgqeruj4zay@googlegroups.com designates 209.85.220.55 as permitted sender) client-ip=209.85.220.55; Authentication-Results: mx.google.com; dkim=pass header.i=@googlegroups.com header.s=20161025 header.b=Wvyju82a; arc=pass (i=2 spf=pass spfdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of isar-users+bncbczk33mgwucrb245wccamgqeruj4zay@googlegroups.com designates 209.85.220.55 as permitted sender) smtp.mailfrom=isar-users+bncBCZK33MGWUCRB245WCCAMGQERUJ4ZAY@googlegroups.com; dmarc=fail (p=NONE sp=NONE dis=NONE arc=pass) header.from=siemens.com ARC-Seal: i=2; a=rsa-sha256; t=1619791596; cv=pass; d=google.com; s=arc-20160816; b=Yahb+LC487G/ju6pCS5gK3f+a407ZnoICTnN0g+wc2CYkO5+NkHmzMLDlMDCGsGyn5 cDAIyGjfKQMQrcpiCWhtkxKTwg1WdWCJmSU8symlbQ35EbUVUDYU9/jjrDTY0ZHbYUu+ JJhA05cp5EjCjHK4TzCQ+6N1WI9F5lYHZF6IFuO9FiZB0bwjfoUgz9M3m7xAvfG+0Bnw +xFu/AQG2Yc9F0J4aLNh1PMDK8dGj2v2y2Wa5EFGBdEcC0VA3DMKaQ/iXmNWHjH1OlwN 4rxGZrXTUZiqFK6Cbyy8dAttJ9fQMgx93rc7j8IpMF22wUjhW9AUDLc7m03G3dHpsIDb OmZw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=ZVfsK9LjhldOpjsC2MZwiRl7COfa9akHUItD5tK5n3I=; b=twcKjJ2jLjFjEC2daz0xLMvI3LAVu2S5cWJoBqSYH+qLqMmDGMEOck0ID7q+IU4qnt IDXo2ryGBI4Hg4a/jBPRuH/SnYlz29Ifcsg0z+TigpqfHx/951NUysO+FxTI1preqHBp bTpG5bXjBV5IIuj8Hlas1b3Zt00c2FvymPD7IKFHqlVTL/xmf92MD+Olf3y2xfa4fwED A1wb3pJydLCzyVCPn2CJSdp7HHzFj5/kZTw/vFel+oGvslzRQgq2NVV7nEM5v7gUW3ig RiV7tFK8fQD+V2QMzajPEYPnwB/ODwQ9kixTJhVVfx3MR3RrpaycaCX40wuotLHKDXiJ lsMA== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of felix.moessbauer@siemens.com designates 194.138.37.39 as permitted sender) smtp.mailfrom=felix.moessbauer@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=ZVfsK9LjhldOpjsC2MZwiRl7COfa9akHUItD5tK5n3I=; b=Wvyju82akkHE9im7IObl+KvrKDpL7u96Odpg7yo94dbafEVDiqy8svrvvtCdzDwiU8 250Jgm7knxe47rp324e+tjZlP1SpL+GyOdN5ZK/Qcv8Iiu3ORvN+CwzRxS/Lti9p8eZJ 4jq7yrnHp9U4f+6Uz2Kgz9/IU/1u+1l6+o0AVP4T9BKS/n+BqPjErtmToFfgAb743TC+ 42XO+yjNUQRnGbwJUOI8XdIiFxUBZvIL0OP+AeGlBKSmk4tevqVhp5Vqoy2nvsNFB6Aw InCzY68l8J54kn0itQvFPtx/ZGfoGJHjQErJSmNOZzCOI2zfuHC32SDIkdRq2AHDewB2 hA+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=sender:x-gm-message-state:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=ZVfsK9LjhldOpjsC2MZwiRl7COfa9akHUItD5tK5n3I=; b=HWG3NROT4utY7oxuEK9Cbvbnk1ZzdsasmWOe05E86rSNSXZZDi9wQN6yRaMxvSkTwQ +IgZjqEaD19AVKfxY7OESZC/jTpAOfxMlkGfNRKAfhE1LpQeXvrMXCahofF4ASnUni+c 0z/wEKTy8MiDvHYPC78WVkVUjR9kJ4NsXVRhSXpmyx2eEUJN37QodEIljWpLQJrNN32m RnjPOJcVgCdR/u4PwKv+FfLoqJspNWlhsbmoInLhb1MRPt91SqCj60rZwOPGND9Yia8B +WxdOhOZdSnQaiT+6ppn9ou5C+bpRXnaVneBHpIiINV8Q+yhvaaNf8b2yYq4UmWV5rla NqZQ== Sender: isar-users@googlegroups.com X-Gm-Message-State: AOAM530OlMWvywl5sdMidCxoFTlqhr/92/OVIrItwUwG9PkXW8+7R4Mm hq+wRMd7dLD2Ymkn6lVlsUU= X-Google-Smtp-Source: ABdhPJzNBooyigaXNGRuHXekaAXy9nSO6AiSZK8FOh5jMjyb4ui1DmVgxsPvzwR0BLoyj5L2fV6OSA== X-Received: by 2002:adf:d215:: with SMTP id j21mr7322849wrh.251.1619791596112; Fri, 30 Apr 2021 07:06:36 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a5d:6da1:: with SMTP id u1ls5049773wrs.1.gmail; Fri, 30 Apr 2021 07:06:35 -0700 (PDT) X-Received: by 2002:a5d:6291:: with SMTP id k17mr2780156wru.247.1619791595364; Fri, 30 Apr 2021 07:06:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619791595; cv=none; d=google.com; s=arc-20160816; b=NsDUhuSlbpghdNAmay8Y1ABdK5dPKzRBUmOcTArEpu3Que1pWRSt7g+UY20MLDNzkP B/Thnm8TQHCmJ7KrdFJIqM67nPtPYHJ5qRRcGOuR9GvOmQ6y0/7Nr7giSoSHmQzLlHjN r/MFhYrls+VhIoXig2wQ6bsWvSnAsMeXe2Zd+WHx3iXPDoGU3K3AkeNpelXBUAEPfrdY oebs0KSkQ56Kw7M09Q2A+pbVBTuxR7Wr+JDCjLxthcHoAebs0bpNPLpvxQa5c4zWAI5V mxu9o1gnASswebkabH2jVR8dq9ZjOsyZX7TSWOuWDI3rYV4pWkdU+9rrIMOafQUrsSCY 0vqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=DtKOsn8t8Mk5WE2A/3B+rYxIvCK6dSwvjP3tipBm7Rc=; b=S1Hdr1Et2Ud4lm5dia3KC883QMJgKvexN96NAc4oeG4TvKu8RiN9ogY+1su28kebck sC7oRZ9pwkS5IfjltHgwxxwNtU3ng/TjLqESSTKBG9CoVPFkk9X/4BRkZxlglOwUMnRO 15uG7rPcrgQLHUqzG55Hs+/QbC41KKTgd3YCiBNOXoezYTnWuR0RaNWmhY0j7wNnH2Fv k+3LfStm+aGUaKwv5PcV9f/GaCn4686/PFX4JZ6JpVmXcBp0Lcddw6qPtBSkMgwDZsMQ 64a2x+77eGtzYkQC9BcxTW+P4G4oKHoAJekWKBRZVmEkr4ci4LqIrGLzeaJzHTzKOKJe djIQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of felix.moessbauer@siemens.com designates 194.138.37.39 as permitted sender) smtp.mailfrom=felix.moessbauer@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from lizzard.sbs.de (lizzard.sbs.de. [194.138.37.39]) by gmr-mx.google.com with ESMTPS id s141si1063324wme.2.2021.04.30.07.06.35 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Apr 2021 07:06:35 -0700 (PDT) Received-SPF: pass (google.com: domain of felix.moessbauer@siemens.com designates 194.138.37.39 as permitted sender) client-ip=194.138.37.39; Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by lizzard.sbs.de (8.15.2/8.15.2) with ESMTPS id 13UE6ZOt001605 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 30 Apr 2021 16:06:35 +0200 Received: from MD1T0KAC-VM.ad001.siemens.net (md1t0kac.ad001.siemens.net [139.25.0.7]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id 13UE2uZa023824; Fri, 30 Apr 2021 16:02:57 +0200 From: Felix Moessbauer To: isar-users@googlegroups.com Cc: henning.schild@siemens.com, jan.kiszka@siemens.com, Felix Moessbauer Subject: [PATCH v3 1/1] Add support to build binary version of DKMS kernel modules Date: Fri, 30 Apr 2021 16:02:52 +0200 Message-Id: <20210430140252.8624-2-felix.moessbauer@siemens.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210430140252.8624-1-felix.moessbauer@siemens.com> References: <20210430140252.8624-1-felix.moessbauer@siemens.com> MIME-Version: 1.0 X-Original-Sender: felix.moessbauer@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of felix.moessbauer@siemens.com designates 194.138.37.39 as permitted sender) smtp.mailfrom=felix.moessbauer@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1698474365281576596?= X-GMAIL-MSGID: =?utf-8?q?1698474592615415669?= This patch adds support to build and install a kernel module that is available via a debian DKMS package. As it is hard to directly build and install the package we create and distribute a meta package that is independent of the kernel version. In that package, we depend on the versioned prebuild kernel module package. To build the dkms module, we add two tasks and directly use dkms to build the debian package containing the binary module Then we just copy the binary-module debian package to the workdir, Signed-off-by: Felix Moessbauer --- meta-isar/conf/local.conf.sample | 5 +- .../example-dkms-module.bb | 14 ++++ meta/classes/dkms-module.bbclass | 76 +++++++++++++++++++ scripts/ci_build.sh | 1 + 4 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 meta-isar/recipes-kernel/example-dkms-module/example-dkms-module.bb create mode 100644 meta/classes/dkms-module.bbclass diff --git a/meta-isar/conf/local.conf.sample b/meta-isar/conf/local.conf.sample index 77585ec..67a98d6 100644 --- a/meta-isar/conf/local.conf.sample +++ b/meta-isar/conf/local.conf.sample @@ -178,7 +178,10 @@ CONF_VERSION = "1" # # The default list of extra packages to be installed. -IMAGE_INSTALL = "hello-isar example-raw example-module-${KERNEL_NAME} enable-fsck isar-exclude-docs samefile hello isar-disable-apt-cache cowsay example-prebuilt" +IMAGE_INSTALL = "hello-isar example-raw example-module-${KERNEL_NAME} example-dkms-module-${KERNEL_NAME} enable-fsck isar-exclude-docs samefile hello isar-disable-apt-cache cowsay example-prebuilt" + +# v4l2loopback module does not build on armhf +IMAGE_INSTALL_remove_armhf = "example-dkms-module-${KERNEL_NAME}" # # Enable cross-compilation support diff --git a/meta-isar/recipes-kernel/example-dkms-module/example-dkms-module.bb b/meta-isar/recipes-kernel/example-dkms-module/example-dkms-module.bb new file mode 100644 index 0000000..113f232 --- /dev/null +++ b/meta-isar/recipes-kernel/example-dkms-module/example-dkms-module.bb @@ -0,0 +1,14 @@ +# Example recipe for building the binary version of a DKMS module +# +# This software is a part of ISAR. +# Copyright (c) Siemens AG, 2021 +# +# SPDX-License-Identifier: MIT + +inherit dkms-module + +PN .= "-${KERNEL_NAME}" + +#package name (without -dkms. E.g "v4l2loopback" for package "v4l2loopback-dkms") +DKMS_PACKAGE_NAME = "v4l2loopback" +AUTOLOAD += "v4l2loopback" diff --git a/meta/classes/dkms-module.bbclass b/meta/classes/dkms-module.bbclass new file mode 100644 index 0000000..283bff7 --- /dev/null +++ b/meta/classes/dkms-module.bbclass @@ -0,0 +1,76 @@ +# This software is a part of ISAR. +# Copyright (C) 2021 Siemens AG +# +# SPDX-License-Identifier: MIT + +inherit dpkg-raw + +# Build and install a kernel module that is available via a debian DKMS package. +# As it is hard to directly build and install the package we create and distribute +# a meta package that is independent of the kernel version. +# In that package, we depend on the versioned prebuild kernel module package. +# +# To build the dkms module, we add two tasks and directly +# use dkms to build the debian package containing the binary module +# Then we just copy the binary-module debian package to the workdir, +# so ISAR's do_deploy_deb picks it up. + +#package name (without -dkms. E.g "dpdk-kmods" for package "dpdk-kmods-dkms") +DKMS_PACKAGE_NAME ?= "" +AUTOLOAD ?= "" + +DESCRIPTION ?= "Kernel module from DKMS package for ${PN}" +DEPENDS += "linux-headers-${KERNEL_NAME}" +DEBIAN_DEPENDS += "${DKMS_PACKAGE_NAME}-modules," +DEBIAN_BUILD_DEPENDS += "linux-headers-${KERNEL_NAME}, ${DKMS_PACKAGE_NAME}-dkms," + +ISAR_CROSS_COMPILE = "0" + +# install configuration to auto-load the modules in ${AUTOLOAD} +do_install() { + # auto load the module + install -v -d ${D}/etc/modules-load.d + for module in "${AUTOLOAD}"; do + echo $module > ${D}/etc/modules-load.d/${PN}.conf + done +} + +# build the binary kernel module and package as debian package (versioned) +do_module_build() { + # we have to find out the module version, e.g. dpdk-kmods/0~20201113+git -k 5.10.0-3-rt-amd64/x86_64 + REVISION=$(find ${BUILDCHROOT_DIR}/usr/src/${DKMS_PACKAGE_NAME}-* -type d -exec basename {} + | sed 's/${DKMS_PACKAGE_NAME}-//g') + DKMS_ARCH=$(echo ${DISTRO_ARCH} | sed 's/amd64/x86_64/g' | sed 's/arm64/aarch64/g' | sed 's/i386/i686/g') + if ! dpkg -s --root=${BUILDCHROOT_DIR} linux-headers-${KERNEL_NAME} | grep "Depends:.*linux-headers"; then + # custom kernels directly place their files in linux-image-KERNEL-NAME, instead + # of using a meta package + a versioned package with the resources + # The prebuild DKMS binary package depends on the versioned kernel package, + # but that is not available on custom kernels. Hence, we just remove the dependency. + bbnote "Building ${DKMS_PACKAGE_NAME} for custom kernel ${KERNEL_NAME}" + cp ${BUILDCHROOT_DIR}/etc/dkms/template-dkms-mkbmdeb/debian/control ${WORKDIR}/control.dkms.orig + sudo sed -i 's/, linux-image-KERNEL_VERSION//' ${BUILDCHROOT_DIR}/etc/dkms/template-dkms-mkbmdeb/debian/control + KERNEL_FULLNAME=${KERNEL_NAME} + else + KERNEL_FULLNAME=$(dpkg -s --root=${BUILDCHROOT_DIR} linux-headers-${KERNEL_NAME} | grep "Depends:.*linux-headers" | sed 's/Depends: linux-headers-//g') + bbnote "Building for kernel $KERNEL_FULLNAME" + fi + # build the module for all installed kernels (should be just one) + sudo -E chroot ${BUILDCHROOT_DIR} dkms build ${DKMS_PACKAGE_NAME}/${REVISION} -k ${KERNEL_FULLNAME}/${DKMS_ARCH} + sudo -E chroot ${BUILDCHROOT_DIR} dkms mkbmdeb ${DKMS_PACKAGE_NAME}/${REVISION} -k ${KERNEL_FULLNAME}/${DKMS_ARCH} + DKMS_PACKAGE_VERSIONED=$(find ${BUILDCHROOT_DIR}/var/lib/dkms/${DKMS_PACKAGE_NAME}/ -name "${DKMS_PACKAGE_NAME}-modules*.deb" -exec dpkg -I {} + | grep "Package:" | awk '{print $2}') + if [ -z "$DKMS_PACKAGE_VERSIONED" ]; then + bberror "No prebuild dkms module found" + exit 1 + fi + # restore dkms template (if any) + cp ${WORKDIR}/control.dkms.orig ${BUILDCHROOT_DIR}/etc/dkms/template-dkms-mkbmdeb/debian/control || true +} + +# simply copy our module from the build tree to the expected output location +# of this recipe. Then, do_deploy_dep finds it and adds it to the +# debian isar repo +do_module_deploy() { + cp ${BUILDCHROOT_DIR}/var/lib/dkms/${DKMS_PACKAGE_NAME}/*/bmdeb/*.deb ${S}/../ +} + +addtask module_build after do_install_builddeps before do_dpkg_build +addtask module_deploy after do_module_build before do_deploy_deb diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh index adc22e4..1426569 100755 --- a/scripts/ci_build.sh +++ b/scripts/ci_build.sh @@ -259,6 +259,7 @@ mv ${BUILDDIR}/tmp/deploy/images/qemuamd64/isar-image-base-debian-stretch-qemuam # Finalize with containerized images, since they remove some not-needed packages from the local.conf sed -i -e 's/\(IMAGE_INSTALL = .*\) example-module-${KERNEL_NAME}\(.*\)/\1\2/g' conf/local.conf +sed -i -e 's/\(IMAGE_INSTALL = .*\) example-dkms-module-${KERNEL_NAME}\(.*\)/\1\2/g' conf/local.conf sed -i -e 's/\(IMAGE_INSTALL = .*\) enable-fsck\(.*\)/\1\2/g' conf/local.conf bitbake $BB_ARGS $TARGETS_CONTAINERS while [ -e bitbake.sock ]; do sleep 1; done