Mercurial > hg > openjdk > jdk6
changeset 74:f06803f82308
7060927: Add jdkreport.pl to make/scripts, used to generate changes between tags
Reviewed-by: katleman, darcy, lana
author | ohair |
---|---|
date | Thu, 30 Jun 2011 11:59:30 -0700 |
parents | 1512bd8466f2 |
children | bc945e8013c7 |
files | make/scripts/jdkreport.pl |
diffstat | 1 files changed, 125 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/scripts/jdkreport.pl Thu Jun 30 11:59:30 2011 -0700 @@ -0,0 +1,125 @@ +#!/usr/bin/perl -w + +# +# Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +$| = 1; #set buffer flushing on, so that messages are printed immediately + +if ($#ARGV != 1) { + # print "Sampel: jdkreport.pl /p/dolphin/jdk7/TAGS/jdk7 jdk7-b42:jdk7-b43 | tee reportx.html \n"; + # print "This should contain ONLY open repos\n"; + print "Usage: $0 repo date\n"; print "Usage: $0 repo <prev-tag:curr-tag>\n"; + print "Usage: $0 repo jdk7-b40:jdk7-b41>\n"; + print "Usage: $0 repo jdk7-b50:tip>\n"; + # print "Usage: $0 media \"2008-10-29 13:00 to 2008-10-29 18:00\" \n"; + # print "or : $0 media 2008-10-29\n"; exit; +} + +$path = $ARGV[0]; +chdir ("$ARGV[0]"); +@list = `hg ftrees`; +chomp(@list); + +sub print_bugs() { + if($first) { #print repo line if it encounters first results in prev line + @reponame = split '/',$i; + if ($reponame[$#reponame] eq "jdk6") { + $reponame[$#reponame] = ""; + } + print "<br><br><b>http://hg.openjdk.java.net/jdk6/$reponame[$#reponame]</b>\n"; + print '<table border="1" width="100%">'; + print "<tr>"; + print "<td with=\"13%\"><b> Changeset </b></td> <td width = \"7%\"><b>Bug ID</b></td> <td><b>Synopsys</b></td>"; + print "</tr>"; + $first = 0; + } + + print "<tr>"; + $rowspan = $#bugs + 1; #row span for changeset is number of bugs seen in desc + + if ($reponame[$#reponame] eq "jdk7") { + $reponame[$#reponame] = ""; + $sla = ""; + } else { + $sla = "/"; + } + $chgseturl = "http://hg.openjdk.java.net/jdk6/jdk6/" . $reponame[$#reponame]. $sla . "rev/$changeset"; + print "<td width=\"10%\" rowspan=$rowspan><a href =\"". $chgseturl. "\"> $changeset</a> </td>"; + + $firstbug = 1; + foreach(@bugs) { + ($bugid, $desc) = split ':',$_, 2; # limit the number of splits to 2 + $bugid =~ s/^\s+//; #remove leading white spaces + $url = "http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=$bugid"; + + if($firstbug) { + $firstbug = 0; + } + else { + print "<tr>"; #start new table row for 2nd bug on (1st row started above for changeset) + } + print "<td width =\"7%\"><a href =\"". $url. "\">$bugid</a></td> <td>$desc</td>\n"; + print "</tr>"; + } + + @bugs = (); #clear list of bugs after printing them +} + +foreach $i (@list) { + chdir("$i"); +# system("hg log -r $ARGV[1] --no-merges > /tmp/jdk7report.$$") and die "Could not run hg log for $i \n"; +system("hg log -r $ARGV[1] --no-merges --template 'changeset: {node|short}\n{desc}\n' > /tmp/jdk7report.$$") and die "C +ould not run hg log for $i \n"; + + open(FILE, "/tmp/jdk7report.$$") or die "Could not openfile\n"; + + $first = 1; + @bugs = (); + + while (<FILE>) { + if(/^changeset: /) { #check for new changeset + $fileline = $_; + + if($#bugs >= 0) { + print_bugs(); #print bugs for prev changeset + } + + ($beg, $changeset) = split ' ',$fileline; # limit the number of splits to 2 + chomp($changeset); #remove end of line + } + + if(/^\d+:/) { #match lines that start with numbers (bugids) + push(@bugs, $_); + } + } + + if($first == 0) { + if($#bugs >= 0) { #print the bugs for the last changeset in the file + print_bugs(); + } + print "</table>"; #close table only if first is false + } +} + +print "<br>\n"; +