tools/buildbot/bootstrap.pl
author David Anderson <dvander@alliedmods.net>
Sat Jul 28 16:50:45 2012 -0700 (2012-07-28)
changeset 109 b0852a3c0ba7
parent 108 9dcf58a17d32
child 110 1b0577b26837
permissions -rwxr-xr-x
Reconfigure if bootstrap.pl changes.
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];
dvander@109
    29
		my @files = ('build/pushbuild.txt',
dvander@109
    30
								 'build/AMBuildScript',
dvander@109
    31
								 'build/product.version',
dvander@109
    32
								 'build/tools/bootstrap.pl');
danderson@95
    33
		my ($i);
danderson@95
    34
		for ($i = 0; $i <= $#files; $i++) {
danderson@95
    35
			if (IsNewer($files[$i], $mtime)) {
danderson@95
    36
				$reconf = 1;
danderson@95
    37
				last;
danderson@95
    38
			}
danderson@95
    39
		}
danderson@95
    40
	} else {
danderson@95
    41
		$reconf = 1;
danderson@95
    42
	}
danderson@95
    43
}
danderson@95
    44
danderson@95
    45
if ($reconf) {
danderson@95
    46
	rmtree('OUTPUT');
danderson@95
    47
	mkdir('OUTPUT') or die("Failed to create output folder: $!\n");
danderson@95
    48
	chdir('OUTPUT');
danderson@95
    49
danderson@95
    50
	print "Attempting to reconfigure...\n";
danderson@95
    51
danderson@95
    52
	my ($os, $bits, $mode);
danderson@95
    53
	$os = $ARGV[0];
danderson@95
    54
	$bits = $ARGV[1];
danderson@95
    55
	$mode = $ARGV[2];
danderson@95
    56
danderson@95
    57
	my ($prefix, $python);
danderson@95
    58
	if ($^O eq "darwin") {
dvander@108
    59
		$prefix = 'CC=clang CXX=clang++ ';
danderson@95
    60
		$python = 'python3';
danderson@95
    61
	} elsif ($^O eq "linux") {
danderson@98
    62
		$prefix = 'CC="ccache gcc" CXX="ccache g++" ';
danderson@95
    63
		$python = 'python3';
danderson@95
    64
	} elsif ($^O =~ /MSWin/) {
danderson@95
    65
		$prefix = '';
danderson@95
    66
		$python = "C:\\Python31\\Python.exe";
danderson@95
    67
	}
danderson@95
    68
danderson@95
    69
	my ($cmdstring);
danderson@95
    70
	$cmdstring = $prefix .
danderson@95
    71
							 $python . ' ' .
danderson@95
    72
							 Build::PathFormat('../build/configure.py') . ' ';
danderson@95
    73
danderson@95
    74
	if ($mode eq 'release') {
danderson@95
    75
		$cmdstring .= '--enable-optimize ';
danderson@95
    76
	} else {
danderson@95
    77
		$cmdstring .= '--enable-debug ';
danderson@95
    78
	}
danderson@95
    79
danderson@95
    80
	if ($bits eq '32') {
danderson@95
    81
		$cmdstring .= '--arch=x86 ';
danderson@95
    82
	} else {
danderson@98
    83
		$cmdstring .= '--arch=x64 ';
danderson@95
    84
	}
danderson@95
    85
danderson@95
    86
	my ($result);
danderson@97
    87
	print "-> $cmdstring\n";
danderson@95
    88
	$result = `$cmdstring`;
danderson@95
    89
danderson@95
    90
	print "$result\n";
danderson@95
    91
	if ($? != 0) {
danderson@95
    92
		die("Could not configure: $!\n");
danderson@95
    93
	}
danderson@95
    94
	open(FILE, '>sentinel');
danderson@95
    95
	print FILE "this is nothing.\n";
danderson@95
    96
	close(FILE);
danderson@95
    97
}
danderson@95
    98
danderson@95
    99
sub IsNewer
danderson@95
   100
{
danderson@95
   101
	my ($file, $time) = (@_);
danderson@95
   102
danderson@95
   103
	my @s = stat($file);
danderson@95
   104
	my $mtime = $s[9];
danderson@95
   105
	return $mtime > $time;
danderson@95
   106
}
danderson@95
   107
danderson@95
   108
exit(0);
danderson@95
   109
danderson@95
   110