(file) Return to jsoc_build.pl CVS log (file) (dir) Up to [Development] / JSOC / build

File: [Development] / JSOC / build / jsoc_build.pl (download)
Revision: 1.5, Fri Jan 9 21:45:27 2009 UTC (14 years, 4 months ago) by jsoc
Branch: MAIN
CVS Tags: Ver_5-9, Ver_5-8, Ver_5-7, Ver_5-6, Ver_5-5, Ver_5-3, Ver_5-2, Ver_5-10, Ver_5-1, Ver_5-0, NetDRMS_Ver_2-3, NetDRMS_Ver_2-2, NetDRMS_Ver_2-1, NetDRMS_Ver_2-0b1, NetDRMS_Ver_2-0b, NetDRMS_Ver_2-0a2, NetDRMS_Ver_2-0a1, NetDRMS_Ver_2-0a, NetDRMS_Ver_2-0
Changes since 1.4: +25 -0 lines
Add date to build failure message in jsoc_build.pl. Also catch more error cases.

#!/usr/bin/perl --

use strict;
use warnings;
use Data::Dumper;

my($TESTERR) = "no";
my($JSOC_DEV) = "jsoc_dev\@sun.stanford.edu";
#my($JSOC_DEV) = "arta\@sun.stanford.edu"; # for testing purposes
my($ROOTDIR) = "/tmp/jsoc";
my($MAKELOG) = "make.log";
my($ret);
my($MAXERRLINES) = 8;

$ENV{'CVSROOT'} = ':ext:sunroom.stanford.edu:/home/cvsuser/cvsroot';
$ENV{'CVS_RSH'} = 'ssh';
$ENV{'PATH'} .= ':/usr/local/bin';

if ($TESTERR eq "no")
{
    if (-e "$ROOTDIR/JSOC")
    {
        `rm -rf "$ROOTDIR/JSOC" 2>&1 1>>/dev/null`;
    }

    `mkdir -p "$ROOTDIR/JSOC" 2>&1 1>>/dev/null`;

    my $cmd = "cd $ROOTDIR; cvs co JSOC; cvs update JSOC; cd JSOC; ./configure";
    $cmd = join("; ", map {
        $_." 2>&1 1>>$ROOTDIR/JSOC/cmd.log";
    } split("; ", $cmd));

    $ret = `$cmd; make universe -k >& $ROOTDIR/JSOC/$MAKELOG`;
}
else
{
    `cd $ROOTDIR/JSOC; make universe -k >& $MAKELOG`;
}

open FH, "cd $ROOTDIR/JSOC; \(tail -n 4 $MAKELOG | grep Error\)  |" || die "Can't open log file: $!\n";
my @line = <FH>;
my($oneline);
my($prevline);
my($errmsg) = "";
my($nerrlines);
my($date);

close FH;
if (scalar(@line)) {
    $nerrlines = 0;
    $date = `date`;
    $errmsg = "${errmsg}JSOC Build Failed on ${date}:\n";
    $nerrlines++;
    open FH, "$ROOTDIR/JSOC/$MAKELOG";
    while($oneline = <FH>)
    {
        chomp($oneline);
        if ($oneline =~ /:\s\S*\serror:\s/)
        {
            $errmsg = "${errmsg}${oneline}\n";
            $nerrlines++;
            $oneline = <FH>;
            if ($oneline)
            {
               $errmsg = "${errmsg}${oneline}\n"; 
               $nerrlines++;
            }
            $oneline = <FH>;
            if ($oneline)
            {
               $errmsg = "${errmsg}${oneline}\n"; 
               $nerrlines++;
            }
        }
        elsif ($oneline =~ /:\s+undefined reference to\s+/)
        {
            $errmsg = "${errmsg}${prevline}\n";
            $errmsg = "${errmsg}${oneline}\n";
            $nerrlines++;
            $nerrlines++;
        }

        $prevline = $oneline;
    }
    close FH;

    if ($nerrlines >= $MAXERRLINES)
    {
        $errmsg = "${errmsg}...\n";
    }

    open FH, "| /usr/bin/Mail -s \"JSOC build problem\" $JSOC_DEV";
    print FH $errmsg;
    close FH;

} else {
    my $cmd = "$ROOTDIR/JSOC/doc/doxygen/gendox.csh";
    `chmod +x $cmd`;
    `$cmd >& $ROOTDIR/JSOC/doxygen.log`;
    create_sl();
}

sub create_sl {
    my $dir = '/web/jsoc/htdocs/doxygen_html';
    opendir DH, $dir;

    my $file;
    while (defined($file = readdir(DH))) {
	if ($file =~ /-example/) {
	    my $file2 = $file;
	    $file2 =~ s/-example/-source/;
	    my $cmd = "ln -s $dir/$file $dir/$file2";
	    #	print $cmd, "\n";
	    `$cmd`;
	}
    }

    closedir DH;
}

Karen Tian
Powered by
ViewCVS 0.9.4