this repo has no description
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;