#!/usr/bin/perl # vim:sw=4:et:ts=4:ai: use strict; sub PrintUsage() { die < "SeaMonkey", args => "--depend --mozconfig mozconfig" }, { tree => "SeaMonkey-Branch", args => "--depend --mozconfig mozconfig" } ]; END_EXAMPLE ; exit; } sub HandleArgs() { return if ($#ARGV == -1); PrintUsage() if ($#ARGV != 0 || $ARGV[0] ne "--example-config"); PrintExample(); } sub LoadConfig() { if (-r 'multi-config.pl') { no strict 'vars'; open CONFIG, 'multi-config.pl' or print "can't open multi-config.pl, $?\n"; while () { package Settings; eval; } close CONFIG; } else { warn "Error: Need tinderbox config file, multi-config.pl\n"; exit; } } sub Run() { my $start_time = time(); while (1) { # $BuildSleep is the minimum amount of time a build is allowed to take. # It prevents sending too many messages to the tinderbox server when # something is broken. foreach my $treeentry (@{$Settings::Tinderboxes}) { chdir($treeentry->{tree}) or die "Tree $treeentry->{tree} does not exist"; system("./build-seamonkey.pl --once $treeentry->{args}"); chdir(".."); } my $sleep_time = ($Settings::BuildSleep * 60) - (time() - $start_time); if ($sleep_time > 0) { print "\n\nSleeping $sleep_time seconds ...\n"; sleep $sleep_time; } $start_time = time(); } } HandleArgs(); LoadConfig(); Run();