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