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