1
0
This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
on-restart-benchmarks/misc/gentxtchangelog.perl
Jip J. Dekker 3e72b0e857 Squashed 'software/gecode_on_record/' content from commit 37ed9bda4
git-subtree-dir: software/gecode_on_record
git-subtree-split: 37ed9bda495ea87e63217c19a374b5a93bb0078e
2021-06-16 14:03:52 +10:00

206 lines
5.5 KiB
Perl

#!/usr/bin/perl
#
# Main authors:
# Christian Schulte <schulte@gecode.org>
# Guido Tack <tack@gecode.org>
#
# Contributing authors:
# Mikael Lagerkvist <lagerkvist@gecode.org>
#
# Copyright:
# Christian Schulte, 2005
# Guido Tack, 2006
# Mikael Lagerkvist, 2020
#
# This file is part of Gecode, the generic constraint
# development environment:
# http://www.gecode.org
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
#
print <<EOF
Changelog for Gecode
==============================================================================
EOF
;
#
# Compile changelog
#
$first = 1;
$version = "";
$info = "";
$modclear{"kernel"} = "Kernel";
$modclear{"search"} = "Search engines";
$modclear{"int"} = "Finite domain integers";
$modclear{"set"} = "Finite integer sets";
$modclear{"cpltset"} = "Finite integer sets with complete representation";
$modclear{"minimodel"} = "Minimal modeling support";
$modclear{"graph"} = "Graph constraints";
$modclear{"scheduling"} = "Scheduling constraints";
$modclear{"driver"} = "Script commandline driver";
$modclear{"iter"} = "Range and value iterators";
$modclear{"support"} = "Support algorithms and datastructures";
$modclear{"example"} = "Example scripts";
$modclear{"test"} = "Systematic tests";
$modclear{"gist"} = "Gist";
$modclear{"flatzinc"} = "Gecode/FlatZinc";
$modclear{"other"} = "General";
$whatclear{"bug"} = "Bug fixes";
$whatclear{"performance"} = "Performance improvements";
$whatclear{"documentation"} = "Documentation fixes";
$whatclear{"new"} = "Additions";
$whatclear{"removed"} = "Removals";
$whatclear{"change"} = "Other changes";
$rankclear{"minor"} = "minor";
$rankclear{"major"} = "major";
@modorder = ("kernel","search","int","set","cpltset","scheduling","minimodel",
"iter","support","example","test","gist","flatzinc","other");
@whatorder = ("new","change","bug","performance","documentation");
foreach $mod (@modorder) {
$hastext{$mod} = 0;
foreach $what (@whatorder) {
$text{"$mod-$what"} = "";
}
}
while ($l = <>) {
LINE:
next if ($l =~ /^\#/);
$l =~ s/%Gecode/Gecode/g;
if ($l =~ /^\[RELEASE\]/) {
# Print previous
if (!$first) {
print "Changes in Version $version ($date)\n\n";
print "Scope:$info";
foreach $mod (@modorder) {
if ($hastext{$mod}) {
print "- " . $modclear{$mod} . "\n";
$hastext{$mod} = 0;
foreach $what (@whatorder) {
if (!($text{"$mod-$what"} eq "")) {
print " - " . $whatclear{$what} . "\n";
print $text{"$mod-$what"};
$text{"$mod-$what"} = "";
}
}
}
}
print "\n------------------------------------------------------------------------------\n\n";
}
$first = 0;
$version = "";
$info = "";
$date = "";
while (($l = <>) && !($l =~ /\[DESCRIPTION\]/)) {
$l =~ s/%Gecode/Gecode/g;
if ($l =~ /Version:[\t ]*(.*)$/) {
$version = $1;
} elsif ($l =~ /Date:[\t ]*(.*)$/) {
$date = $1;
}
}
while (($l = <>) && !($l =~ /\[ENTRY\]/)) {
$l =~ s/%Gecode/Gecode/g;
# chop $l;
$info = $info . " " . $l;
}
goto LINE;
}
if ($l =~ /^\[ENTRY\]/) {
my $mod, $what, $rank, $bug, $issue, $desc, $thanks;
$desc = "";
$bug = "";
$issue = "";
$rank = "";
$what = "";
$mod = "";
$thanks = "";
while (($l = <>) && !($l =~ /\[DESCRIPTION\]/)) {
$l =~ s/%Gecode/Gecode/g;
if ($l =~ /Module:[\t ]*(.*)$/) {
$mod = $1;
} elsif ($l =~ /What:[\t ]*(.*)$/) {
$what = $1;
} elsif ($l =~ /Rank:[\t ]*(.*)$/) {
$rank = $1;
} elsif ($l =~ /Bug:[\t ]*(.*)$/) {
$bug = $1;
} elsif ($l =~ /Issue:[\t ]*(.*)$/) {
$issue = $1;
} elsif ($l =~ /Thanks:[\t ]*(.*)$/) {
$thanks = $1;
}
}
while (($l = <>) &&
!(($l =~ /\[ENTRY\]/) || ($l =~ /\[RELEASE\]/))) {
$l =~ s/%Gecode/Gecode/g;
# chop $l;
if (!($l =~ /\[MORE\]/)) {
if ($desc eq "") {
$desc = $l;
} else {
$desc = $desc . " " . $l;
}
}
}
chop $desc;
$hastext{$mod} = 1;
$rb = $rankclear{$rank};
if (!($bug eq "")) {
$rb = $rb . ", bugzilla entry $bug";
# $rb = $rb . ", <a href=\"http://www.gecode.org/bugzilla/show_bug.cgi?id="
# . $bug . "\">bugzilla entry</a>";
}
if (!($issue eq "")) {
$rb = $rb . ", github issue $issue";
}
if (!($thanks eq "")) {
$rb = $rb . ", thanks to $thanks";
}
$text{"$mod-$what"} =
($text{"$mod-$what"} . " - $desc(" . $rb . ")\n");
goto LINE;
}
}
print <<EOF
Initial release (2005-12-06)
No changes, of course.
EOF
;