LT 76: Clean auto_build.pl, prepare for name change

Index: ChangeLog from Clement Vasseur <clement.vasseur@lrde.epita.fr> * auto_build/auto_build.pl: Clean the script. Prepare for name change. * auto_build/packages.list: Adjust. Index: auto_build/auto_build.pl --- auto_build/auto_build.pl (revision 76) +++ auto_build/auto_build.pl (working copy) @@ -1,6 +1,6 @@ #!/usr/bin/perl -w # -# Auto Build System - auto_build.pl +# Auto Build System - auto-build # Copyright (C) 2004 LRDE - EPITA Research and Development Laboratory # # This program is free software; you can redistribute it and/or modify @@ -22,19 +22,23 @@ # Clement Vasseur <clement.vasseur@lrde.epita.fr> # Nicolas Pouillard <nicolas.pouillard@lrde.epita.fr> +# Any contribution should follow the Perl style guide: perldoc perlstyle +# This script should remain self-contained and it should not depend on any +# module besides the ones in the standard Perl 5.8 installation. + my $VERSION = 0.1; =pod =head1 NAME -auto_build.pl +auto-build =head1 SYNOPSIS -auto_build.pl [options] packages.list +auto-build [options] packages.list - -m, --man display the auto_build manual + -m, --man display the manual -h, --help print this help and exit -V, --version print version information and exit -d, --delay=DELAY redo a build cycle after DELAY minutes @@ -47,12 +51,13 @@ use Getopt::Long; use Pod::Usage; -my $work_dir; my $report_dir; +my $build_dir; +my $inst_dir; my @packages; my %variables; -my %colors; +my @colors; my %deps; my $packages; @@ -73,8 +78,9 @@ pod2usage(-verbose => 0) unless defined $packages; &read_pkg_list($packages); -&create_dir("$work_dir/src"); -&create_dir("$report_dir"); +&create_dir($report_dir); +&create_dir($build_dir); +&create_dir($inst_dir); &prepare_pkgs; while (1) { @@ -89,25 +95,17 @@ foreach my $pkg (@packages) { print "$pkg->{'name'}\n"; - my $rev = "$work_dir/usr/$pkg->{'name'}/.rev"; - if ($pkg->{'url'} =~ m/^svn:/) { - &get_revision($pkg); - unlink $rev if -f $rev and $pkg->{'rev'} > `cat $rev`; - } - if (-f $rev) { - &set_status($pkg, "skipped"); - next; - } - + next if &check_revision($pkg); &gen_pkg_report($pkg); my $ok = 1; foreach my $dep (@{$deps{$pkg->{'name'}}}) { foreach (@packages) { - $ok = 0 if $_->{'name'} eq $dep and $_->{'status'} eq "failed"; + $ok = 0 if $_->{'name'} eq $dep + and ($_->{'status'} eq 'failed' or $_->{'status'} eq 'skipped'); } unless ($ok) { - &set_status($pkg, "skipped"); + &set_status($pkg, 'skipped'); last; } } @@ -116,36 +114,89 @@ } } -sub read_pkg_list { +sub xopen { my $filename = shift; + my $name = $filename; + my $FILE; + + $name =~ s/^>//; + open $FILE, $filename + or die "$0: unable to open `$name': $!\n"; + return $FILE; +} + +sub xclose { + my $FILE = shift; + close $FILE or die "$0: unable to close `$FILE': $!\n"; +} + +sub header { + my ($filename, $title) = @_; + my $FILE = &xopen(">$filename"); + select $FILE; + + print <<HTML; +<html> + <head> + <title>$title</title> + </head> + <body> +HTML + + return $FILE; +} - open LIST, $filename - or die "$0: unable to open `$filename': $!\n"; +sub footer { + print <<HTML; + <hr/> + <h4>Generated by <i>auto-build</i> version $VERSION</h4> + </body> +</html> +HTML - while (<LIST>) { + select STDOUT; + my $FILE = shift; + &xclose($FILE); +} + +sub read_pkg_list { + my $filename = shift; + my $LIST = &xopen($filename); + my $section; + + while (<$LIST>) { s/\s*\#.*$//; next if m/^\s*$/; chomp; while (s/\s*\\\s*$/ /) { - my $l = <LIST>; + my $l = <$LIST>; $l =~ s/^\s*//; $l =~ s/\s*\#.*$//; $_ .= $l; chomp; } - unless (defined $work_dir) { - $work_dir = $_; - next; - } unless (defined $report_dir) { $report_dir = $_; next; } - if (m/^color\s+([\dA-Fa-f]+)\s+\"(.*?)\"\s*$/) { - $colors{$2} = $1; + unless (defined $build_dir) { + $build_dir = $_; + next; + } + + unless (defined $inst_dir) { + $inst_dir = $_; + next; + } + + if (m/^\s*color\s+(\w+)\s+\"(.*?)\"\s*$/) { + push @colors, [ $2, $1 ]; + + } elsif (m/^\s*section\s+\"(.*)\"\s*$/) { + $section = $1; } elsif (m/^([\w\-]+)\s*=\s*(.*?)\s*$/) { $variables{$1} = $2; @@ -153,12 +204,10 @@ } elsif (m/^([\w\-]+)\s*$/) { push @packages, { 'name' => $1, - 'status' => '', + 'section' => $section, 'opt' => '', 'cfg' => '', - 'rev' => '0', - 'time_started' => '', - 'time_finished' => '' + 'rev' => '0' }; } elsif (m/^\s*(\w\w\w)\s*:\s*(.*?)\s*$/) { @@ -178,7 +227,7 @@ if (defined $variables{$1}) { $value =~ s/\$\{([\w\-]+)\}/$variables{$1}/; } else { - $value =~ s/\$\{([\w\-]+)\}/$work_dir\/usr\/$1/; + $value =~ s/\$\{([\w\-]+)\}/$inst_dir\/$1/; push @{$deps{$packages[-1]->{'name'}}}, $1; } } @@ -189,8 +238,9 @@ } } - (defined $work_dir and defined $report_dir) - or die "$0: `work' and `report' directories must be defined\n"; + &xclose($LIST); + (defined $report_dir and defined $build_dir and $inst_dir) + or die "$0: `report', `build' and `inst' directories must be defined\n"; } sub create_dir { @@ -212,91 +262,127 @@ chdir $dir or die "$0: unable to chdir `$dir': $!\n"; } +sub time_to_str { + $_ = shift; + my $t = ''; + + if (defined $_ and $_ ne '') { + $t = ($_ % 60) . "s"; + $t = (($_/60) % 60) . "m$t" if $_ >= 60; + $t = (($_/(60 * 60)) % 60) . "h$t" if $_ >= 60 * 60; + } + + return $t; +} + sub gen_summary { - open SUMMARY, ">$report_dir/index.html" - or die "$0: unable to open `$report_dir/index.html': $!\n"; + my $SUMMARY = &header("$report_dir/index.html", "Auto Build System"); + my $section = ''; - print SUMMARY <<HTML; -<html> - <head> - <title>Auto Build System</title> - </head> - <body> + print <<HTML; <h1>Auto Build System</h1> <hr/> <table> HTML - foreach (@packages) { + foreach my $pkg (@packages) { + if ($pkg->{'section'} ne $section) { + if ($section ne '') { + print <<HTML; + <tr> + <td> + + </td> + </tr> +HTML + } + $section = $pkg->{'section'}; + print <<HTML; + <tr> + <td> + <h3>$section</h3> + </td> + </tr> +HTML + } + + $pkg->{'status'} = '' unless defined $pkg->{'status'}; + my $color = "black"; - $color = "red" if $_->{'status'} eq "failed"; - $color = "green" if $_->{'status'} eq "succeeded"; - $color = "gray" if $_->{'status'} eq "skipped"; + my $time = &time_to_str($pkg->{'time'}); + + $color = "red" if $pkg->{'status'} eq "failed"; + $color = "green" if $pkg->{'status'} eq "succeeded"; + $color = "gray" if $pkg->{'status'} eq "skipped"; - print SUMMARY <<HTML; + print <<HTML; <tr> - <td><a href=\"$_->{'name'}/$_->{'name'}.html\">$_->{'name'}</a></td> - <td><font color=\"$color\">$_->{'status'}</font></td> + <td><a href=\"$pkg->{'name'}/$pkg->{'name'}.html\">$pkg->{'name'}</a></td> + <td> </td> + <td><font color=\"$color\">$pkg->{'status'}</font></td> + <td> </td> + <td><font color=\"gray\">$time</font></td> </tr> HTML } - print SUMMARY <<HTML; - </table> - </body> -</html> -HTML - close SUMMARY; + print " </table>\n"; + &footer($SUMMARY); } sub gen_pkg_report { my $pkg = shift; - my $dir = "$report_dir/$pkg->{'name'}/$pkg->{'name'}.html"; + my $filename = "$report_dir/$pkg->{'name'}/$pkg->{'name'}.html"; + my $REPORT = &header("$filename", "$pkg->{'name'} report"); - open REPORT, ">$dir" - or die "$0: unable to open `$dir': $!\n"; + my ($ts, $tf) = ('', ''); + $ts = localtime $pkg->{'time_started'} if defined $pkg->{'time_started'}; + $tf = localtime $pkg->{'time_finished'} if defined $pkg->{'time_finished'}; - print REPORT <<HTML; -<html> - <head> - <title>$pkg->{'name'} report</title> - </head> - <body> + print <<HTML; <h1>$pkg->{'name'}</h1> <hr/> - <h3>Build started: $pkg->{'time_started'}</h3> - <table> + <h3>Build started: $ts</h3> + <table cellpadding=\"8\"> HTML - foreach (@{$pkg->{'steps'}}) { - next unless defined $_->{'name'}; - if (defined $_->{'status'}) { + foreach my $step (@{$pkg->{'steps'}}) { + next unless defined $step->{'name'}; + if (defined $step->{'status'}) { my $color = "black"; - $color = "green" if $_->{'status'} eq "succeeded"; - $color = "red" if $_->{'status'} eq "failed"; + $color = "green" if $step->{'status'} eq "succeeded"; + $color = "red" if $step->{'status'} eq "failed"; + + my $time = &time_to_str($step->{'time'}); - print REPORT <<HTML; + print <<HTML; <tr> - <td><a href=\"$_->{'name'}.html\">$_->{'name'}</a></td> - <td><font color=\"$color\">$_->{'status'}</font></td> + <td><a href=\"$step->{'name'}.html\">$step->{'name'}</a></td> + <td><font color=\"$color\">$step->{'status'}</font></td> + <td><font color=\"gray\">$time</font></td> </tr> HTML } else { - print REPORT <<HTML; + print <<HTML; <tr> - <td>$_->{'name'}</td> + <td>$step->{'name'}</td> </tr> HTML } } - print REPORT <<HTML; + print <<HTML; </table> - <h3>Build finished: $pkg->{'time_finished'}</h3> - </body> -</html> + <h3>Build finished: $tf</h3> HTML - close REPORT; + + if (defined $pkg->{'archives'}) { + foreach (@{$pkg->{'archives'}}) { + print " <a href=\"$_\">$_</a><br/>\n" if -f $_; + } + } + + &footer($REPORT); } sub set_status { @@ -305,92 +391,97 @@ &gen_summary; } -sub err { - print "error: @_\n"; - return undef; -} - sub gen_log_page { my $pkg = shift; - my $status = shift; - my $out = "$report_dir/$pkg->{'name'}/$status.html"; - - open LOG, ">$out" - or die "$0: unable to open `$out': $!\n"; - - print LOG <<HTML; -<html> - <head> - <title>$pkg->{'name'} - $status</title> - </head> - <body> - <h1>@_</h1> + my $step = shift; + my $filename = "$report_dir/$pkg->{'name'}/$step->{'name'}.html"; + my $REPORT = &header("$filename", "$pkg->{'name'} - $step->{'name'}"); + + print <<HTML; + <h1>$step->{'name'}</h1> + <h4>$step->{'cmd'}</h4> <hr/> - <a href="$status.log">Log</a> - </body> -</html> + <a href="$step->{'name'}.log">Log</a> HTML - close LOG; + &footer($REPORT); } sub run { my $pkg = shift; - my $status = shift; + my $step = shift; + my $status = $step->{'name'}; my $out = "$report_dir/$pkg->{'name'}/$status"; &set_status($pkg, $status); - &gen_log_page($pkg, $status, @_); + &gen_log_page($pkg, $step); - my $exit_code = system("@_ >$out.log 2>&1"); + my $t = time; + my $exit_code = system("$step->{'cmd'} >$out.log 2>&1"); + $step->{'time'} = time - $t; - open LOG, ">$out.html" - or die "$0: unable to open `$out.html': $!\n"; + my $REPORT = &header("$out.html", "$pkg->{'name'} - $status"); - print LOG <<HTML; -<html> - <head> - <title>$pkg->{'name'} - $status</title> - </head> - <body> - <h1>@_</h1> + print <<HTML; + <h1>$step->{'name'}</h1> + <h4>$step->{'cmd'}</h4> <hr/> <pre> HTML - open OUT, "$out.log" - or die "$0: unable to open `$out.log': $!\n"; + my $LOG = &xopen("$out.log"); + my $archives_ready; - while (<OUT>) { + while (<$LOG>) { my $color; - foreach my $regex (keys %colors) { - $color = $colors{$regex} if m/^$regex$/; - } - print LOG "<font color=\"#$color\">" if $color; - print LOG; - print LOG "</font>" if $color; - } - - print LOG <<HTML; - </pre> - </body> -</html> -HTML - close LOG; - - return &err("command `@_' failed: $?") if $exit_code; + foreach my $c (@colors) { + $color = $c->[1] if m/^$c->[0]/; + last if defined $color; + } + if ($status eq 'check') { + if (($archives_ready and m/^($archives_ready\.tar\.(gz|bz2))$/) + or m/^(.*\.tar\.(gz|bz2)) is ready for distribution$/) { + push @{$pkg->{'archives'}}, $1; + system("/bin/cp \"$1\" \"$report_dir/$pkg->{'name'}\"") + and die "$0: unable to cp `$1' to `$report_dir/$pkg->{'name'}': $!\n" ; + } + $archives_ready = $1 if m/^(.*) archives ready for distribution: $/; + } + print "<font color=\"$color\">" if $color; + print; + print "</font>" if $color; + } + + print " </pre>\n"; + &xclose($LOG); + &footer($REPORT); + return undef if $exit_code; return 1; } -sub get_revision { +sub check_revision { my $pkg = shift; + my $revfile = "$inst_dir/$pkg->{'name'}/.rev"; + my $rev; if ($pkg->{'url'} =~ m|^svn:(.*/([^/]+))$|) { - my $rev = `svn log -q \"https:$1\" 2>/dev/null | grep '^r' | head -n 1`; - chomp($rev); + chomp($rev = `svn log -q \"https:$1\" 2>/dev/null | grep '^r' | head -n 1`) ; $rev =~ s/^r(\d+).*$/$1/; + } elsif ($pkg->{'url'} =~ m/^((ht|f)tp:.*)$/) { + chomp($rev = `wget -qnv -O - \"$1\" | md5sum`); + } $pkg->{'rev'} = $rev; + + if (-f $revfile) { + chomp($rev = `cat \"$revfile\"`); + unlink $revfile if $pkg->{'rev'} ne $rev; + } + if (-f $revfile) { + chomp($pkg->{'time'} = `cat \"$inst_dir/$pkg->{'name'}/.time\"`); + &set_status($pkg, 'succeeded'); + return 1; } + return undef; } sub get_package { @@ -398,7 +489,8 @@ my @steps; $_ = $pkg->{'url'}; - if (m|^http://.*/([^/]+)/?$|) { + if (m|^http://.*/([^/]+)/?$| + or m|^ftp://.*/([^/]+)/?$|) { $_ = "file://$1"; push @steps, { 'name' => 'download', @@ -415,30 +507,39 @@ $pkg->{'dir'} = $file; if (defined $c) { - my $dir = `tar -t${c}f $file | head -n 1 | cut -d '/' -f 0-1`; - chomp($pkg->{'dir'} = $dir); - &delete_dir($pkg->{'dir'}); - push @steps, { 'name' => 'unpack', 'cmd' => "tar -x${c}vf \"$file\"" }, { - 'dir' => "$work_dir/src/$pkg->{'dir'}" + 'dir' => "tar -t${c}f \"$file\" | head -n 1 | cut -d '/' -f 0-1", }; } } elsif (m|^svn://(.*/([^/]+))/?$|) { my $repository = "https://$1"; $pkg->{'dir'} = $2; - &delete_dir($pkg->{'dir'}); + push @steps, { 'name' => 'checkout', - 'cmd' => "svn checkout $repository" + 'cmd' => "svn checkout \"$repository\"" }, { - 'dir' => "$work_dir/src/$pkg->{'dir'}", + 'dir' => "echo \"$pkg->{'dir'}\"", 'name' => 'bootstrap', - 'cmd' => "./bootstrap" + 'cmd' => '(./bootstrap || ./bootstrap.sh || autoreconf -fvi)' }; + + } elsif (m|^prcs://(.*)$|) { + $pkg->{'dir'} = $1; + + push @steps, { + 'dir' => "echo \"$1\"", + 'name' => 'checkout', + 'cmd' => "prcs checkout \"$1\"" + }, { + 'name' => 'bootstrap', + 'cmd' => '(./bootstrap || ./bootstrap.sh || autoreconf -fvi)' + }; + } else { die "$0: invalid URL `$_': unknown protocol\n"; } @@ -449,7 +550,8 @@ sub prepare_pkgs { foreach my $pkg (@packages) { my @steps = &get_package($pkg); - &create_dir("$report_dir/$pkg->{'name'}"); + my $dir = "$report_dir/$pkg->{'name'}"; + &create_dir($dir); push @steps, { 'name' => 'patch', @@ -457,15 +559,25 @@ } if defined $pkg->{'dif'}; push @steps, { 'name' => 'configure', - 'cmd' => "./configure --prefix=$work_dir/usr/$pkg->{'name'} $pkg->{'cfg'} " + 'cmd' => "./configure --prefix=$inst_dir/$pkg->{'name'} $pkg->{'cfg'}" }, { 'name' => 'build', 'cmd' => 'make' - }, { + }; + my $dcf = ''; + defined $pkg->{'cfg'} and $pkg->{'cfg'} ne '' + and $dcf = "DISTCHECK_CONFIGURE_FLAGS=\"$pkg->{'cfg'}\" "; + push @steps, { 'name' => 'check', - 'cmd' => "make DISTCHECK_CONFIGURE_FLAGS=\"$pkg->{'cfg'}\" distcheck" + 'cmd' => "make ${dcf}distcheck" } unless $pkg->{'opt'} =~ m/\bno-check\b/; - push @steps, { 'name' => 'install', 'cmd' => 'make install' }; + push @steps, { + 'rm' => "$inst_dir/$pkg->{'name'}" + },{ + 'name' => 'install', 'cmd' => 'make install' + }; $pkg->{'steps'} = \@steps; + next if &check_revision($pkg); + &gen_pkg_report($pkg) unless -f "$dir/$pkg->{'name'}.html"; } } @@ -484,15 +596,22 @@ } my $st; - &ch_dir("$work_dir/src"); - &delete_dir($pkg->{'dir'}); - $pkg->{'time_started'} = localtime; + my $dir = "$build_dir/$pkg->{'name'}"; + &delete_dir($dir); + &create_dir($dir); + &ch_dir($dir); + $pkg->{'time_started'} = time; foreach my $step (@{$pkg->{'steps'}}) { $step->{'status'} = "running"; &gen_pkg_report($pkg); - &ch_dir($step->{'dir'}) if defined $step->{'dir'}; + &delete_dir($step->{'rm'}) if defined $step->{'rm'}; + if (defined $step->{'dir'}) { + chomp($pkg->{'dir'} = `$step->{'dir'}`); + &create_dir($pkg->{'dir'}); + &ch_dir($pkg->{'dir'}); + } if (not defined $step->{'cmd'} - or &run($pkg, $step->{'name'}, $step->{'cmd'})) { + or &run($pkg, $step)) { $step->{'status'} = $st = "succeeded"; next; } @@ -500,19 +619,21 @@ last; } + $pkg->{'time_finished'} = time; + $pkg->{'time'} = $pkg->{'time_finished'} - $pkg->{'time_started'}; %ENV = %env; - $pkg->{'time_finished'} = localtime; &gen_pkg_report($pkg); - &ch_dir("$work_dir/src"); + &ch_dir($build_dir); &set_status($pkg, $st); if ($st eq "succeeded") { - system("echo \"$pkg->{'rev'}\" > \"$work_dir/usr/$pkg->{'name'}/.rev\""); - &delete_dir($pkg->{'dir'}); + system("echo \"$pkg->{'rev'}\" > \"$inst_dir/$pkg->{'name'}/.rev\""); + system("echo \"$pkg->{'time'}\" > \"$inst_dir/$pkg->{'name'}/.time\""); + &delete_dir($pkg->{'name'}); } } sub version { - print "auto_build.pl (Auto Build System) $VERSION\n", + print "auto-build (Auto Build System) $VERSION\n", "Written by Clement Vasseur and Nicolas Pouillard.\n\n", "Copyright (C) 2004 LRDE - EPITA Research and Development Laboratory.\n", "This is free software; see the source for copying conditions. ", Index: auto_build/packages.list --- auto_build/packages.list (revision 76) +++ auto_build/packages.list (working copy) @@ -1,50 +1,83 @@ ### Auto Build System ######################################################### -# work directory -/tmp/auto_build - # report directory -/mnt/ghost/stud/vasseu_c/www +/mnt/ghost/stud/vasseu_c/www/build + +# build directory +/work/nitro/auto-build/src + +# inst directory +/work/nitro/auto-build/usr ### Color highlighting ######################################################## -color 808080 "make.*?:.*" -color FF0000 "warning:.*" -color FF0000 "SdfChecker:warning:.*" +color red "make.*: \*\*\* " +color red "SdfChecker:error: " +color maroon "warning:" +color maroon "SdfChecker:warning: " +color gray "make.*:" + +### Tiger ##################################################################### + +section "Tiger" + +#------------------------------------------------------------------------------ + +havm + + url: svn://svn.lrde.epita.fr/svn/havm/trunk + dif: /home/lrde/lrde-2005/vasseu_c/havm.diff + +#------------------------------------------------------------------------------ + +nolimips + + url: svn://svn.lrde.epita.fr/svn/nolimips/trunk ### StrategoXT ################################################################ -aterm = /mnt/daily/usr/Aterm -sdf = /mnt/daily/usr/Sdf -strategoxt = /mnt/daily/usr/StrategoXT -# stratego-shell = /mnt/daily/usr/stratego-shell +section "StrategoXT" #------------------------------------------------------------------------------ -# aterm -# -# url: http://www.cwi.nl/projects/MetaEnv/daily-dist/aterm-2.2.tar.gz -# cfg: --with-gcc +aterm + + url: http://www.cwi.nl/projects/MetaEnv/aterm/aterm-2.2.tar.gz + cfg: --with-gcc #------------------------------------------------------------------------------ -# sdf -# -# url: http://losser.st-lab.cs.uu.nl/~mbravenb/dailydist/sdf2-bundle-dailydist /src/sdf2-bundle-dailydist-head.tar.gz -# cfg: --with-aterm=${aterm} -# opt: no-check +sdf + + url: ftp://ftp.stratego-language.org/pub/stratego/sdf2/sdf2-bundle-2.2.tar.gz + cfg: --with-aterm=${aterm} + opt: no-check #------------------------------------------------------------------------------ -# strategoxt -# -# url: http://losser.st-lab.cs.uu.nl/~mbravenb/dailydist/strategoxt/src/strata egoxt-head.tar.gz -# cfg: --with-aterm=${aterm}\ -# --with-sdf=${sdf} -# opt: no-check +strategoxt + + url: http://losser.st-lab.cs.uu.nl/~mbravenb/dailydist/strategoxt/src/stratego xt-head.tar.gz + cfg: --with-aterm=${aterm}\ + --with-sdf=${sdf} + opt: no-check + +#------------------------------------------------------------------------------ + +stratego-shell + + url: svn://svn.cs.uu.nl:12443/repos/StrategoXT/trunk/experimental/stratego-she ll + cfg: --with-aterm=${aterm}\ + --with-sdf=${sdf}\ + --with-strategoxt=${strategoxt} + env: PATH="${strategoxt}/bin:$PATH" ### Transformers ############################################################## +section "Transformers" + +#------------------------------------------------------------------------------ + sdf-option url: svn://svn.lrde.epita.fr/svn/transformers/trunk/sdf-option @@ -99,8 +132,7 @@ sdf-attribute -#url: svn://svn.lrde.epita.fr/svn/transformers/experimental/sdf-attribute - url: file:///mnt/daily/dists/sdf-attribute-20040629.tar.bz2 + url: svn://svn.lrde.epita.fr/svn/transformers/experimental/sdf-attribute cfg: --with-aterm=${aterm}\ --with-sdf=${sdf}\ --with-strategoxt=${strategoxt}\ @@ -110,19 +142,19 @@ #------------------------------------------------------------------------------ -# c-grammar -# -# url: svn://svn.lrde.epita.fr/svn/transformers/branches/c-grammar -# cfg: --with-aterm=${aterm}\ -# --with-sdf=${sdf}\ -# --with-strategoxt=${strategoxt}\ -# --with-boxedsdf=${boxedsdf}\ -# --with-sdf-option=${sdf-option}\ -# --with-sdf-detgen=${sdf-detgen}\ -# --with-sdf-astgen=${sdf-astgen}\ -# --with-sdf-attribute=${sdf-attribute}\ -# --with-esdf=${esdf} -# env: PATH="${sdf-detgen}/bin:${stratego-shell}/bin:${strategoxt}/bin:$PATH" +c-grammar + + url: svn://svn.lrde.epita.fr/svn/transformers/branches/c-grammar + cfg: --with-aterm=${aterm}\ + --with-sdf=${sdf}\ + --with-strategoxt=${strategoxt}\ + --with-boxedsdf=${boxedsdf}\ + --with-sdf-option=${sdf-option}\ + --with-sdf-detgen=${sdf-detgen}\ + --with-sdf-astgen=${sdf-astgen}\ + --with-sdf-attribute=${sdf-attribute}\ + --with-esdf=${esdf} + env: PATH="${sdf-detgen}/bin:${stratego-shell}/bin:${strategoxt}/bin:$PATH" #------------------------------------------------------------------------------ @@ -152,17 +184,17 @@ #------------------------------------------------------------------------------ -# cxx-typecheck -# -# url: svn://svn.lrde.epita.fr/svn/transformers/trunk/cxx-typecheck -# cfg: --with-aterm=${aterm}\ -# --with-sdf=${sdf}\ -# --with-strategoxt=${strategoxt}\ -# --with-boxedsdf=${boxedsdf}\ -# --with-sdf-option=${sdf-option}\ -# --with-cxx-grammar=${cxx-grammar}\ -# --with-esdf=${esdf} -# env: PATH="${strategoxt}/bin:$PATH" +cxx-typecheck + + url: svn://svn.lrde.epita.fr/svn/transformers/trunk/cxx-typecheck + cfg: --with-aterm=${aterm}\ + --with-sdf=${sdf}\ + --with-strategoxt=${strategoxt}\ + --with-boxedsdf=${boxedsdf}\ + --with-sdf-option=${sdf-option}\ + --with-cxx-grammar=${cxx-grammar}\ + --with-esdf=${esdf} + env: PATH="${strategoxt}/bin:$PATH" #------------------------------------------------------------------------------ @@ -180,4 +212,27 @@ --with-sdf-astgen=${sdf-astgen} env: PATH="${strategoxt}/bin:$PATH" +### Olena ##################################################################### + +section "Olena" + +#------------------------------------------------------------------------------ + +olena + + url: prcs://oln + env: PRCS_REPOSITORY="/home/lrde/admin/prcs/repository" + +### Vaucanson ################################################################# + +section "Vaucanson" + +#------------------------------------------------------------------------------ + +vaucanson + + url: svn://svn.lrde.epita.fr/svn/vaucanson/trunk + cfg: --with-xml + env: PATH="/home/lrde/lrde-2005/vasseu_c/usr/bin/old:$PATH" + #------------------------------------------------------------------------------

Bravo ! C'est tout nul comme commentaire, et en fait c'est plutôt une suggestion, mais les styles (les couleurs etc.) ne devraient-ils pas plutôt relever d'une css ?

Akim Demaille <akim@epita.fr> wrote
C'est tout nul comme commentaire, et en fait c'est plutôt une suggestion, mais les styles (les couleurs etc.) ne devraient-ils pas plutôt relever d'une css ?
Oui, c'est prévu. -- Clement Vasseur -o) [ nitro :: EPITA CSI 2005 ] /\\ "Programming is about being lazy." _\_V
participants (2)
-
Akim Demaille
-
Clement Vasseur