[kernel] r22944 - people/benh

Ben Hutchings benh at moszumanska.debian.org
Mon Nov 16 19:13:29 UTC 2015


Author: benh
Date: Mon Nov 16 19:13:29 2015
New Revision: 22944

Log:
Rename patch listing script that's specific to the linux-2.6 patch system

Added:
   people/benh/linux-2.6-list-applied-patches
      - copied unchanged from r22943, people/benh/debian-kernel-patches-list
Deleted:
   people/benh/debian-kernel-patches-list

Copied: people/benh/linux-2.6-list-applied-patches (from r22943, people/benh/debian-kernel-patches-list)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ people/benh/linux-2.6-list-applied-patches	Mon Nov 16 19:13:29 2015	(r22944, copy of r22943, people/benh/debian-kernel-patches-list)
@@ -0,0 +1,73 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use FileHandle;
+use POSIX ();
+
+my @debian_revs;
+my $upstream_ver;
+my $dfsg_rev;
+
+my $log = new FileHandle('dpkg-parsechangelog --format rfc822 --all |');
+while (<$log>) {
+    next unless /^Version: (.*)-(.*)\n/;
+    my ($u, $d) = ($1, $2);
+    my $has_dfsg_rev = $u =~ s/\.dfsg\.(\d+)$//;
+    if (!defined($dfsg_rev)) {
+	$dfsg_rev = $has_dfsg_rev ? $1 : 0;
+    }
+    if (defined($upstream_ver)) {
+	last if $upstream_ver ne $u;
+    } else {
+	$upstream_ver = $u;
+    }
+    push @debian_revs, $d;
+}
+$log->close();
+
+my @series_list = (map({"orig-$_"} (0..$dfsg_rev)), 'base', reverse(@debian_revs));
+my %applied;
+my $pos = 1;
+
+for (@series_list) {
+    my $series_name = "debian/patches/series/$_";
+    my $series = new FileHandle($series_name, 'r');
+    if (!defined($series)) {
+	next if $! == POSIX::ENOENT;
+	die "$series_name: $!";
+    }
+    while (<$series>) {
+	next if /^\s*(#|$)/;
+	/^([-+X]) (\S+)\s*$/ or die "$series_name:$.: unrecognised line";
+	my ($op, $name) = ($1, $2);
+	if ($op eq '-') {
+	    if ($applied{$name}) {
+		delete $applied{$name};
+	    } else {
+		print STDERR "$series_name:$.: reverts $name; not currently applied\n";
+		$applied{$name} = -$pos;
+	    }
+	} elsif ($op eq '+') {
+	    if ($applied{$name}) {
+		if ($applied{$name} < 0) {
+		    delete $applied{$name};
+		} else {
+		    die "$series_name:$.: applies $name; already applied";
+		}
+	    } else {
+		$applied{$name} = $pos;
+	    }
+	} else {
+	    print STDERR "$series_name:$.: ignoring X $name\n";
+	}
+	++$pos;
+    }
+    $series->close();
+}
+
+# Print unreverted patches in order
+for (sort({$applied{$a} <=> $applied{$b}} keys %applied)) {
+    print "$_\n";
+}



More information about the Kernel-svn-changes mailing list