#!/usr/bin/perl $base="/Builds/R-builds/nightly"; $dbase="$base/deploy"; @bstyles=("Debug", "Release"); ## "Deployment", "Deployment64", "Leopard", "Leopard64", "SnowLeopard64"); @rds=`cat $dbase/builds`; foreach(@rds) { s/[\r\n]+//g; }; # @pf=('i386','ppc','x86_64'); ## ppc64 is no longer supported #@pf=('i386','ppc','x86_64','ppc64'); @pf=('x86_64'); $rsuff='sa-x86_64'; open OUT, ">$base/web/R-builds.html"; print OUT "<table bgcolor=#ffffe0 border=0 cellspacing=0 cellpadding=3 width=100%><tr bgcolor=#c8c8ff><th>Build</th><th>OS</th><th>Date</th><th>Status</th><th>Download</th></tr>\n"; foreach $rd (@rds) { ($os,$rd) = split /\//, $rd; if ($trc eq '') { $trc=" bgcolor=#ffffa0"; } else { $trc=''; }; undef @rv; print " - processing $os $rd\n"; if ( -e "$dbase/$os/$rd/$rd-$os-$rsuff.tar.gz" ) { @rv=`(rm -f '$base/rver.h' '$base/rver'; tar fxzO '$dbase/$os/$rd/$rd-$os-$rsuff.tar.gz' 'Library/Frameworks/R.framework/*/Rversion.h' > '$base/rver.h'; gcc -o '$base/rver' -I '$base' '$base/rver.c' && '$base/rver')`; } elsif ( -e "$dbase/$os/$rd/x86_64/$rd.tar.gz" ) { @rv=`(rm -f '$base/rver.h' '$base/rver'; tar fxzO '$dbase/$os/$rd/x86_64/$rd.tar.gz' 'Library/Frameworks/R.framework/*/Rversion.h' > '$base/rver.h'; gcc -o '$base/rver' -I '$base' '$base/rver.c' && '$base/rver')`; } $ver=$rv[0]; # $ver=~s/\.$//; # $ver=~s/development /development<br>/; $rl1="<tr valign=bottom$trc><td><b>$rd</b><br>$ver</td><td>$os</td>"; $rl=''; $lkf=''; $dl=''; foreach (@pf) { if ( -e "$dbase/$os/$rd/$_/SUCCESS" || -e "$dbase/$os/$rd/$_/FAILED" ) { if (-e "$dbase/$os/$rd/$_/SUCCESS") { print " old-style, OK\n"; $rl.="<b>$_</b>: OK (<a href=\"log-$rd.$os.$_.html\">log</a>)<br>"; $lkf="$dbase/$os/$rd/$_/SUCCESS"; } elsif (-e "$dbase/$os/$rd/$_/FAILED") { print " old-style, FAILED\n"; $sf=`cat $dbase/$os/$rd/$_/FAILED`; $bl=`cat $dbase/$os/$rd/$_/build.log`; $rl.="<b>$_</b>: $sf (<a href=\"log-$rd.$os.$_.html\">log</a>)<br>"; $lkf="$dbase/$os/$rd/$_/FAILED"; } else { # $rl.="MISSING<br>"; } } elsif ( -e "$dbase/$os/$rd/$_/$rd.SUCCESS" || -e "$dbase/$os/$rd/$_/$rd.FAILED" ) { if (-e "$dbase/$os/$rd/$_/$rd.SUCCESS") { print " R4, OK\n"; $rl.="<b>$_</b>: OK (<a href=\"log-$rd.$os.$_.html\">log</a>)<br>"; $lkf="$dbase/$os/$rd/$_/$rd.SUCCESS"; } elsif (-e "$dbase/$os/$rd/$_/$rd.FAILED") { print " R4, FAILED\n"; $sf=`cat $dbase/$os/$rd/$_/$rd.FAILED`; $bl=`cat $dbase/$os/$rd/$_/build.log`; $rl.="<b>$_</b>: $sf (<a href=\"log-$rd.$os.$_.html\">log</a>)<br>"; $lkf="$dbase/$os/$rd/$_/FAILED"; } else { # $rl.="MISSING<br>"; } } } if (-e "$dbase/$os/$rd/universal/SUCCESS") { $rl.="<b>universal</b>: OK<br>"; $lkf="$dbase/$os/$rd/universal/SUCCESS"; if (-e "$dbase/$os/$rd/universal/$rd-$os-universal.tar.gz") { $sz=`ls -lh $dbase/$os/$rd/universal/$rd-$os-universal.tar.gz|awk '{print \$5}'`; chop $sz; $dl="<a href=$rd-$os-universal.tar.gz>$rd-$os-universal.tar.gz</a> (${sz}b)"; } $dmg=`ls $dbase/$os/$rd/universal/$rd-*.dmg 2>/dev/null|sort|tail -n 1`; chop $dmg; if ($dmg ne '' && (-e $dmg)) { $sz=`ls -lh $dmg|awk '{print \$5}'`; $dmg=`basename \"$dmg\"`; chop $dmg; chop $sz; $dl.="<br><a href=$dmg>$dmg</a> (${sz}b, installer incl. GUI)"; } $lpkg="$dbase/$os/$rd/universal/$rd-$os.pkg"; if ( -e $lpkg ) { $sz=`ls -lh $lpkg|awk '{print \$5}'`; $lpkg=`basename \"$lpkg\"`; chop $lpkg; chop $sz; $dl.="<br><br><a href=$lpkg>$lpkg</a> (${sz}b, installer incl. GUI)"; } # if ($os eq 'leopard' && $rd=~/^R-2.9-/) { ## manual override! # $dl.="<br>(For an installer package see the <b>Leopard build</b> section below)"; # } } elsif (-e "$dbase/$os/$rd/universal/FAILED") { $sf=`cat $dbase/$os/$rd/universal/FAILED`; $rl.="<b>universal</b>: <font colot=red><b>FAILED</b></font>: $sf<br>"; $lkf="$dbase/$os/$rd/universal/FAILED"; } if (-e "$dbase/$os/$rd/$rd.pkg") { $rl.="<b>Package:</b> OK<br>"; # $lkf="$dbase/$os/$rd/universal/SUCCESS"; if (-e "$dbase/$os/$rd/x86_64/$rd.tar.gz") { $sz=`ls -lh $dbase/$os/$rd/x86_64/$rd.tar.gz|awk '{print \$5}'`; chop $sz; $dl="<br><a href=$os/$rd/x86_64/$rd.tar.gz>$rd.tar.gz</a> (${sz}b)"; } $lpkg="$dbase/$os/$rd/$rd.pkg"; if ( -e $lpkg ) { $lkf = $lpkg; $sz=`ls -lh $lpkg|awk '{print \$5}'`; $lpkg=`basename \"$lpkg\"`; chop $lpkg; chop $sz; $dl.="<br><br><a href=$os/$rd/$lpkg>$lpkg</a> (${sz}b, installer incl. GUI)"; } } elsif (-e "$dbase/$os/$rd/$rd-$os.pkg") { $rl.="<b>Package:</b> OK<br>"; # $lkf="$dbase/$os/$rd/universal/SUCCESS"; if (-e "$dbase/$os/$rd/$rd-$os-$rsuff.tar.gz") { $sz=`ls -lh $dbase/$os/$rd/$rd-$os-$rsuff.tar.gz|awk '{print \$5}'`; chop $sz; $dl="<br><a href=$os/$rd/$rd-$os-$rsuff.tar.gz>$rd-$os-$rsuff.tar.gz</a> (${sz}b)"; } $lpkg="$dbase/$os/$rd/$rd-$os-signed.pkg"; if ( -e $lpkg ) { $lkf = $lpkg; $sz=`ls -lh $lpkg|awk '{print \$5}'`; $lpkg=`basename \"$lpkg\"`; chop $lpkg; chop $sz; $dl.="<br><br><a href=$os/$rd/$lpkg>$lpkg</a> (${sz}b, installer incl. GUI)"; } else { $lpkg="$dbase/$os/$rd/$rd-$os.pkg"; if ( -e $lpkg ) { $lkf = $lpkg; $sz=`ls -lh $lpkg|awk '{print \$5}'`; $lpkg=`basename \"$lpkg\"`; chop $lpkg; chop $sz; $dl.="<br><br><a href=$os/$rd/$lpkg>$lpkg</a> (${sz}b, installer incl. GUI)"; } } # if ($os eq 'leopard' && $rd=~/^R-2.9-/) { ## manual override! # $dl.="<br>(For an installer package see the <b>Leopard build</b> section below)"; # } } elsif (-e "$dbase/$os/$rd/universal/FAILED") { $sf=`cat $dbase/$os/$rd/universal/FAILED`; $rl.="<b>Package</b>: <font color=red><b>FAILED</b></font>: $sf<br>"; $lkf="$dbase/$os/$rd/universal/FAILED"; } $lkd=''; $lkd=`ls -l "$lkf" |awk '{print \$6,\$7,\$8}'` if ($lkf ne ''); chop $lkd; $logs=''; @suff=('check','conf','build'); foreach $a (@pf) { print " - generating log-$rd.$os.$a.html\n"; open LOUT, ">$base/web/log-$rd.$os.$a.html"; print LOUT "<h2>$rd, $os, $a</h2>"; foreach(@suff) { print LOUT "<a href=#$_>$_</a> "; }; print LOUT "<hr><table bgcolor=#ffffe0 border=0 cellspacing=0 cellpadding=3>"; foreach $pf (@suff) { $fc=($pf=~/err$/)?"#c00000":"#0000c0"; $fn="$dbase/$os/$rd/$a/$pf"; if ( -e "$dbase/$os/$rd/$a/$rd.$pf" ) { $fn="$dbase/$os/$rd/$a/$rd.$pf" } $da=`stat $fn 2>/dev/null`; $da=~s/\".*?\"//; $da=$1 if ($da=~/\"(.*?)\"/); print LOUT "<tr bgcolor=#c8c8ff><td><a name=\"$pf\"></a><b>$pf</b> - <b><i>$da</i></b></td></tr><tr><td><font color=$fc><pre>"; open INA, "$fn"; while(<INA>) { #s/</</g; #s/>/>/g; s/\#\@1\@\#/<font color=navy>/g; s/\#\@2\@\#/<br><font color=red>/g; s/\@\#.\#\@/<\/font>/g; print LOUT $_; }; close INA; print LOUT "</pre></font></td></tr>\n"; } print LOUT "</table>"; close LOUT; } if ($dl eq '') { $rl="$rl1<td>$lkd</td><td colspan=2>$rl</td></tr>\n"; } else { $rl="$rl1<td>$lkd</td><td>$rl</td><td>$dl</td></tr>\n"; } print OUT $rl; foreach $bsty (@bstyles) { $gf=`ls $dbase/$os/$rd/R-GUI*-$bsty.dmg 2>/dev/null|sort -r|head -n 1`; $gf=~s/[\r\n]+//g; push @guilist, $gf if ($gf ne ''); $gf=`ls $dbase/$os/$rd/universal/R-GUI*-$bsty.dmg 2>/dev/null|sort -r|head -n 1`; $gf=~s/[\r\n]+//g; push @guilist, $gf if ($gf ne ''); } } print OUT "</table>\n"; close OUT; open OUT, ">$base/web/GUI.html"; print OUT "<table bgcolor=#ffffe0 border=0 cellspacing=0 cellpadding=3><tr bgcolor=#c8c8ff><th>Version</th><th>Build</th><th>Download</th></tr>"; $trc=''; foreach (@guilist) { $gfn=$_; $lnk=$_; if (/\/universal/) { s/^.*\///; $lnk=$_; } else { $lnk=~s/.*deploy\///; s/^.*\///; } $rl=''; if ($trc eq '') { $trc=" bgcolor=#ffffa0"; } else { $trc=''; }; if (/GUI-(\d+)-(\d+\.\d+)-(.*)/) { $rl="<tr valign=top$trc><td>Mac OS X GUI rev. $1 for R $2.x</td><td>$3</td><td><a href=$lnk>$_</a></td></tr>\n"; } print OUT $rl; } print OUT "</table>\n"; close OUT; sub fetch { my($a); $a=''; open INF,"$base/web/$_[0]"; while(<INF>) { $a.=$_; }; close INF; $a; }; open IN, "$base/web/index.in.html"; open OUT, ">$base/web/index.html"; while(<IN>) { s/<!--include (.*?)-->/fetch($1)/ge; print OUT $_; } close IN; close OUT;