From patchwork Mon Mar 8 14:59:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Whitcroft X-Patchwork-Id: 1449148 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DvM2q2MY9z9sWq; Tue, 9 Mar 2021 02:00:19 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1lJHMk-0004xH-W7; Mon, 08 Mar 2021 15:00:14 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1lJHMe-0004vS-FS for kernel-team@lists.ubuntu.com; Mon, 08 Mar 2021 15:00:08 +0000 Received: from mail-wr1-f72.google.com ([209.85.221.72]) by youngberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1lJHMe-00062W-7o for kernel-team@lists.ubuntu.com; Mon, 08 Mar 2021 15:00:08 +0000 Received: by mail-wr1-f72.google.com with SMTP id n16so3861072wro.1 for ; Mon, 08 Mar 2021 07:00:08 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=u2A5VZM40QKttyq6iJNxzGoNN+lAohGhblimXVI4ljU=; b=lWPCG+XHkjeof8pK/HZtZufXVNkOutBPJo0bQWJJwpIQYPQJvSDKwPlDkgDfirzMDR vuuePa36ew1mSgzJA0PCMihaE/7mZpc4PNzq2aolGwJA8uniX5y5kz9lA5coCVroXLfu xKFBLSwh6ewqYF4rsYJUyTLBTmAAzXAirSup9DI+iC+CiczB+ohLpTXgPESN/mTke6qq oOCXOl5rVZz2lH/78Anx5TC0hzzYm+J1j+ukIyrgas5wh1qoroC8qUJt2571cLOzM8bv yFnrQpSiELvit82yva2ypXa1qVcmc7aLHturAUnHYnomu4j/ukaY3+coLyLr7RK0ow/I F2/w== X-Gm-Message-State: AOAM531AydiVOZI/SXVGCip5Fk3qo0mdfvCaoBPV97aig+EFNIZ4TJdk SA2dwukPsaQHhZCWl60hBIogLJNh9tOr1BzQ/1YssU6fJOZij/6h/wH6Uqg5R8lc8qr9KfGC1mR Cptc8t09JqelXo6YtXvtQ0bGMoFGaRFpsP0PqJ2IkFw== X-Received: by 2002:adf:e603:: with SMTP id p3mr23657973wrm.360.1615215607510; Mon, 08 Mar 2021 07:00:07 -0800 (PST) X-Google-Smtp-Source: ABdhPJyw26Zp1qcR0GtqKrO5BoxtNe9H0In5xmgI4jRjghlU3brDil39oopdqOoLZK9VHrUnUrgCWQ== X-Received: by 2002:adf:e603:: with SMTP id p3mr23657940wrm.360.1615215607191; Mon, 08 Mar 2021 07:00:07 -0800 (PST) Received: from localhost ([2001:470:6973:2:2843:61fd:9f2a:3b98]) by smtp.gmail.com with ESMTPSA id 3sm21748530wry.72.2021.03.08.07.00.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Mar 2021 07:00:06 -0800 (PST) From: Andy Whitcroft To: kernel-team@lists.ubuntu.com Subject: [PATCH 1/9] UBUNTU: [Packaging] parameterise package generator based on package Date: Mon, 8 Mar 2021 14:59:56 +0000 Message-Id: <20210308150004.1746089-2-apw@canonical.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210308150004.1746089-1-apw@canonical.com> References: <20210308150004.1746089-1-apw@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: , Cc: Andy Whitcroft Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" Move debian/scripts/gen-rules to a package specific name and add a simple name based switch table to call it. No changes are made to gen-rules.lrm. BugLink: https://bugs.launchpad.net/bugs/1918134 Signed-off-by: Andy Whitcroft --- debian/scripts/gen-rules | 175 +---------------------------------- debian/scripts/gen-rules.lrm | 173 ++++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+), 170 deletions(-) create mode 100755 debian/scripts/gen-rules.lrm diff --git a/debian/scripts/gen-rules b/debian/scripts/gen-rules index 19830c0..ff91f48 100755 --- a/debian/scripts/gen-rules +++ b/debian/scripts/gen-rules @@ -1,173 +1,8 @@ #!/bin/bash -mkdir -p "debian/control.d" -cat "debian/rules.in" >"debian/rules.gen" -: >"debian/control.gen" -: >"debian/control.d/meta-nvidia" -: >"debian/control.d/nvidia" -: >"debian/control.d/migrate-nvidia" -: >"debian/control.d/transitionals-local" +src_package=$(LC_ALL=C dpkg-parsechangelog -SSource) +case "$src_package" in +linux-restricted-modules*) pkg='lrm' ;; +esac -dkms_build_new=$(grep -c 'shift 7' debian/scripts/dkms-build) -if [ "$dkms_build_new" -eq 0 ]; then - sed -i -e '/debian\/scripts\/dkms-build/s/ $(4)//' debian/rules.gen -fi - -nvidia_desktop= -nvidia_server= -nvidia_ignore= -while read command arg -do - case "$command" in - option) ;; - suppress) nvidia_ignore="$nvidia_ignore $arg"; continue ;; - *) continue ;; - esac - - case "$arg" in - desktop) nvidia_desktop=y ;; - server) nvidia_server=y ;; - esac -done <"debian/package.config" - -while read command flavour archs -do - case "$command" in - build) ;; - *) continue ;; - esac - - targets=$(echo "$archs" | sed -e 's/\>"debian/control.gen" <= @VERSION@) [${archs}], - linux-buildinfo-@ABI@-${flavour} (>= @VERSION@) [${archs}], -EOL - - while read package version extra - do - case "$package" in - nvidia-graphics-drivers-*-server) - [ -z "$nvidia_server" ] && continue - ;; - nvidia-graphics-drivers-*) - [ -z "$nvidia_desktop" ] && continue - ;; - *) continue ;; - esac - case " $nvidia_ignore " in - *\ $package\ *) continue ;; - esac - - case " $extra " in - *\ signonly\ *) continue ;; - esac - - suffix_minus=$(echo "$package" | sed -e 's/nvidia-graphics-drivers-//') - suffix_under=$(echo "$suffix_minus" | sed -e 's/-/_/g') - suffix_short=$(echo "$suffix_minus" | sed -e 's/-server/srv/g') - - echo "II: build $package for $flavour $archs" - - # debian/rules.gen - { - echo "" - #echo "# $package $version $suffix_minus $suffix_under" - echo "dkms_nvidia_${suffix_under}_version=\$(shell gawk '/^${package} / { print \$\$2; }' debian/dkms-versions)" - echo "nvidia_${suffix_under}_upstream_version=\$(shell echo \"\$(dkms_nvidia_${suffix_under}_version)\" | cut -d '-' -f 1)" - echo "gencontrol_flags += -Vdkms:nvidia-${suffix_minus}-modules=\"nvidia-dkms-${suffix_minus} (= \$(dkms_nvidia_${suffix_under}_version))\"" - echo "gencontrol_flags += -Vnvk:nvidia-${suffix_minus}=\"nvidia-kernel-common-${suffix_minus} (<= \$(nvidia_${suffix_under}_upstream_version)-1), nvidia-kernel-common-${suffix_minus} (>= \$(nvidia_${suffix_under}_upstream_version))\"" - echo "test::" - echo " @echo $package $version $suffix_minus $suffix_under $suffix_short $targets" - echo "$targets::" - echo " rm -rf \$(dkms_dir)/build \$(dkms_dir)/source" - echo " mkdir -p \$(dkms_dir)/build \$(dkms_dir)/source" - echo " install -d debian/linux-modules-nvidia-${suffix_minus}-\$(src_abi)-${flavour}" - echo " install -d debian/linux-modules-nvidia-${suffix_minus}-\$(src_abi)-${flavour}/usr/lib/linux/triggers" - echo " \$(call build_dkms, \$(src_abi)-${flavour}, linux-modules-nvidia-${suffix_minus}-\$(src_abi)-${flavour}, \$(CURDIR)/debian/linux-modules-nvidia-${suffix_minus}-\$(src_abi)-${flavour}/lib/modules/\$(src_abi)-${flavour}/kernel, \"\", nvidia-${suffix_short}, pool/restricted/n/nvidia-graphics-drivers-${suffix_minus}/nvidia-kernel-source-${suffix_minus}_\$(dkms_nvidia_${suffix_under}_version)_\$(arch).deb pool/restricted/n/nvidia-graphics-drivers-${suffix_minus}/nvidia-dkms-${suffix_minus}_\$(dkms_nvidia_${suffix_under}_version)_\$(arch).deb)" - echo " \$(call install_control,linux-modules-nvidia-${suffix_minus}-\$(src_abi)-${flavour},${flavour},nvidia,${suffix_short},postinst postrm prerm config templates)" - } >>"debian/rules.gen" - - # debian/control.d/meta-nvidia - cat - >>"debian/control.d/meta-nvidia" < -Architecture: ${archs} -Section: kernel -Provides: \${dkms:nvidia-${suffix_minus}-modules}, nvidia-prebuilt-kernel -Depends: - \${misc:Depends}, - linux-modules-nvidia-${suffix_minus}-@ABI@-${flavour} (= \${binary:Version}), - \${nvk:nvidia-${suffix_minus}} -Description: Extra drivers for nvidia-${suffix_minus} for the ${flavour}\${variant:suffix} flavour - Install extra signed nvidia-${suffix_minus} modules compatible with the ${flavour}\${variant:suffix} flavour. - -EOL - - # debian/control.d/nvidia - cat - >>"debian/control.d/nvidia" < -Architecture: ${archs} -Section: kernel -Priority: optional -Built-Using: \${linux:BuiltUsing} -Depends: - \${misc:Depends}, - \${shlibs:Depends}, - binutils, - linux-image-@ABI@-${flavour} | linux-image-unsigned-@ABI@-${flavour}, -Description: Linux kernel nvidia modules for version @ABI@ - This package contains the Linux kernel nvidia modules for version @ABI@. - . - You likely do not want to install this package directly. Instead, install the - one of the linux-modules-nvidia-${suffix_minus}-${flavour}* meta-packages, - which will ensure that upgrades work correctly, and that supporting packages are - also installed. - -EOL - # debian/control.d/migrate-nvidia - for cmd in $extra - do - case "$cmd" in - transition=*) - from="${cmd#transition=}" - from_minus=$(echo "$from" | sed -e 's/nvidia-graphics-drivers-//') - echo "II: general transition $from -> $package ($from_minus -> $suffix_minus)" - cat - >>"debian/control.d/migrate-nvidia" < linux-modules-nvidia-$to" - cat - >>"debian/control.d/transitionals-local" <"debian/rules.gen" +: >"debian/control.gen" +: >"debian/control.d/meta-nvidia" +: >"debian/control.d/nvidia" +: >"debian/control.d/migrate-nvidia" +: >"debian/control.d/transitionals-local" + +dkms_build_new=$(grep -c 'shift 7' debian/scripts/dkms-build) +if [ "$dkms_build_new" -eq 0 ]; then + sed -i -e '/debian\/scripts\/dkms-build/s/ $(4)//' debian/rules.gen +fi + +nvidia_desktop= +nvidia_server= +nvidia_ignore= +while read command arg +do + case "$command" in + option) ;; + suppress) nvidia_ignore="$nvidia_ignore $arg"; continue ;; + *) continue ;; + esac + + case "$arg" in + desktop) nvidia_desktop=y ;; + server) nvidia_server=y ;; + esac +done <"debian/package.config" + +while read command flavour archs +do + case "$command" in + build) ;; + *) continue ;; + esac + + targets=$(echo "$archs" | sed -e 's/\>"debian/control.gen" <= @VERSION@) [${archs}], + linux-buildinfo-@ABI@-${flavour} (>= @VERSION@) [${archs}], +EOL + + while read package version extra + do + case "$package" in + nvidia-graphics-drivers-*-server) + [ -z "$nvidia_server" ] && continue + ;; + nvidia-graphics-drivers-*) + [ -z "$nvidia_desktop" ] && continue + ;; + *) continue ;; + esac + case " $nvidia_ignore " in + *\ $package\ *) continue ;; + esac + + case " $extra " in + *\ signonly\ *) continue ;; + esac + + suffix_minus=$(echo "$package" | sed -e 's/nvidia-graphics-drivers-//') + suffix_under=$(echo "$suffix_minus" | sed -e 's/-/_/g') + suffix_short=$(echo "$suffix_minus" | sed -e 's/-server/srv/g') + + echo "II: build $package for $flavour $archs" + + # debian/rules.gen + { + echo "" + #echo "# $package $version $suffix_minus $suffix_under" + echo "dkms_nvidia_${suffix_under}_version=\$(shell gawk '/^${package} / { print \$\$2; }' debian/dkms-versions)" + echo "nvidia_${suffix_under}_upstream_version=\$(shell echo \"\$(dkms_nvidia_${suffix_under}_version)\" | cut -d '-' -f 1)" + echo "gencontrol_flags += -Vdkms:nvidia-${suffix_minus}-modules=\"nvidia-dkms-${suffix_minus} (= \$(dkms_nvidia_${suffix_under}_version))\"" + echo "gencontrol_flags += -Vnvk:nvidia-${suffix_minus}=\"nvidia-kernel-common-${suffix_minus} (<= \$(nvidia_${suffix_under}_upstream_version)-1), nvidia-kernel-common-${suffix_minus} (>= \$(nvidia_${suffix_under}_upstream_version))\"" + echo "test::" + echo " @echo $package $version $suffix_minus $suffix_under $suffix_short $targets" + echo "$targets::" + echo " rm -rf \$(dkms_dir)/build \$(dkms_dir)/source" + echo " mkdir -p \$(dkms_dir)/build \$(dkms_dir)/source" + echo " install -d debian/linux-modules-nvidia-${suffix_minus}-\$(src_abi)-${flavour}" + echo " install -d debian/linux-modules-nvidia-${suffix_minus}-\$(src_abi)-${flavour}/usr/lib/linux/triggers" + echo " \$(call build_dkms, \$(src_abi)-${flavour}, linux-modules-nvidia-${suffix_minus}-\$(src_abi)-${flavour}, \$(CURDIR)/debian/linux-modules-nvidia-${suffix_minus}-\$(src_abi)-${flavour}/lib/modules/\$(src_abi)-${flavour}/kernel, \"\", nvidia-${suffix_short}, pool/restricted/n/nvidia-graphics-drivers-${suffix_minus}/nvidia-kernel-source-${suffix_minus}_\$(dkms_nvidia_${suffix_under}_version)_\$(arch).deb pool/restricted/n/nvidia-graphics-drivers-${suffix_minus}/nvidia-dkms-${suffix_minus}_\$(dkms_nvidia_${suffix_under}_version)_\$(arch).deb)" + echo " \$(call install_control,linux-modules-nvidia-${suffix_minus}-\$(src_abi)-${flavour},${flavour},nvidia,${suffix_short},postinst postrm prerm config templates)" + } >>"debian/rules.gen" + + # debian/control.d/meta-nvidia + cat - >>"debian/control.d/meta-nvidia" < +Architecture: ${archs} +Section: kernel +Provides: \${dkms:nvidia-${suffix_minus}-modules}, nvidia-prebuilt-kernel +Depends: + \${misc:Depends}, + linux-modules-nvidia-${suffix_minus}-@ABI@-${flavour} (= \${binary:Version}), + \${nvk:nvidia-${suffix_minus}} +Description: Extra drivers for nvidia-${suffix_minus} for the ${flavour}\${variant:suffix} flavour + Install extra signed nvidia-${suffix_minus} modules compatible with the ${flavour}\${variant:suffix} flavour. + +EOL + + # debian/control.d/nvidia + cat - >>"debian/control.d/nvidia" < +Architecture: ${archs} +Section: kernel +Priority: optional +Built-Using: \${linux:BuiltUsing} +Depends: + \${misc:Depends}, + \${shlibs:Depends}, + binutils, + linux-image-@ABI@-${flavour} | linux-image-unsigned-@ABI@-${flavour}, +Description: Linux kernel nvidia modules for version @ABI@ + This package contains the Linux kernel nvidia modules for version @ABI@. + . + You likely do not want to install this package directly. Instead, install the + one of the linux-modules-nvidia-${suffix_minus}-${flavour}* meta-packages, + which will ensure that upgrades work correctly, and that supporting packages are + also installed. + +EOL + # debian/control.d/migrate-nvidia + for cmd in $extra + do + case "$cmd" in + transition=*) + from="${cmd#transition=}" + from_minus=$(echo "$from" | sed -e 's/nvidia-graphics-drivers-//') + echo "II: general transition $from -> $package ($from_minus -> $suffix_minus)" + cat - >>"debian/control.d/migrate-nvidia" < linux-modules-nvidia-$to" + cat - >>"debian/control.d/transitionals-local" <