this repo has no description
at develop 5.7 kB view raw
1#!/usr/bin/perl 2# 3# Main authors: 4# Christian Schulte <schulte@gecode.org> 5# Guido Tack <tack@gecode.org> 6# 7# Contributing authors: 8# Mikael Lagerkvist <lagerkvist@gecode.org> 9# 10# Copyright: 11# Christian Schulte, 2005 12# Guido Tack, 2006 13# Mikael Lagerkvist, 2020 14# 15# This file is part of Gecode, the generic constraint 16# development environment: 17# http://www.gecode.org 18# 19# Permission is hereby granted, free of charge, to any person obtaining 20# a copy of this software and associated documentation files (the 21# "Software"), to deal in the Software without restriction, including 22# without limitation the rights to use, copy, modify, merge, publish, 23# distribute, sublicense, and/or sell copies of the Software, and to 24# permit persons to whom the Software is furnished to do so, subject to 25# the following conditions: 26# 27# The above copyright notice and this permission notice shall be 28# included in all copies or substantial portions of the Software. 29# 30# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 31# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 32# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 33# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 34# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 35# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 36# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 37# 38# 39 40print <<EOF 41Changelog for Gecode 42============================================================================== 43 44EOF 45; 46 47 48# 49# Compile changelog 50# 51 52$first = 1; 53$version = ""; 54$info = ""; 55 56$modclear{"kernel"} = "Kernel"; 57$modclear{"search"} = "Search engines"; 58$modclear{"int"} = "Finite domain integers"; 59$modclear{"set"} = "Finite integer sets"; 60$modclear{"cpltset"} = "Finite integer sets with complete representation"; 61$modclear{"minimodel"} = "Minimal modeling support"; 62$modclear{"graph"} = "Graph constraints"; 63$modclear{"scheduling"} = "Scheduling constraints"; 64$modclear{"driver"} = "Script commandline driver"; 65$modclear{"iter"} = "Range and value iterators"; 66$modclear{"support"} = "Support algorithms and datastructures"; 67$modclear{"example"} = "Example scripts"; 68$modclear{"test"} = "Systematic tests"; 69$modclear{"gist"} = "Gist"; 70$modclear{"flatzinc"} = "Gecode/FlatZinc"; 71$modclear{"other"} = "General"; 72 73$whatclear{"bug"} = "Bug fixes"; 74$whatclear{"performance"} = "Performance improvements"; 75$whatclear{"documentation"} = "Documentation fixes"; 76$whatclear{"new"} = "Additions"; 77$whatclear{"removed"} = "Removals"; 78$whatclear{"change"} = "Other changes"; 79 80$rankclear{"minor"} = "minor"; 81$rankclear{"major"} = "major"; 82 83@modorder = ("kernel","search","int","set","cpltset","scheduling","minimodel", 84 "iter","support","example","test","gist","flatzinc","other"); 85 86@whatorder = ("new","change","bug","performance","documentation"); 87 88foreach $mod (@modorder) { 89 $hastext{$mod} = 0; 90 foreach $what (@whatorder) { 91 $text{"$mod-$what"} = ""; 92 } 93} 94 95while ($l = <>) { 96 LINE: 97 next if ($l =~ /^\#/); 98 $l =~ s/%Gecode/Gecode/g; 99 if ($l =~ /^\[RELEASE\]/) { 100 # Print previous 101 if (!$first) { 102 print "Changes in Version $version ($date)\n\n"; 103 104 print "Scope:$info"; 105 106 foreach $mod (@modorder) { 107 if ($hastext{$mod}) { 108 print "- " . $modclear{$mod} . "\n"; 109 $hastext{$mod} = 0; 110 foreach $what (@whatorder) { 111 if (!($text{"$mod-$what"} eq "")) { 112 print " - " . $whatclear{$what} . "\n"; 113 print $text{"$mod-$what"}; 114 $text{"$mod-$what"} = ""; 115 } 116 } 117 118 } 119 } 120 print "\n------------------------------------------------------------------------------\n\n"; 121 } 122 $first = 0; 123 $version = ""; 124 $info = ""; 125 $date = ""; 126 while (($l = <>) && !($l =~ /\[DESCRIPTION\]/)) { 127 $l =~ s/%Gecode/Gecode/g; 128 if ($l =~ /Version:[\t ]*(.*)$/) { 129 $version = $1; 130 } elsif ($l =~ /Date:[\t ]*(.*)$/) { 131 $date = $1; 132 } 133 } 134 while (($l = <>) && !($l =~ /\[ENTRY\]/)) { 135 $l =~ s/%Gecode/Gecode/g; 136# chop $l; 137 $info = $info . " " . $l; 138 } 139 goto LINE; 140 } 141 if ($l =~ /^\[ENTRY\]/) { 142 my $mod, $what, $rank, $bug, $issue, $desc, $thanks; 143 $desc = ""; 144 $bug = ""; 145 $issue = ""; 146 $rank = ""; 147 $what = ""; 148 $mod = ""; 149 $thanks = ""; 150 while (($l = <>) && !($l =~ /\[DESCRIPTION\]/)) { 151 $l =~ s/%Gecode/Gecode/g; 152 if ($l =~ /Module:[\t ]*(.*)$/) { 153 $mod = $1; 154 } elsif ($l =~ /What:[\t ]*(.*)$/) { 155 $what = $1; 156 } elsif ($l =~ /Rank:[\t ]*(.*)$/) { 157 $rank = $1; 158 } elsif ($l =~ /Bug:[\t ]*(.*)$/) { 159 $bug = $1; 160 } elsif ($l =~ /Issue:[\t ]*(.*)$/) { 161 $issue = $1; 162 } elsif ($l =~ /Thanks:[\t ]*(.*)$/) { 163 $thanks = $1; 164 } 165 } 166 167 while (($l = <>) && 168 !(($l =~ /\[ENTRY\]/) || ($l =~ /\[RELEASE\]/))) { 169 $l =~ s/%Gecode/Gecode/g; 170# chop $l; 171 if (!($l =~ /\[MORE\]/)) { 172 if ($desc eq "") { 173 $desc = $l; 174 } else { 175 $desc = $desc . " " . $l; 176 } 177 } 178 } 179 chop $desc; 180 $hastext{$mod} = 1; 181 $rb = $rankclear{$rank}; 182 if (!($bug eq "")) { 183 $rb = $rb . ", bugzilla entry $bug"; 184# $rb = $rb . ", <a href=\"http://www.gecode.org/bugzilla/show_bug.cgi?id=" 185# . $bug . "\">bugzilla entry</a>"; 186 } 187 if (!($issue eq "")) { 188 $rb = $rb . ", github issue $issue"; 189 } 190 if (!($thanks eq "")) { 191 $rb = $rb . ", thanks to $thanks"; 192 } 193 $text{"$mod-$what"} = 194 ($text{"$mod-$what"} . " - $desc(" . $rb . ")\n"); 195 goto LINE; 196 } 197} 198 199print <<EOF 200Initial release (2005-12-06) 201 202 No changes, of course. 203 204EOF 205;