#!/usr/bonsaitools/bin/perl -- # -*- Mode: perl; indent-tabs-mode: nil -*- # # The contents of this file are subject to the Netscape Public # License Version 1.1 (the "License"); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at http://www.mozilla.org/NPL/ # # Software distributed under the License is distributed on an "AS # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or # implied. See the License for the specific language governing # rights and limitations under the License. # # The Original Code is the Tinderbox build tool. # # The Initial Developer of the Original Code is Netscape Communications # Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # # Contributor(s): use lib "../bonsai"; require 'tbglobals.pl'; $F_DEBUG=1; $days = 2; if ($ARGV[0] eq "-days") { shift @ARGV; $days = shift @ARGV; } $tree = $ARGV[0]; open(SEMFILE, ">>$tree/buildwho.sem") || die "Couldn't open semaphore file!"; if (!flock(SEMFILE, 2 + 4)) { # 2 means "lock"; 4 means "fail immediately if # lock already taken". print "buildwho.pl: Another process is currently building the database.\n"; exit(0); } require "$tree/treedata.pl"; if( $cvs_root eq '' ){ $CVS_ROOT = '/m/src'; } else { $CVS_ROOT = $cvs_root; } $CVS_REPOS_SUFIX = $CVS_ROOT; $CVS_REPOS_SUFIX =~ s/\//_/g; $CHECKIN_DATA_FILE = "/d/webdocs/projects/bonsai/data/checkinlog${CVS_REPOS_SUFIX}"; $CHECKIN_INDEX_FILE = "/d/webdocs/projects/bonsai/data/index${CVS_REPOS_SUFIX}"; require 'cvsquery.pl'; print "cvsroot='$CVS_ROOT'\n"; &build_who; flock(SEMFILE, 8); # '8' is magic 'unlock' const. close SEMFILE; sub build_who { open(BUILDLOG, "<$tree/build.dat" ); $line = ; close(BUILDLOG); #($j,$query_date_min) = split(/\|/, $line); $query_date_min = time - (60 * 60 * 24 * $days); if( $F_DEBUG ){ print "Minimum date: $query_date_min\n"; } $query_module=$cvs_module; $query_branch=$cvs_branch; open(WHOLOG, ">$tree/who.dat" ); chdir "../bonsai"; $::TreeID = $bonsai_tree; $result = &query_checkins(%mod_map); $last_who=''; $last_date=0; for $ci (@$result) { if( $ci->[$CI_DATE] != $last_date || $ci->[$CI_WHO] ne $last_who ){ print WHOLOG "$ci->[$CI_DATE]|$ci->[$CI_WHO]\n"; } $last_who=$ci->[$CI_WHO]; $last_date=$ci->[$CI_DATE]; } close( WHOLOG ); }