From 9224b65b1a7030a4fd8a0f9c734aecff723c8a21 Mon Sep 17 00:00:00 2001 From: Thierry Vignaud Date: Tue, 5 Jan 2010 12:45:39 +0000 Subject: (_kernel_callback) add packages requiring orphan kernels to the orphan lists too, eg dkms packages (#53414) --- urpm/orphans.pm | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'urpm') diff --git a/urpm/orphans.pm b/urpm/orphans.pm index 8ad304fc..f2363bc2 100644 --- a/urpm/orphans.pm +++ b/urpm/orphans.pm @@ -312,14 +312,20 @@ sub _get_current_kernel_package() { # do not care about (eg: kernel-devel, kernel-firmware, kernel-latest) # so it's useless to look at them # -my (@latest_kernels, %kernels); +my (@latest_kernels, %requested_kernels, %kernels); sub _kernel_callback { my ($pkg, $unreq_list) = @_; my $shortname = $pkg->name; my $n = $pkg->fullname; # only consider kernels (and not main 'kernel' package): - return if $shortname !~ /^kernel-/; + # but perform a pass on their requires for dkms like packages that require a specific kernel: + if ($shortname !~ /^kernel-/) { + foreach (grep { /^kernel/ } $pkg->requires) { + $requested_kernels{$_}{$shortname} = $pkg; + } + return; + } # only consider real kernels (and not kernel-doc and the like): return if $shortname =~ /-(?:source|doc|headers|firmware(?:|-extra))$/; @@ -379,6 +385,11 @@ sub _all_unrequested_orphans { my $a = { _get_orphan_kernels() }; add2hash_(\%l, $a); + # add packages that require orphan kernels to the list: + foreach (keys %$a) { + add2hash_(\%l, $requested_kernels{$_}); + } + # do not offer to remove current kernel: delete $l{$current_kernel}; [ values %l ]; -- cgit v1.2.1