diff --git a/dracut.changes b/dracut.changes index 2b3ef77..6ab5d08 100644 --- a/dracut.changes +++ b/dracut.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Thu Feb 28 20:09:28 UTC 2019 - Michal Suchanek + +- Handle non-versioned dependency in purge-kernels. + ------------------------------------------------------------------- Mon Feb 25 14:51:07 UTC 2019 - Daniel Molkentin diff --git a/purge-kernels b/purge-kernels index 7ac10e3..141ae3c 100644 --- a/purge-kernels +++ b/purge-kernels @@ -272,7 +272,7 @@ sub find_package { my $name = shift @_; my $version = shift @_; my @packages = @_; - my $expr = "^" . quotemeta("$name-$version"); + my $expr = "^" . quotemeta($version ? "$name-$version" : $name); my @found = grep { $_ =~ $expr } @packages; return @found if @found; $expr = "^" . quotemeta($name) . " = " . quotemeta($version) . "\$"; @@ -334,12 +334,12 @@ sub remove_packages { push(@packages, $1) unless $new_packages{$1}; $new_packages{$1} = 1; $retry = 1; - } elsif (/([^ \t]*) = ([^ \t]*) is needed by \(installed\) /) { + } elsif (/([^ \t]*)(?: = ([^ \t]*))? is needed by \(installed\) /) { my @unremovable = find_package($1, $2, @packages); my $match = $unremovable[$#unremovable]; if ($match) { print STDERR "$0: $_\n"; - print STDERR "$0: Keeping $1 = $2 ($match)\n"; + print STDERR "$0: Keeping " . ($2 ? "$1 = $2" : $1) . " ($match)\n"; @packages = grep { $_ !~ $match } @packages; $taboo_packages{$match} = 1; $retry = 1;