|
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; |