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