From patchwork Wed Jul 17 18:08:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Cabaj X-Patchwork-Id: 1961749 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4WPP7w1q6kz20FF for ; Thu, 18 Jul 2024 04:08:43 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1sU94e-0004gQ-VB; Wed, 17 Jul 2024 18:08:20 +0000 Received: from smtp-relay-internal-0.internal ([10.131.114.225] helo=smtp-relay-internal-0.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1sU94d-0004g6-Ae for kernel-team@lists.ubuntu.com; Wed, 17 Jul 2024 18:08:19 +0000 Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 1F97C3F731 for ; Wed, 17 Jul 2024 18:08:19 +0000 (UTC) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-79f045e1adcso832301185a.2 for ; Wed, 17 Jul 2024 11:08:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721239698; x=1721844498; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SNlQdcenG+zIlC7hlKkj3aM8VsgqsqHg0LwLWeJoFRc=; b=WXiNUPDs1jyGXaV/dMLutGiBhBK7W1oLxN8Lh0PxTk/myZ0hXMyLXApYk9KxIJJlPn PQKRdcdR4PjBe+V2zcHzsqe3TXsydnXku/gvPSHPn8M5WUZLnQN/CZa6DtrtZmYstvbC rb3G2B0Z8AI5ER0vaYXHT6SMKurMNyuN5YdXshab8dotxKnhwiNAyncg86f0+v8xe3wY B5WUGCOAbebCVSg9PBAZDyR7Be5S+XHD21of+grARIIEPYFxp3lBN88AF3lEiB4c/v6u Hn3I9sI8aePIi61t/wWtqFu7z9ABfOtl7+Kc4hMm5EzG8hfTWT4hFZ8LgTNZT8ljOlyW ztdg== X-Gm-Message-State: AOJu0Yyu+YjzRABFYZfrZGuUGfTrkvjMeTRT1iHHSjU7BYZWVDcNeKuo mHgqv4aYaPwii5SnHU3kpvJ6mysRydiDeMm/LX84TS1OJWebg4aDSyM4OXSCG1srPNJeo7+Kl9Z J4KKv126affj1eJsQB1o9aK9ULpDQWuCsu0xGUNVg+TZewFj07fyGzqUx/nz6Mw2iyjFxfFti5p +aUIGxmY0F7w== X-Received: by 2002:a05:620a:4488:b0:79f:222:4513 with SMTP id af79cd13be357-7a187501452mr261547185a.64.1721239698117; Wed, 17 Jul 2024 11:08:18 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEqcoR4Q98GYYZq+lDQKRleXrfivSW9VNgHJW8uUS01yfXRjkGpEQJVn/hjLYZs5AwTk3dzZA== X-Received: by 2002:a05:620a:4488:b0:79f:222:4513 with SMTP id af79cd13be357-7a187501452mr261544285a.64.1721239697726; Wed, 17 Jul 2024 11:08:17 -0700 (PDT) Received: from smtp.gmail.com (h208-73-92-250.mdtnwi.broadband.dynamic.tds.net. [208.73.92.250]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7a160c868d9sm432932185a.129.2024.07.17.11.08.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Jul 2024 11:08:17 -0700 (PDT) From: John Cabaj To: kernel-team@lists.ubuntu.com Subject: [SRU][o/n/j/f:linux-azure][PATCH 1/1] UBUNTU: [Packaging] azure: support standalone dkms module builds Date: Wed, 17 Jul 2024 13:08:15 -0500 Message-Id: <20240717180815.1849056-2-john.cabaj@canonical.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240717180815.1849056-1-john.cabaj@canonical.com> References: <20240717180815.1849056-1-john.cabaj@canonical.com> MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: "You-Sheng Yang (vicamo)" BugLink: https://bugs.launchpad.net/bugs/2073414 Signed-off-by: You-Sheng Yang (vicamo) Signed-off-by: Dimitri John Ledkov Acked-by: Stefan Bader Acked-by: Kleber Sacilotto de Souza Signed-off-by: Kleber Sacilotto de Souza (backported from commit 938dfd00639a20c239f0c19ae20a47111860d3d6 jammy:linux) [john-cabaj: debian/control.d/generic doesn't exist for azure] Signed-off-by: John Cabaj --- debian/control.dkms | 10 +++++++ debian/rules | 69 +++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 debian/control.dkms diff --git a/debian/control.dkms b/debian/control.dkms new file mode 100644 index 0000000..304af7b --- /dev/null +++ b/debian/control.dkms @@ -0,0 +1,10 @@ + +Package: linux-modules-MODULE-FLAVOUR${variant:suffix} +Architecture: ARCH +Section: kernel +Provides: ${dkms:MODULE-modules} +Depends: + ${misc:Depends}, + linux-modules-MODULE-${kernel-abi-version}-FLAVOUR, +Description: Extra drivers for MODULE for the FLAVOUR flavour + Install extra signed MODULE modules compatible with the FLAVOUR flavour. diff --git a/debian/rules b/debian/rules index de94eb6..c04ff12 100755 --- a/debian/rules +++ b/debian/rules @@ -7,6 +7,11 @@ # Copyright (c) 2004 Jens Schmalzing # +include /usr/share/dpkg/architecture.mk + +# Used when you need to 'escape' a comma. +comma = , + SERIES=$(shell dpkg-parsechangelog -SDistribution | sed -e 's/-\(security\|updates\|proposed\)$$//') SOURCE=$(shell dpkg-parsechangelog -SSource) KERNEL_SOURCE=$(shell echo "$(SOURCE)" | sed -e 's/-meta//') @@ -26,10 +31,11 @@ endif control_files := debian/control.common # control files only wanted for the primary variant primary_control_files := $(shell LC_ALL=C ls -d debian/control.d/primary debian/control.d/transitionals-* 2>/dev/null) +dkms_control_files := ifneq ($(filter --,$(variants)),) control_files += $(primary_control_files) endif -control_files += $(filter-out $(primary_control_files),$(shell LC_ALL=C ls -d debian/control.d/*)) +control_files += $(filter-out $(primary_control_files) $(wildcard debian/control.d/dkms-*),$(shell LC_ALL=C ls -d debian/control.d/*)) SHELL := sh -e @@ -38,13 +44,57 @@ clean: debian/control dh_testroot dh_clean -# Versions of dkms packages. -dkms_zfs_linux_version=$(shell gawk '/^zfs-linux/ { print $$2; }' debian/dkms-versions) +# DKMS +all_dkms_modules = +$(foreach _line,$(shell gawk '{ OFS = "!"; $$1 = $$1; print }' debian/dkms-versions), \ + $(eval _params = $(subst !, ,$(_line))) \ + $(eval _deb_pkgname = $(firstword $(_params))) \ + $(eval _deb_version = $(word 2,$(_params))) \ + $(if $(filter modulename=%,$(_params)), \ + $(eval _m = $(word 2,$(subst =, ,$(filter modulename=%,$(_params))))) \ + , \ + $(info modulename for $(_deb_pkgname) not specified in dkms-versions. Assume $(_deb_pkgname).) \ + $(eval _m = $(_deb_pkgname)) \ + ) \ + $(eval all_dkms_modules += $(_m)) \ + $(eval dkms_$(_m)_version = $(_deb_version)) \ + $(if $(filter arch=%,$(_params)), \ + $(eval dkms_$(_m)_archs = $(patsubst arch=%,%,$(filter arch=%,$(_params)))) \ + , \ + $(eval dkms_$(_m)_archs = any) \ + ) \ + $(eval dkms_$(_m)_rprovides = $(patsubst rprovides=%,%,$(filter rprovides=%,$(_params)))) \ + $(eval dkms_$(_m)_type = $(word 1,$(patsubst type=%,%,$(filter type=%,$(_params))) built-in)) \ + $(eval all_$(dkms_$(_m)_type)_dkms_modules += $(_m)) \ + $(if $(filter standalone,$(dkms_$(_m)_type)), \ + $(eval dkms_$(_m)_rprovides += $(_m)-prebuilt-kernel) \ + $(eval dkms_control_files += debian/control.d/dkms-$(_m)) \ + ) \ +) dkms_virtualbox_version=$(KERNEL_ABI_VERSION) dkms_wireguard_version=$(shell /sbin/modinfo -F version /lib/modules/$(KERNEL_ABI_VERSION)-azure/kernel/drivers/net/wireguard/wireguard.ko) +debian/control.d/dkms-%: module = $(patsubst debian/control.d/dkms-%,%,$@) +debian/control.d/dkms-%: module_archs = $(dkms_$(patsubst debian/control.d/dkms-%,%,$@)_archs) +debian/control.d/dkms-%: debian/control.dkms + for cf in $(filter-out debian/control.common $(primary_control_files),$(control_files)); do \ + flavour=$$(basename $$cf); \ + flavour_archs=$$(gawk "/^Package: linux-image-$${flavour}\\\$$/ { getline; \$$1=\"\"; print; }" $$cf); \ + available_archs=$${flavour_archs}; \ + if ! test "$(module_archs)" = "any"; then \ + available_archs=$$(echo "$${flavour_archs} $(module_archs)" | tr " " "\n" | sort | uniq -d); \ + test -n "$${available_archs}" || continue; \ + fi; \ + cat debian/control.dkms | sed \ + -e "s/MODULE/$(module)/g" \ + -e "s/ARCH/$${available_archs}/g" \ + -e "s/FLAVOUR/$${flavour}/g"; \ + done >$@.tmp + rm -f $@ + mv $@.tmp $@ + debian/control: tp_key=test:provides\(-full\|-image\|-headers\|-modules-extra\) -debian/control: $(control_files) +debian/control: $(control_files) $(dkms_control_files) for i in $^; do \ if grep -q "{variant:" $$i; then \ variant_first='yes'; \ @@ -75,7 +125,16 @@ debian/control: $(control_files) gencontrol_flags = -Vkernel-version=$(KERNEL_VERSION) gencontrol_flags += -Vkernel-abi-version=$(KERNEL_ABI_VERSION) -gencontrol_flags += -Vdkms:zfs-modules="zfs-modules (= $(dkms_zfs_linux_version))," +gencontrol_flags += \ + $(foreach _m,$(all_dkms_modules), \ + $(if $(filter $(DEB_HOST_ARCH),$(subst any,$(DEB_HOST_ARCH),$(dkms_$(_m)_archs))), \ + $(if $(filter standalone,$(dkms_$(_m)_type)), \ + -Vdkms:$(_m)-modules="$(foreach _p,$(dkms_$(_m)_rprovides),$(_p) (= $(dkms_$(_m)_version))$(comma) )" \ + , \ + -Vdkms:$(_m)-modules="$(foreach _p,$(filter %-modules,$(dkms_$(_m)_rprovides)),$(_p) (= $(dkms_$(_m)_version))$(comma) )" \ + ) \ + ) \ + ) gencontrol_flags += -Vdkms:virtualbox-guest-modules="virtualbox-guest-modules (= $(dkms_virtualbox_version))," gencontrol_flags += -Vdkms:wireguard-linux-compat-modules="wireguard-modules (= $(dkms_wireguard_version)),"