diff -r 000000000000 -r 83f4b4db085c bldsystemtools/commonbldutils/GenResult/Changelists.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bldsystemtools/commonbldutils/GenResult/Changelists.pm Tue Feb 02 01:39:43 2010 +0200 @@ -0,0 +1,97 @@ +# Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# Script that return a list of Perforce Change lists that are associated to a build snapshot. +# +# +package Changelists; +use DBI; +my $dbh; #connection handle +sub connectDB() +{ + my $dBase = "autobuild2"; + my $serverPort = "intweb:3306"; + my $user = "autobuild2"; + my $password = "autobuild2"; + $dbh->disconnect if ($dbh); #disconnect if already connected + $dbh = DBI->connect("DBI:mysql:$dBase:$serverPort", $user, $password, {PrintError => 0, RaiseError => 0}); # should use a username which has read-only credentials only. + if (!$dbh) + { + print "Cannot connect to the AutoBuild2 server:$DBI::errstr\n"; + exit; + } + else + { + print "Connected to AutoBuild\n"; + } +} + + +sub queryHandler #handle querying the database. +{ + my $query = shift; + my $handle; + $handle = $dbh->prepare($query); + $handle->execute; + if($handle->err()) + { + Logit(2,"could not execute Query:".$handle->errstr()); + if ($handle->errstr() =~ m/(Lost connection|MySQL server has gone away)/i) #sometimes the connection to server is lost, + { + Logit(0,"Lost connection, ".$handle->errstr()); + exit; + } + } + return $handle; +} + +my $snapshot = $ENV{SnapshotNumber}; +my $buildShortName = $ENV{BuildShortName}; +sub main { + + print "$snapshot \t $buildShortName\n"; + my $query = "select distinct(sub3.changelist), snap.name as Name, sub3.description as Description + from codeline, Submission as sub, Submission as sub3 + left join Snapshot as snap on (snap.Submission_id = sub.id ) + left join Build as bld on (bld.Snapshot_id = snap.id) + left join Spec as spec on (bld.Spec_id = spec.id) + left join Product as prod on (spec.Product_id = prod.id) + left join Build as bld2 on (bld2.id = bld.BCPrevious_id) + left join Snapshot as snap2 on (bld2.Snapshot_id = snap2.id) + left join Submission as sub2 on (snap2.Submission_id = sub2.id) + where snap.name = \"$snapshot\" and prod.build_short_name=\"$buildShortName\" and sub3.Codeline_id = (SELECT codeline_id FROM `spec` , codeline cl where Product_id=(select id from product where build_short_name = \"$buildShortName\") and pool_id = \"1\" and cl.name = \"MCLsfRO\" and spec.codeline_id= cl.id and end_date > CURDATE() ORDER by spec.id LIMIT 1) and sub3.changelist between sub2.changelist and sub.changelist order by sub3.changelist;"; + + &connectDB(); + my $ClInfo = &queryHandler($query); + my @AllCls = (); + my %CLhash = (); + while (my $Data = $ClInfo->fetchrow_hashref) + { + my @Cl = (); + my $changelist = ${$Data}{'changelist'}; + my ($submitter) = ${$Data}{'Description'} =~ /####(.*?)####<\/EXTERNAL>/i; + $desc =~ s/##/\n/g; + $CLhash{$changelist}{'submitter'} = $submitter; + $CLhash{$changelist}{'team'} = $team; + $CLhash{$changelist}{'sub_time'} = $sub_time; + $CLhash{$changelist}{'desc'} = $desc; + #~ print "#################${$Data}{'changelist'}#####################\n"; + #~ print "$submitter\t$team\t$sub_time\n$desc\n"; + } + return (\%CLhash); +} +1;