tools/buildbot/bootstrap.pl
author David Anderson <danderson@mozilla.com>
Thu Jul 26 00:25:11 2012 -0700 (2012-07-26)
changeset 102 6726ff987b9b
parent 98 8fadbee09053
child 108 9dcf58a17d32
permissions -rwxr-xr-x
Push build.
danderson@95
     1
#!/usr/bin/perl
danderson@95
     2
# vim: set ts=2 sw=2 tw=99 noet: 
danderson@95
     3
danderson@95
     4
use strict;
danderson@95
     5
use Cwd;
danderson@95
     6
use File::Basename;
danderson@95
     7
use File::Path;
danderson@95
     8
danderson@95
     9
my ($myself, $path) = fileparse($0);
danderson@95
    10
chdir($path);
danderson@95
    11
danderson@95
    12
require 'helpers.pm';
danderson@95
    13
danderson@95
    14
#Go back above build dir
danderson@95
    15
chdir(Build::PathFormat('../../..'));
danderson@95
    16
danderson@95
    17
#Get the source path.
danderson@95
    18
our ($root) = getcwd();
danderson@95
    19
danderson@95
    20
my $reconf = 0;
danderson@95
    21
danderson@95
    22
#Create output folder if it doesn't exist.
danderson@95
    23
if (!(-d 'OUTPUT')) {
danderson@95
    24
	$reconf = 1;
danderson@95
    25
} else {
danderson@95
    26
	if (-f 'OUTPUT/sentinel') {
danderson@95
    27
		my @s = stat('OUTPUT/sentinel');
danderson@95
    28
		my $mtime = $s[9];
danderson@95
    29
		my @files = ('build/pushbuild.txt', 'build/AMBuildScript', 'build/product.version');
danderson@95
    30
		my ($i);
danderson@95
    31
		for ($i = 0; $i <= $#files; $i++) {
danderson@95
    32
			if (IsNewer($files[$i], $mtime)) {
danderson@95
    33
				$reconf = 1;
danderson@95
    34
				last;
danderson@95
    35
			}
danderson@95
    36
		}
danderson@95
    37
	} else {
danderson@95
    38
		$reconf = 1;
danderson@95
    39
	}
danderson@95
    40
}
danderson@95
    41
danderson@95
    42
if ($reconf) {
danderson@95
    43
	rmtree('OUTPUT');
danderson@95
    44
	mkdir('OUTPUT') or die("Failed to create output folder: $!\n");
danderson@95
    45
	chdir('OUTPUT');
danderson@95
    46
danderson@95
    47
	print "Attempting to reconfigure...\n";
danderson@95
    48
danderson@95
    49
	my ($os, $bits, $mode);
danderson@95
    50
	$os = $ARGV[0];
danderson@95
    51
	$bits = $ARGV[1];
danderson@95
    52
	$mode = $ARGV[2];
danderson@95
    53
danderson@95
    54
	my ($prefix, $python);
danderson@95
    55
	if ($^O eq "darwin") {
danderson@95
    56
		$prefix = 'CC="ccache clang" CXX="ccache clang++" ';
danderson@95
    57
		$python = 'python3';
danderson@95
    58
	} elsif ($^O eq "linux") {
danderson@98
    59
		$prefix = 'CC="ccache gcc" CXX="ccache g++" ';
danderson@95
    60
		$python = 'python3';
danderson@95
    61
	} elsif ($^O =~ /MSWin/) {
danderson@95
    62
		$prefix = '';
danderson@95
    63
		$python = "C:\\Python31\\Python.exe";
danderson@95
    64
	}
danderson@95
    65
danderson@95
    66
	my ($cmdstring);
danderson@95
    67
	$cmdstring = $prefix .
danderson@95
    68
							 $python . ' ' .
danderson@95
    69
							 Build::PathFormat('../build/configure.py') . ' ';
danderson@95
    70
danderson@95
    71
	if ($mode eq 'release') {
danderson@95
    72
		$cmdstring .= '--enable-optimize ';
danderson@95
    73
	} else {
danderson@95
    74
		$cmdstring .= '--enable-debug ';
danderson@95
    75
	}
danderson@95
    76
danderson@95
    77
	if ($bits eq '32') {
danderson@95
    78
		$cmdstring .= '--arch=x86 ';
danderson@95
    79
	} else {
danderson@98
    80
		$cmdstring .= '--arch=x64 ';
danderson@95
    81
	}
danderson@95
    82
danderson@95
    83
	my ($result);
danderson@97
    84
	print "-> $cmdstring\n";
danderson@95
    85
	$result = `$cmdstring`;
danderson@95
    86
danderson@95
    87
	print "$result\n";
danderson@95
    88
	if ($? != 0) {
danderson@95
    89
		die("Could not configure: $!\n");
danderson@95
    90
	}
danderson@95
    91
	open(FILE, '>sentinel');
danderson@95
    92
	print FILE "this is nothing.\n";
danderson@95
    93
	close(FILE);
danderson@95
    94
}
danderson@95
    95
danderson@95
    96
sub IsNewer
danderson@95
    97
{
danderson@95
    98
	my ($file, $time) = (@_);
danderson@95
    99
danderson@95
   100
	my @s = stat($file);
danderson@95
   101
	my $mtime = $s[9];
danderson@95
   102
	return $mtime > $time;
danderson@95
   103
}
danderson@95
   104
danderson@95
   105
exit(0);
danderson@95
   106
danderson@95
   107