mirror of https://github.com/CGAL/cgal
138 lines
3.4 KiB
Perl
Executable File
138 lines
3.4 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
|
|
sub print_html_header {
|
|
my $title = $_[0];
|
|
return <<"END_HEADER";
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
|
<TITLE>CGAL Benchmark - $title</TITLE>
|
|
</head>
|
|
<body>
|
|
|
|
END_HEADER
|
|
}
|
|
|
|
sub check_unique_filenames {
|
|
my $cmdline ='find . -name "*.bff" -type f';
|
|
open FILES, "$cmdline|";
|
|
my %filenames = ();
|
|
while(<FILES>) {
|
|
chomp;
|
|
my $filename = $_;
|
|
if( $_ =~ /\/([^\/]+)$/ ) {
|
|
$filename = $1;
|
|
}
|
|
if( defined $filenames{$1} ) {
|
|
printf STDERR "! Warning: duplicate filename \"$1\"\n";
|
|
}
|
|
$filenames{$1} = 1;
|
|
}
|
|
close FILES;
|
|
}
|
|
|
|
%targz = ();
|
|
|
|
|
|
|
|
sub parse_description {
|
|
my $description=$_[0];
|
|
print "\tparsing description $description\n";
|
|
my $outdir = "";
|
|
my $basename = "";
|
|
if($description =~ /^[^\/]+\/[^\/]+\/[^\/]+\/([^\/]+\/)([^\/]+)$/ ) {
|
|
$outdir = $1;
|
|
$basename = $2;
|
|
} else {
|
|
printf STDERR "! Error: badly placed description filename $description\n";
|
|
return;
|
|
}
|
|
printf OUT "<h2>$outdir$basename</h2>\n";
|
|
open DESC, $description;
|
|
|
|
my $in_paragraph = 0;
|
|
my $first_paragraph = 1;
|
|
while( <DESC> ) {
|
|
# check for empty lines and produce <p> tags
|
|
if( $_ =~ /^\s*$/ ) {
|
|
if( $in_paragraph && !$first_paragraph ) {
|
|
printf OUT "</p>\n\n";
|
|
}
|
|
$in_paragraph = 0;
|
|
} else {
|
|
if( ! $in_paragraph ) {
|
|
printf OUT "<p>";
|
|
}
|
|
$first_paragraph = 0;
|
|
$in_paragraph = 1;
|
|
if( $_ =~ /\\instance(\[\w+\])?\{([^}]+)\}/ ) {
|
|
my $pre=$`;
|
|
my $post=$';
|
|
#my $modifier=$1;
|
|
my $location=$2;
|
|
my $filenames="";
|
|
my $pattern="-name \"*.bff\"";
|
|
if( $location =~ /\/([^\/]*\*[^\/]*)$/ ) {
|
|
$pattern = " -maxdepth 1 -name \"$1\"";
|
|
$location = $`;
|
|
}
|
|
my $cmdline ="find $location $pattern -type f";
|
|
open FILENAMES, "$cmdline|";
|
|
while( <FILENAMES> ) {
|
|
chomp;
|
|
$filenames .= $_." ";
|
|
}
|
|
close FILENAMES;
|
|
my $id = $targz{$basename}++;
|
|
my $freshname = "${basename}_${id}.tar.gz";
|
|
$cmdline = "tar czf $html/data/$freshname $filenames";
|
|
system "$cmdline";
|
|
printf OUT "$pre<a href=\"data/$freshname\">$freshname</a>$post";
|
|
} else {
|
|
printf OUT;
|
|
}
|
|
}
|
|
}
|
|
close DESC;
|
|
}
|
|
|
|
&check_unique_filenames;
|
|
|
|
$html='Benchmark_instances/out_html';
|
|
|
|
system "rm -rf $html";
|
|
system "mkdir -p $html/data";
|
|
opendir PKG, ".";
|
|
open OUT, ">$html/index.html";
|
|
printf OUT &print_html_header( "CGAL Benchmarks - Overview" );
|
|
printf OUT "<h1>CGAL Benchmarks - Overview</h1>\n\n";
|
|
while( $pkg=readdir PKG ) {
|
|
if( -d $pkg && $pkg ne '.' && $pkg ne '..' && $pkg ne '.svn') {
|
|
print "searching in package: $pkg\n";
|
|
opendir INNERPKG, "$pkg/benchmark/";
|
|
while( $innerpkg=readdir INNERPKG ) {
|
|
if( -d $innerpkg && $innerpkg ne '.' && $innerpkg ne '..'
|
|
&& $innerpkg ne '.svn') {
|
|
#print "$innerpkg";
|
|
if( -d "$pkg/benchmark/$innerpkg/description" ) {
|
|
#print " contains benchmark\n";
|
|
open FILES, "find $pkg/benchmark/$innerpkg/description -type f -name \"*.desc\"|";
|
|
while(<FILES>) {
|
|
chomp;
|
|
&parse_description( $_ );
|
|
}
|
|
close FILES;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
printf OUT <<"END_FOOTER";
|
|
</body>
|
|
</html>
|
|
END_FOOTER
|
|
close OUT;
|
|
closedir PKG;
|
|
print "\n";
|