tools/buildbot/helpers.pm
author David Anderson <dvander@alliedmods.net>
Sat Jul 28 16:42:38 2012 -0700 (2012-07-28)
changeset 108 9dcf58a17d32
parent 95 4d7366431a6c
child 112 54ec6ed5d90d
permissions -rw-r--r--
Stop using ccache on OS X.
danderson@95
     1
#!/usr/bin/perl
danderson@95
     2
danderson@95
     3
use strict;
danderson@95
     4
use Cwd;
danderson@95
     5
danderson@95
     6
package Build;
danderson@95
     7
danderson@95
     8
our $SVN = "/usr/bin/svn";
danderson@95
     9
our $SVN_USER = 'dvander';
danderson@95
    10
our $SVN_ARGS = '';
danderson@95
    11
danderson@95
    12
sub HgRevNum
danderson@95
    13
{
danderson@95
    14
	my ($path) = (@_);
danderson@95
    15
	my ($cd, $text, $rev);
danderson@95
    16
danderson@95
    17
	$cd = Cwd::cwd();
danderson@95
    18
	chdir($path);
danderson@95
    19
	$text = `hg identify -n`;
danderson@95
    20
	chdir($cd);
danderson@95
    21
danderson@95
    22
	chomp $text;
danderson@95
    23
	if ($text =~ /^(\d+)/)
danderson@95
    24
	{
danderson@95
    25
		return $1;
danderson@95
    26
	}
danderson@95
    27
danderson@95
    28
	return 0;
danderson@95
    29
}
danderson@95
    30
danderson@95
    31
sub SvnRevNum
danderson@95
    32
{
danderson@95
    33
	my ($str)=(@_);
danderson@95
    34
			
danderson@95
    35
	my $data = Command('svnversion -c ' . $str);
danderson@95
    36
	if ($data =~ /(\d+):(\d+)/)
danderson@95
    37
	{
danderson@95
    38
		return $2;
danderson@95
    39
	} elsif ($data =~ /(\d+)/) {
danderson@95
    40
		return $1;
danderson@95
    41
	} else {
danderson@95
    42
		return 0;
danderson@95
    43
	}
danderson@95
    44
}
danderson@95
    45
danderson@95
    46
sub ProductVersion
danderson@95
    47
{
danderson@95
    48
	my ($file) = (@_);
danderson@95
    49
	my ($version);
danderson@95
    50
	open(FILE, $file) or die "Could not open $file: $!\n";
danderson@95
    51
	$version = <FILE>;
danderson@95
    52
	close(FILE);
danderson@95
    53
	chomp $version;
danderson@95
    54
	return $version;
danderson@95
    55
}
danderson@95
    56
danderson@95
    57
sub Delete
danderson@95
    58
{
danderson@95
    59
	my ($str)=(@_);
danderson@95
    60
	if ($^O =~ /MSWin/)
danderson@95
    61
	{
danderson@95
    62
		Command("del /S /F /Q \"$str\"");
danderson@95
    63
		Command("rmdir /S /Q \"$str\"");
danderson@95
    64
	} else {
danderson@95
    65
		Command("rm -rf $str");
danderson@95
    66
	}
danderson@95
    67
	return !(-e $str);
danderson@95
    68
}
danderson@95
    69
danderson@95
    70
sub Copy
danderson@95
    71
{
danderson@95
    72
	my ($src,$dest)=(@_);
danderson@95
    73
	if ($^O =~ /MSWin/)
danderson@95
    74
	{
danderson@95
    75
		Command("copy \"$src\" \"$dest\" /y");
danderson@95
    76
	} else {
danderson@95
    77
		Command("cp \"$src\" \"$dest\"");
danderson@95
    78
	}
danderson@95
    79
	return (-e $dest);
danderson@95
    80
}
danderson@95
    81
danderson@95
    82
sub Move
danderson@95
    83
{
danderson@95
    84
	my ($src,$dest)=(@_);
danderson@95
    85
	if ($^O =~ /MSWin/)
danderson@95
    86
	{
danderson@95
    87
		Command("move \"$src\" \"$dest\"");
danderson@95
    88
	} else {
danderson@95
    89
		Command("mv \"$src\" \"$dest\"");
danderson@95
    90
	}
danderson@95
    91
	return (-e $dest);
danderson@95
    92
}
danderson@95
    93
danderson@95
    94
sub Command
danderson@95
    95
{
danderson@95
    96
	my($cmd)=(@_);
danderson@95
    97
	print "$cmd\n";
danderson@95
    98
	return `$cmd`;
danderson@95
    99
}
danderson@95
   100
danderson@95
   101
sub PathFormat
danderson@95
   102
{
danderson@95
   103
	my ($str)=(@_);
danderson@95
   104
	if ($^O =~ /MSWin/)
danderson@95
   105
	{
danderson@95
   106
		$str =~ s#/#\\#g;
danderson@95
   107
	} else {
danderson@95
   108
		$str =~ s#\\#/#g;
danderson@95
   109
	}
danderson@95
   110
	return $str;
danderson@95
   111
}
danderson@95
   112
danderson@95
   113
sub SVN_Remove
danderson@95
   114
{
danderson@95
   115
	my ($file)=(@_);
danderson@95
   116
	my ($path, $name);
danderson@95
   117
	if ($^O =~ /MSWin/)
danderson@95
   118
	{
danderson@95
   119
		($path, $name) = ($file =~ /(.+)\/([^\/]+)$/);
danderson@95
   120
	} else {
danderson@95
   121
		($path, $name) = ($file =~ /(.+)\\([^\\]+)$/);
danderson@95
   122
	}
danderson@95
   123
	my $dir = Cwd::cwd();
danderson@95
   124
	chdir($path);
danderson@95
   125
	Command($SVN . ' ' . $SVN_ARGS . ' delete ' . $name);
danderson@95
   126
	chdir($dir);
danderson@95
   127
}
danderson@95
   128
danderson@95
   129
sub SVN_Add
danderson@95
   130
{
danderson@95
   131
	my ($file)=(@_);
danderson@95
   132
	my ($path, $name);
danderson@95
   133
	if ($^O =~ /MSWin/)
danderson@95
   134
	{
danderson@95
   135
		($path, $name) = ($file =~ /(.+)\/([^\/]+)$/);
danderson@95
   136
	} else {
danderson@95
   137
		($path, $name) = ($file =~ /(.+)\\([^\\]+)$/);
danderson@95
   138
	}
danderson@95
   139
	my $dir = Cwd::cwd();
danderson@95
   140
	chdir($path);
danderson@95
   141
	Command($SVN . ' ' . $SVN_ARGS . ' add ' . $name);
danderson@95
   142
	chdir($dir);
danderson@95
   143
}
danderson@95
   144
danderson@95
   145
sub GetBuildType
danderson@95
   146
{
danderson@95
   147
	my ($file)=(@_);
danderson@95
   148
	my ($type);
danderson@95
   149
	open(TYPE, $file) or die("Could not open file: $!\n");
danderson@95
   150
	$type = <TYPE>;
danderson@95
   151
	close(TYPE);
danderson@95
   152
	chomp $type;
danderson@95
   153
	return $type;
danderson@95
   154
}
danderson@95
   155
danderson@95
   156
return 1;