[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#787008: Acknowledgement (pu: package needrestart/1.2-8+deb8u1)



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


Reply to: