]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
mbox2send script added for posterity of what not to do...
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Aug 2019 16:26:02 +0000 (09:26 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Aug 2019 16:26:02 +0000 (09:26 -0700)
scripts/mbox2send [new file with mode: 0755]

diff --git a/scripts/mbox2send b/scripts/mbox2send
new file mode 100755 (executable)
index 0000000..58f87a3
--- /dev/null
@@ -0,0 +1,122 @@
+#!/usr/bin/perl -W
+#
+# This takes a mbox of email, created with 'quilt mail --mbox'
+# and formats it in the proper way to send off a -stable kernel review.
+#
+# This means:
+#  - strip off some quilt headers and the threading
+#  - add some text at the top of every message.
+#
+# Written in perl because the bash version is broken, it doesn't pass
+# through the patch correctly :(
+#
+
+my $line;
+
+my $root_version = shift;
+
+if ($root_version eq "") {
+       print "must provide kernel root version number\n";
+       die;
+}
+
+my $full_version = shift;
+if ($full_version eq "") {
+       print "must provide kernel full version number\n";
+       die;
+}
+my $mbox = shift;
+
+if ($mbox eq "") {
+       print "must provide the name of the mbox file\n";
+       die;
+}
+
+my $date=`date -u --iso-8601=minutes --date="2 days"`;
+chomp($date);
+
+$mboxnew = "$mbox.new";
+chomp($mboxnew);
+
+open MBOX, "$mbox" || die "Failed to open $mbox";
+open FILE, ">$mboxnew" || die "Failed to create $mboxnew";
+
+my $header = "true";
+my $eat = "false";
+my $tags_written = "false";
+my $stable_tag_written = "false";
+
+while ($line = <MBOX>) {
+       $eat = "false";
+
+       if ($header eq "false") {
+               if ($line =~ m/^From /) {
+                       # start of a message, this is the header
+                       $header = "true";
+               }
+       }
+
+       if ($header eq "true") {
+               if ($stable_tag_written eq "false") {
+                       if ($line =~ m/^Subject:/) {
+                               # always add a "X-stable: review" tag
+                               print FILE "X-stable: review\n";
+                               $stable_tag_written = "true";
+                               # and a "X-Patchwork-Hint: ignore" tag
+                               print FILE "X-Patchwork-Hint: ignore\n"
+                       }
+               }
+
+               # if first Subject: line, add our tags
+               if ($tags_written eq "false") {
+                       if ($line =~ m/^Subject:/) {
+                               # write out our own X-KernelTest tags to make automated tools's lives easier
+                               print FILE "X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-$full_version.gz\n";
+                               print FILE "X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git\n";
+                               print FILE "X-KernelTest-Branch: linux-$root_version.y\n";
+                               print FILE "X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git\n";
+                               print FILE "X-KernelTest-Version: $full_version\n";
+                               print FILE "X-KernelTest-Deadline: $date\n";
+
+                               $tags_written = "true";
+
+                               # hack around the fact that content-type is not in the 000 message
+                               # and so the 001 message will not get the X- flags we want to set above
+                               $stable_tag_written = "false";
+                       }
+               }
+
+               # strip out References line
+               if ($line =~ m/^References:/) {
+                       # eat the line
+                       $eat = "true";
+               }
+               # strip out the Content-Disposition line
+               if ($line =~ m/Content-Disposition:/) {
+                       # eat the line
+                       $eat = "true";
+
+                       # we are now out of the header
+                       $header = "false";
+                       $stable_tag_written = "false";
+
+                       # write out our custom header too
+                       print FILE "\n";
+                       print FILE "$root_version-stable review patch.  If anyone has any objections, please let me know.\n";
+                       print FILE "\n";
+                       print FILE "------------------\n";
+               }
+       }
+
+       if ($eat eq "false") {
+               print FILE $line;
+       }
+}
+close MBOX;
+close FILE;
+
+#print "# New mailbox is in $mboxnew\n";
+#print "# To send the patches out, do:\n";
+#print "cat $mboxnew | formail -A \"In-Reply-To: <FOO>\" -s  msmtp-enqueue.sh\n";
+#print "# or\n";
+#print "< $mboxnew formail -ds sh -c 'cat > msg.\$FILENO'\n";