diff mbox series

[2/2,B,l-r-m] UBUNTU: [Packaging] NVIDIA -- add support for the 435 and the 440 series

Message ID 20200313150854.14406-2-alberto.milone@canonical.com
State New
Headers show
Series [1/2,B,linux] UBUNTU: [Packaging] NVIDIA -- add support for the 435 and the 440 series | expand

Commit Message

Alberto Milone March 13, 2020, 3:08 p.m. UTC
Add support for multiple NVIDIA releases in the linux-restricted-modules.

BugLink: https://bugs.launchpad.net/bugs/1854485

Signed-off-by: Alberto Milone <alberto.milone@canonical.com>
---
 debian/control.stub                 | 88 +++++++++++++++++++++++++++++
 debian/dkms-versions                |  2 +
 debian/rules                        | 23 ++++++--
 debian/templates/nvidia.postinst.in |  2 +-
 debian/templates/nvidia.prerm.in    |  2 +-
 5 files changed, 110 insertions(+), 7 deletions(-)

--
2.20.1
diff mbox series

Patch

diff --git a/debian/control.stub b/debian/control.stub
index fd27e47..f7db625 100644
--- a/debian/control.stub
+++ b/debian/control.stub
@@ -61,3 +61,91 @@  Section: kernel
 Depends: ${misc:Depends}, linux-modules-nvidia-390-ABI-lowlatency (= ${binary:Version})
 Description: Extra drivers for nvidia-390 for the lowlatency flavour
  Install extra signed nvidia-390 modules compatible with the lowlatency flavour.
+
+Package: linux-modules-nvidia-435-ABI-generic
+Build-Profiles: <!stage1>
+Architecture: amd64
+Section: kernel
+Priority: optional
+Built-Using: ${linux:BuiltUsing}
+Depends: ${misc:Depends}, ${shlibs:Depends}, binutils, linux-image-ABI-generic | linux-image-unsigned-ABI-generic, nvidia-kernel-common-435
+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
+ linux-image-nvidia-FLAVOUR meta-package, which will ensure that upgrades work
+ correctly, and that supporting packages are also installed.
+
+Package: linux-modules-nvidia-435-ABI-lowlatency
+Build-Profiles: <!stage1>
+Architecture: amd64
+Section: kernel
+Priority: optional
+Built-Using: ${linux:BuiltUsing}
+Depends: ${misc:Depends}, ${shlibs:Depends}, binutils, linux-image-ABI-lowlatency | linux-image-unsigned-ABI-lowlatency, nvidia-kernel-common-435
+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
+ linux-image-nvidia-FLAVOUR meta-package, which will ensure that upgrades work
+ correctly, and that supporting packages are also installed.
+
+Package: linux-modules-nvidia-435-generic
+Build-Profiles: <!stage1>
+Architecture: amd64
+Section: kernel
+Depends: ${misc:Depends}, linux-modules-nvidia-435-ABI-generic (= ${binary:Version})
+Description: Extra drivers for nvidia-435 for the generic flavour
+ Install extra signed nvidia-435 modules compatible with the generic flavour.
+
+Package: linux-modules-nvidia-435-lowlatency
+Build-Profiles: <!stage1>
+Architecture: amd64
+Section: kernel
+Depends: ${misc:Depends}, linux-modules-nvidia-435-ABI-lowlatency (= ${binary:Version})
+Description: Extra drivers for nvidia-435 for the lowlatency flavour
+ Install extra signed nvidia-435 modules compatible with the lowlatency flavour.
+
+Package: linux-modules-nvidia-440-ABI-generic
+Build-Profiles: <!stage1>
+Architecture: amd64
+Section: kernel
+Priority: optional
+Built-Using: ${linux:BuiltUsing}
+Depends: ${misc:Depends}, ${shlibs:Depends}, binutils, linux-image-ABI-generic | linux-image-unsigned-ABI-generic, nvidia-kernel-common-440
+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
+ linux-image-nvidia-FLAVOUR meta-package, which will ensure that upgrades work
+ correctly, and that supporting packages are also installed.
+
+Package: linux-modules-nvidia-440-ABI-lowlatency
+Build-Profiles: <!stage1>
+Architecture: amd64
+Section: kernel
+Priority: optional
+Built-Using: ${linux:BuiltUsing}
+Depends: ${misc:Depends}, ${shlibs:Depends}, binutils, linux-image-ABI-lowlatency | linux-image-unsigned-ABI-lowlatency, nvidia-kernel-common-440
+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
+ linux-image-nvidia-FLAVOUR meta-package, which will ensure that upgrades work
+ correctly, and that supporting packages are also installed.
+
+Package: linux-modules-nvidia-440-generic
+Build-Profiles: <!stage1>
+Architecture: amd64
+Section: kernel
+Depends: ${misc:Depends}, linux-modules-nvidia-440-ABI-generic (= ${binary:Version})
+Description: Extra drivers for nvidia-440 for the generic flavour
+ Install extra signed nvidia-440 modules compatible with the generic flavour.
+
+Package: linux-modules-nvidia-440-lowlatency
+Build-Profiles: <!stage1>
+Architecture: amd64
+Section: kernel
+Depends: ${misc:Depends}, linux-modules-nvidia-440-ABI-lowlatency (= ${binary:Version})
+Description: Extra drivers for nvidia-440 for the lowlatency flavour
+ Install extra signed nvidia-440 modules compatible with the lowlatency flavour.
diff --git a/debian/dkms-versions b/debian/dkms-versions
index 274a3bb..44e43c1 100644
--- a/debian/dkms-versions
+++ b/debian/dkms-versions
@@ -1,3 +1,5 @@ 
 spl-linux 0.7.5-1ubuntu2
 zfs-linux 0.7.5-1ubuntu16.7
 nvidia-graphics-drivers-390 390.116-0ubuntu0.18.04.3
