also add the new dependency for `libdpkg-perl`

Signed-off-by: Hannes Duerr <h.du...@proxmox.com>
---
 debian/control         |  1 +
 pve-nvidia-vgpu-helper | 20 ++++++++++++++++----
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/debian/control b/debian/control
index 4492b60..352e63a 100644
--- a/debian/control
+++ b/debian/control
@@ -9,6 +9,7 @@ Homepage: https://www.proxmox.com
 Package: pve-nvidia-vgpu-helper
 Architecture: all
 Depends: libapt-pkg-perl,
+         libdpkg-perl,
          ${misc:Depends},
 Description: Proxmox Nvidia vGPU helper script and systemd service
  This package provides a script, that helps with installing all required
diff --git a/pve-nvidia-vgpu-helper b/pve-nvidia-vgpu-helper
index 885b879..4c57578 100755
--- a/pve-nvidia-vgpu-helper
+++ b/pve-nvidia-vgpu-helper
@@ -5,6 +5,7 @@ use warnings;
 
 use PVE::Tools qw(run_command);
 use AptPkg::Cache;
+use Dpkg::Version;
 
 my @apt_install = qw(apt-get --no-install-recommends install --);
 my @dependencies = qw(dkms libc6-dev proxmox-default-headers);
@@ -23,6 +24,16 @@ sub package_is_installed {
     }
 }
 
+sub install_newer_headers {
+    my ($running_version, @installed_versions) = @_;
+    for my $version (@installed_versions) {
+       # install header for the running kernel and newer kernel versions
+       if (Dpkg::Version::version_compare($running_version, $version) != 1){
+           package_is_installed("proxmox-headers-$version-pve");
+       }
+    }
+}
+
 foreach my $dependency (@dependencies) {
     package_is_installed($dependency);
 }
@@ -32,17 +43,18 @@ my $running_kernel;
 run_command( ['/usr/bin/uname', '-r' ],
     outfunc => sub { $running_kernel = shift } );
 
+my @installed_versions;
 run_command(['/usr/bin/dpkg-query', '-W', 'proxmox-kernel-*-pve'],
     outfunc => sub {
        my $installed_kernel = shift;
-       $installed_kernel =~ 
s/^\s*proxmox-kernel(-\d+.\d+.\d+-\d+-pve)\s*$/proxmox-headers$1/;
-       package_is_installed($installed_kernel);
+       $installed_kernel =~ m/^\s*proxmox-kernel-(\d+.\d+.\d+-\d+)-pve\s*$/;
+       push(@installed_versions, $1);
     });
 
 
-
-if ($running_kernel =~ m/^\d+\.\d+\.\d+-\d+-pve$/) {
+if ($running_kernel =~ m/^(\d+\.\d+\.\d+-\d+)-pve$/) {
     print "You are running the proxmox kernel 
`proxmox-kernel-$running_kernel`\n";
+    install_newer_headers($1, @installed_versions);
 } else {
     die "You are not using a proxmox-kernel, please make sure that the 
appropriate header package is installed.\n";
 }
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to