Sorry, diff was missing in my last mail. -- /* Mit freundlichem Gruß / With kind regards, Patrick Matthäi GNU/Linux Debian Developer Blog: http://www.linux-dev.org/ E-Mail: pmatthaei@debian.org patrick@linux-dev.org */
diff -Naur '--exclude=.svn' tags/1.2-8/debian/changelog branches/jessie/debian/changelog --- tags/1.2-8/debian/changelog 2015-04-13 18:13:30.339892538 +0200 +++ branches/jessie/debian/changelog 2015-05-27 19:28:45.169677116 +0200 @@ -1,3 +1,16 @@ +needrestart (1.2-8+deb8u1) stable; urgency=low + + * Add patch 17-fix-interp-use-undef-in-chdir to fix warnings and errors if a + process has not got a valid cwd. + Closes: #779832 + * Add patch 18-fix-kernel-version-sorting to fix the Linux kernel version + sorting, so that 4.0 is also considered to be higher than 3.19.x. + Closes: #781657 + * Add patch 20-fix-perl-warning-dangling-kernel to fix Perl warnings while + scanning dangling kernel symlinks. + + -- Patrick Matthäi <pmatthaei@debian.org> Wed, 27 May 2015 19:21:57 +0200 + needrestart (1.2-8) unstable; urgency=low * Add patch 16-fix-progressbar-regression to improve detection if invoked diff -Naur '--exclude=.svn' tags/1.2-8/debian/patches/17-fix-interp-use-undef-in-chdir.diff branches/jessie/debian/patches/17-fix-interp-use-undef-in-chdir.diff --- tags/1.2-8/debian/patches/17-fix-interp-use-undef-in-chdir.diff 1970-01-01 01:00:00.000000000 +0100 +++ branches/jessie/debian/patches/17-fix-interp-use-undef-in-chdir.diff 2015-04-13 18:13:30.307893655 +0200 @@ -0,0 +1,57 @@ +# The Interp implementations did not check if scanned processes have +# a valid cwd. This results in a broken scan and warnings on STDERR. +# Closes: #779832 +--- + perl/lib/NeedRestart/Interp/Perl.pm | 4 ++++ + perl/lib/NeedRestart/Interp/Python.pm | 4 ++++ + perl/lib/NeedRestart/Interp/Ruby.pm | 4 ++++ + 3 files changed, 12 insertions(+) + +diff --git a/perl/lib/NeedRestart/Interp/Perl.pm b/perl/lib/NeedRestart/Interp/Perl.pm +index 4ca9c72..27bea27 100644 +--- a/perl/lib/NeedRestart/Interp/Perl.pm ++++ b/perl/lib/NeedRestart/Interp/Perl.pm +@@ -84,6 +84,10 @@ sub files { + my $self = shift; + my $pid = shift; + my $ptable = nr_ptable_pid($pid); ++ unless($ptable->{cwd}) { ++ print STDERR "$LOGPREF #$pid: could not get current working directory, skipping\n" if($self->{debug}); ++ return (); ++ } + my $cwd = getcwd(); + chdir($ptable->{cwd}); + +diff --git a/perl/lib/NeedRestart/Interp/Python.pm b/perl/lib/NeedRestart/Interp/Python.pm +index 92bd9b0..79e0dcb 100644 +--- a/perl/lib/NeedRestart/Interp/Python.pm ++++ b/perl/lib/NeedRestart/Interp/Python.pm +@@ -83,6 +83,10 @@ sub source { + my $self = shift; + my $pid = shift; + my $ptable = nr_ptable_pid($pid); ++ unless($ptable->{cwd}) { ++ print STDERR "$LOGPREF #$pid: could not get current working directory, skipping\n" if($self->{debug}); ++ return (); ++ } + my $cwd = getcwd(); + chdir($ptable->{cwd}); + +diff --git a/perl/lib/NeedRestart/Interp/Ruby.pm b/perl/lib/NeedRestart/Interp/Ruby.pm +index 6b0d0ab..9fed677 100644 +--- a/perl/lib/NeedRestart/Interp/Ruby.pm ++++ b/perl/lib/NeedRestart/Interp/Ruby.pm +@@ -80,6 +80,10 @@ sub source { + my $self = shift; + my $pid = shift; + my $ptable = nr_ptable_pid($pid); ++ unless($ptable->{cwd}) { ++ print STDERR "$LOGPREF #$pid: could not get current working directory, skipping\n" if($self->{debug}); ++ return (); ++ } + my $cwd = getcwd(); + chdir($ptable->{cwd}); + +-- +2.1.4 + diff -Naur '--exclude=.svn' tags/1.2-8/debian/patches/18-fix-kernel-version-sorting.diff branches/jessie/debian/patches/18-fix-kernel-version-sorting.diff --- tags/1.2-8/debian/patches/18-fix-kernel-version-sorting.diff 1970-01-01 01:00:00.000000000 +0100 +++ branches/jessie/debian/patches/18-fix-kernel-version-sorting.diff 2015-04-13 18:13:30.307893655 +0200 @@ -0,0 +1,117 @@ +# Take version number comparing stuff from Dpkg::Version to sort kernel +# versions correctly (i.e. 4.0 > 3.19.x). +# Closes: #781657 +--- + perl/lib/NeedRestart/Kernel.pm | 63 +++++++++++++++++++++++++++++++++ + perl/lib/NeedRestart/Kernel/Linux.pm | 2 +- + perl/lib/NeedRestart/Kernel/kFreeBSD.pm | 2 +- + 3 files changed, 65 insertions(+), 2 deletions(-) + +diff --git a/perl/lib/NeedRestart/Kernel.pm b/perl/lib/NeedRestart/Kernel.pm +index 5c601ac..cacd7e7 100644 +--- a/perl/lib/NeedRestart/Kernel.pm ++++ b/perl/lib/NeedRestart/Kernel.pm +@@ -42,6 +42,7 @@ our @ISA = qw(Exporter); + + our @EXPORT = qw( + nr_kernel_check ++ nr_kernel_vcmp + NRK_UNKNOWN + NRK_NOUPGRADE + NRK_ABIUPGRADE +@@ -74,4 +75,66 @@ sub nr_kernel_check($$) { + return (NRK_UNKNOWN, %vars); + } + ++## The following version number comparing stuff was taken from Dpkg::Version. ++## The code has been adopted to be usable in needrestart w/o any additional ++## dependencies. ++ ++sub _nr_kversion_order { ++ my ($x) = @_; ++ ++ if ($x eq '~') { ++ return -1; ++ } elsif ($x =~ /^\d$/) { ++ return $x * 1 + 1; ++ } elsif ($x =~ /^[A-Za-z]$/) { ++ return ord($x); ++ } else { ++ return ord($x) + 256; ++ } ++} ++ ++sub _nr_kversion_strcmp($$) { ++ my @a = map { _nr_kversion_order($_); } split(//, shift); ++ my @b = map { _nr_kversion_order($_); } split(//, shift); ++ ++ while (1) { ++ my ($a, $b) = (shift @a, shift @b); ++ return 0 unless(defined($a) || defined($b)); ++ ++ $a ||= 0; # Default order for "no character" ++ $b ||= 0; ++ ++ return 1 if($a > $b); ++ return -1 if($a < $b); ++ } ++} ++ ++sub nr_kernel_vcmp($$) { ++ # sort well known devel tags just as grub does ++ my @v = map { ++ my $v = $_; ++ $v =~ s/[._-](pre|rc|test|git|old|trunk)/~$1/g; ++ $v; ++ } @_; ++ ++ my @a = split(/(?<=\d)(?=\D)|(?<=\D)(?=\d)/, shift(@v)); ++ my @b = split(/(?<=\d)(?=\D)|(?<=\D)(?=\d)/, shift(@v)); ++ ++ while(1) { ++ my ($a, $b) = (shift @a, shift @b); ++ return 0 unless(defined($a) || defined($b)); ++ ++ $a ||= 0; ++ $b ||= 0; ++ if($a =~ /^\d+$/ && $b =~ /^\d+$/) { ++ my $cmp = $a <=> $b; ++ return $cmp if($cmp); ++ } ++ else { ++ my $cmp = _nr_kversion_strcmp($a, $b); ++ return $cmp if($cmp); ++ } ++ } ++} ++ + 1; +diff --git a/perl/lib/NeedRestart/Kernel/Linux.pm b/perl/lib/NeedRestart/Kernel/Linux.pm +index 4152c6d..5100335 100644 +--- a/perl/lib/NeedRestart/Kernel/Linux.pm ++++ b/perl/lib/NeedRestart/Kernel/Linux.pm +@@ -124,7 +124,7 @@ sub nr_kernel_check_real($$) { + return (NRK_UNKNOWN, %vars); + } + +- ($vars{EVERSION}) = reverse nsort keys %kernels; ++ ($vars{EVERSION}) = reverse sort { nr_kernel_vcmp($a, $b); } keys %kernels; + print STDERR "$LOGPREF Expected kernel version: $vars{EVERSION}\n" if($debug); + + return (NRK_VERUPGRADE, %vars) if($vars{KVERSION} ne $vars{EVERSION}); +diff --git a/perl/lib/NeedRestart/Kernel/kFreeBSD.pm b/perl/lib/NeedRestart/Kernel/kFreeBSD.pm +index c1b0f65..6c2fbd8 100644 +--- a/perl/lib/NeedRestart/Kernel/kFreeBSD.pm ++++ b/perl/lib/NeedRestart/Kernel/kFreeBSD.pm +@@ -79,7 +79,7 @@ sub nr_kernel_check_real($$) { + return (NRK_UNKNOWN, %vars); + } + +- ($vars{EVERSION}) = reverse nsort keys %kernels; ++ ($vars{EVERSION}) = reverse sort { nr_kernel_vcmp($a, $b); } keys %kernels; + print STDERR "$LOGPREF Expected kernel version: $vars{EVERSION}\n" if($debug); + + return (NRK_VERUPGRADE, %vars) if($vars{KVERSION} ne $vars{EVERSION}); +-- +2.1.4 + diff -Naur '--exclude=.svn' tags/1.2-8/debian/patches/20-fix-perl-warning-dangling-kernel.diff branches/jessie/debian/patches/20-fix-perl-warning-dangling-kernel.diff --- tags/1.2-8/debian/patches/20-fix-perl-warning-dangling-kernel.diff 1970-01-01 01:00:00.000000000 +0100 +++ branches/jessie/debian/patches/20-fix-perl-warning-dangling-kernel.diff 2015-05-27 19:20:37.683543473 +0200 @@ -0,0 +1,42 @@ +# Fix Perl warnings while scanning dangling kernel symlinks. + +--- + perl/lib/NeedRestart/Kernel/Linux.pm | 5 +++++ + perl/lib/NeedRestart/Kernel/kFreeBSD.pm | 5 +++++ + 2 files changed, 10 insertions(+) + +diff --git a/perl/lib/NeedRestart/Kernel/Linux.pm b/perl/lib/NeedRestart/Kernel/Linux.pm +index 5100335..b2a1452 100644 +--- a/perl/lib/NeedRestart/Kernel/Linux.pm ++++ b/perl/lib/NeedRestart/Kernel/Linux.pm +@@ -94,6 +94,11 @@ sub nr_kernel_check_real($$) { + $ui->progress_step; + my $stat = nr_stat($fn); + ++ unless(defined($stat)) { ++ print STDERR "$LOGPREF could not stat(2) on $fn\n" if($debug); ++ next; ++ } ++ + if($stat->{size} < 1000000) { + print STDERR "$LOGPREF $fn seems to be too small\n" if($debug); + next; +diff --git a/perl/lib/NeedRestart/Kernel/kFreeBSD.pm b/perl/lib/NeedRestart/Kernel/kFreeBSD.pm +index 6c2fbd8..03dc0dc 100644 +--- a/perl/lib/NeedRestart/Kernel/kFreeBSD.pm ++++ b/perl/lib/NeedRestart/Kernel/kFreeBSD.pm +@@ -52,6 +52,11 @@ sub nr_kernel_check_real($$) { + $ui->progress_step; + my $stat = nr_stat($fn); + ++ unless(defined($stat)) { ++ print STDERR "$LOGPREF could not stat(2) on $fn\n" if($debug); ++ next; ++ } ++ + if($stat->{size} < 1000000) { + print STDERR "$LOGPREF $fn seems to be too small\n" if($debug); + next; +-- +2.1.4 + diff -Naur '--exclude=.svn' tags/1.2-8/debian/patches/series branches/jessie/debian/patches/series --- tags/1.2-8/debian/patches/series 2015-04-13 18:13:30.343892400 +0200 +++ branches/jessie/debian/patches/series 2015-05-27 19:20:46.891358635 +0200 @@ -14,3 +14,6 @@ 14-wpa_supplicant-override.diff 15-fix-progressbar-non-interactive.diff 16-fix-progressbar-regression.diff +17-fix-interp-use-undef-in-chdir.diff +18-fix-kernel-version-sorting.diff +20-fix-perl-warning-dangling-kernel.diff
Attachment:
signature.asc
Description: OpenPGP digital signature