+nvidia-graphics-drivers-435 0
+nvidia-graphics-drivers-440 0
diff --git a/debian/rules b/debian/rules
index 0468f1b..61f6af2 100755
--- a/debian/rules
+++ b/debian/rules
@@ -13,7 +13,9 @@  src_fullversion = $(shell LC_ALL=C dpkg-parsechangelog | grep ^Version: | cut -d
 src_abi = $(shell echo "$(src_fullversion)" | sed -ne 's/\([0-9]*\.[0-9]*\.[0-9]*\-[0-9]*\)\..*/\1/p')
 src_version = $(shell echo $(src_fullversion) | sed -e 's/+[0-9][0-9]*//')

-dkms_nvidia_version=$(shell gawk '/^nvidia-graphics-drivers-/ { print $$2; }' debian/dkms-versions)
+dkms_nvidia_390_version=$(shell gawk '/^nvidia-graphics-drivers-390/ { print $$2; }' debian/dkms-versions)
+dkms_nvidia_435_version=$(shell gawk '/^nvidia-graphics-drivers-435/ { print $$2; }' debian/dkms-versions)
+dkms_nvidia_440_version=$(shell gawk '/^nvidia-graphics-drivers-440/ { print $$2; }' debian/dkms-versions)

 test:
 	echo "$(src_fullversion) $(src_version)"
@@ -57,7 +59,7 @@  endef
 dkms_dir=$(call dkms_dir_prefix,$(CURDIR))

 define build_dkms =
-	$(SHELL) debian/scripts/dkms-build $(dkms_dir) $(1) --lrm $(2) $(3) $(4) $(5)
+	$(SHELL) debian/scripts/dkms-build $(dkms_dir) $(1) --lrm $(2) $(3) $(4) $(5) $(6)
 endef

 ifeq ($(arch),ppc64el)
@@ -67,13 +69,14 @@  instfile=vmlinuz
 endif

 define install_control =
-	for which in $(4);							\
+	for which in $(5);							\
 	do									\
 		template="debian/templates/$(3).$$which.in";			\
 		script="debian/$(1).$$which";					\
 		sed -e 's/@abiname@/$(src_abi)/g'				\
 		    -e 's/@localversion@/-$(2)/g'				\
 		    -e 's/@image-stem@/$(instfile)/g'				\
+		    -e 's/@nvidia-ver@/$(4)/g'					\
 			<"$$template" >"$$script";				\
 	done
 endef
@@ -86,8 +89,18 @@  nvidia-%:
 	mkdir -p $(dkms_dir)/build $(dkms_dir)/source
 	install -d debian/linux-modules-nvidia-390-$(src_abi)-$*
 	install -d debian/linux-modules-nvidia-390-$(src_abi)-$*/usr/lib/linux/triggers
-	$(call build_dkms, $(src_abi)-$*, linux-modules-nvidia-390-$(src_abi)-$*, $(CURDIR)/debian/linux-modules-nvidia-390-$(src_abi)-$*/lib/modules/$(src_abi)-$*/kernel, nvidia-390, pool/restricted/n/nvidia-graphics-drivers-390/nvidia-kernel-source-390_$(dkms_nvidia_version)_$(arch).deb pool/restricted/n/nvidia-graphics-drivers-390/nvidia-dkms-390_$(dkms_nvidia_version)_$(arch).deb)
-	$(call install_control,linux-modules-nvidia-390-$(src_abi)-$*,$*,nvidia,postinst postrm prerm config templates)
+	$(call build_dkms, $(src_abi)-$*, linux-modules-nvidia-390-$(src_abi)-$*, $(CURDIR)/debian/linux-modules-nvidia-390-$(src_abi)-$*/lib/modules/$(src_abi)-$*/kernel, nvidia-390, pool/restricted/n/nvidia-graphics-drivers-390/nvidia-kernel-source-390_$(dkms_nvidia_390_version)_$(arch).deb pool/restricted/n/nvidia-graphics-drivers-390/nvidia-dkms-390_$(dkms_nvidia_390_version)_$(arch).deb)
+	$(call install_control,linux-modules-nvidia-390-$(src_abi)-$*,$*,nvidia,390,postinst postrm prerm config templates)
+
+	install -d debian/linux-modules-nvidia-435-$(src_abi)-$*
+	install -d debian/linux-modules-nvidia-435-$(src_abi)-$*/usr/lib/linux/triggers
+	$(call build_dkms, $(src_abi)-$*, linux-modules-nvidia-435-$(src_abi)-$*, $(CURDIR)/debian/linux-modules-nvidia-435-$(src_abi)-$*/lib/modules/$(src_abi)-$*/kernel, nvidia-435, pool/restricted/n/nvidia-graphics-drivers-435/nvidia-kernel-source-435_$(dkms_nvidia_435_version)_$(arch).deb pool/restricted/n/nvidia-graphics-drivers-435/nvidia-dkms-435_$(dkms_nvidia_435_version)_$(arch).deb)
+	$(call install_control,linux-modules-nvidia-435-$(src_abi)-$*,$*,nvidia,435,postinst postrm prerm config templates)
+
+	install -d debian/linux-modules-nvidia-440-$(src_abi)-$*
+	install -d debian/linux-modules-nvidia-440-$(src_abi)-$*/usr/lib/linux/triggers
+	$(call build_dkms, $(src_abi)-$*, linux-modules-nvidia-440-$(src_abi)-$*, $(CURDIR)/debian/linux-modules-nvidia-440-$(src_abi)-$*/lib/modules/$(src_abi)-$*/kernel, nvidia-440, pool/restricted/n/nvidia-graphics-drivers-440/nvidia-kernel-source-440_$(dkms_nvidia_440_version)_$(arch).deb pool/restricted/n/nvidia-graphics-drivers-440/nvidia-dkms-440_$(dkms_nvidia_440_version)_$(arch).deb)
+	$(call install_control,linux-modules-nvidia-440-$(src_abi)-$*,$*,nvidia,440,postinst postrm prerm config templates)

 prepare-dkms:
 	mkdir -p $(dkms_dir)
diff --git a/debian/templates/nvidia.postinst.in b/debian/templates/nvidia.postinst.in
index 5564487..607d72a 100755
--- a/debian/templates/nvidia.postinst.in
+++ b/debian/templates/nvidia.postinst.in
@@ -4,7 +4,7 @@  set -e
 version=@abiname@@localversion@
 image_path=/boot/@image-stem@-$version

-bits=/lib/modules/$version/kernel/nvidia-390/bits
+bits=/lib/modules/$version/kernel/nvidia-@nvidia-ver@/bits

 if [ "$1" != configure ]; then
     exit 0
diff --git a/debian/templates/nvidia.prerm.in b/debian/templates/nvidia.prerm.in
index 2855651..f8b8e3e 100755
--- a/debian/templates/nvidia.prerm.in
+++ b/debian/templates/nvidia.prerm.in
@@ -3,7 +3,7 @@  set -e

 version=@abiname@@localversion@

-bits=/lib/modules/$version/kernel/nvidia-390/bits
+bits=/lib/modules/$version/kernel/nvidia-@nvidia-ver@/bits

 if [ "$1" != remove ]; then
     exit 0