From b7c15c31519dc44c1f691e0466badd556ffe9423 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 18:18:56 +0200 Subject: Adding upstream version 3.7.10. Signed-off-by: Daniel Baumann --- mantools/make-relnotes | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100755 mantools/make-relnotes (limited to 'mantools/make-relnotes') diff --git a/mantools/make-relnotes b/mantools/make-relnotes new file mode 100755 index 0000000..f5d26f3 --- /dev/null +++ b/mantools/make-relnotes @@ -0,0 +1,85 @@ +#!/usr/bin/perl + +# Transform RELEASE_NOTES, split into "leader", and "major changes", +# split into major categories, and prepend dates to paragraphs. +# +# Input format: the leader text is copied verbatim; each section +# starts with "Incompatible changes with snapshot YYYYMMDD" or "Major +# changes with snapshot YYYYMMDD"; each paragraph starts with [class, +# class] where a class specifies one or more categories that the +# change should be listed under. Adding class info is the only manual +# processing needed to go from a RELEASE_NOTES file to the transformed +# representation. +# +# Output format: each category is printed with a little header and +# each paragraph is tagged with [Incompat yyyymmdd] or with [Feature +# yyyymmdd]. + +%leader = (); %body = (); +$append_to = \%leader; + +while (<>) { + + if (/^(Incompatible changes|Incompatibility) with/) { + die "No date found: $_" unless /(\d\d\d\d\d\d\d\d)/; + $append_to = \%body; + $prefix = "[Incompat $1] "; + while (<>) { + last if /^====/; + } + next; + } + + if (/^Major changes with/) { + die "No date found: $_" unless /(\d\d\d\d\d\d\d\d)/; + $append_to = \%body; + $prefix = "[Feature $1] "; + while (<>) { + last if /^====/; + } + next; + } + + if (/^\s*\n/) { + if ($paragraph) { + for $class (@classes) { + ${$append_to}{$class} .= $paragraph . $_; + } + $paragraph = ""; + } + } else { + if ($paragraph eq "") { + if ($append_to eq \%leader) { + @classes = ("default"); + $paragraph = $_; + } elsif (/^\[([^]]+)\]\s*(.*)/s) { + $paragraph = $prefix . $2; + ($junk = $1) =~ s/\s*,\s*/,/g; + $junk =~ s/^\s+//; + $junk =~ s/\s+$//; + #print "junk >$junk<\n"; + @classes = split(/,+/, $junk); + #print "[", join(', ', @classes), "] ", $paragraph; + } else { + $paragraph = $_; + } + } else { + $paragraph .= $_; + } + } +} + +if ($paragraph) { + for $class (@classes) { + ${$append_to}{$class} .= $prefix . $paragraph . $_; + } +} + +print $leader{"default"}; + +for $class (sort keys %body) { + print "Major changes - $class\n"; + ($junk = "Major changes - $class") =~ s/./-/g; + print $junk, "\n\n"; + print $body{$class}; +} -- cgit v1.2.3