1 | my $sep = $^O eq "MSWin32" ? "\\" : "/";
|
---|
2 |
|
---|
3 | sub get_date {
|
---|
4 | local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
|
---|
5 | local $day = $mday;
|
---|
6 | local $month = $mon+1;
|
---|
7 | local $year = $year+1900;
|
---|
8 | if ( length $month == 1 ) {
|
---|
9 | $month = join( "", "0", $month);
|
---|
10 | }
|
---|
11 | if ( length $day== 1 ) {
|
---|
12 | $day = join( "", "0", $day );
|
---|
13 | }
|
---|
14 | local $date = join( ".", $year,$month,$day );
|
---|
15 | return $date;
|
---|
16 | }
|
---|
17 |
|
---|
18 | sub gen_snapshot_id {
|
---|
19 | if ( exists $_[0] && exists $_[1] ) {
|
---|
20 | return $_[0] . get_date() . $_[1];
|
---|
21 | }
|
---|
22 |
|
---|
23 | if ( exists $_[0] ) {
|
---|
24 | return $_[0] . get_date();
|
---|
25 | }
|
---|
26 | return get_date();
|
---|
27 | }
|
---|
28 |
|
---|
29 | sub create_release {
|
---|
30 |
|
---|
31 | die "Must provide parameter to create_release\n" unless (exists $_[0]);
|
---|
32 |
|
---|
33 | my $release_folder_name = $_[0];
|
---|
34 |
|
---|
35 | my $release_version = $release_folder_name;
|
---|
36 | $release_version =~ s/^gs-?//;
|
---|
37 | $release_version =~ s/rc\d$//;
|
---|
38 | my $major_version = $release_version;
|
---|
39 | $major_version =~ s/^(3|2).*/$1/;
|
---|
40 | $release_version =~ s/^($major_version)\.?(\d*).*/$1.$2/;
|
---|
41 | my $rk = "rk".$major_version;
|
---|
42 |
|
---|
43 | my $release_version_extra;
|
---|
44 | if ($release_folder_name =~ m/(rc\d)$/) {
|
---|
45 | $release_version_extra = $1;
|
---|
46 | }
|
---|
47 | if ($release_folder_name !~ m/^gs/) { # prefix gs
|
---|
48 | $release_folder_name = "gs".$release_folder_name;
|
---|
49 | }
|
---|
50 | my $release_dir = "$ENV{'DATA_DIR'}${sep}$release_folder_name";
|
---|
51 |
|
---|
52 | print "major_version: $major_version\n";
|
---|
53 | print "version: $release_version\n";
|
---|
54 | print "versionextra: $release_version_extra\n";
|
---|
55 | print "release_folder_name: $release_folder_name\n";
|
---|
56 | print "release_dir: $release_dir\n";
|
---|
57 |
|
---|
58 | print "about to clean up old snapshots (Ctrl-C to cancel)";
|
---|
59 | local $| = 1;
|
---|
60 | for ( my $i=0; $i<5; $i++ ) {
|
---|
61 | print ".";
|
---|
62 | sleep 1;
|
---|
63 | }
|
---|
64 | $| = 0;
|
---|
65 |
|
---|
66 | print "cleaning up previous release snapshot $release_dir\n";
|
---|
67 |
|
---|
68 | if(-d $release_dir) {
|
---|
69 | if ( $^O eq "MSWin32" ) {
|
---|
70 | system("rd /q /s \"$release_dir\"");
|
---|
71 | } else {
|
---|
72 | system("rm -rf \"$release_dir\"");
|
---|
73 | }
|
---|
74 | }
|
---|
75 |
|
---|
76 | print "creating the release dir\n";
|
---|
77 | mkdir $release_dir or die "couldn't create release directory\n";
|
---|
78 |
|
---|
79 | print "changing to the release dir\n";
|
---|
80 | chdir $release_dir;
|
---|
81 |
|
---|
82 | #version property
|
---|
83 | print "setting up todays properties\n";
|
---|
84 | `echo version:$release_version> $rk-build.properties`;
|
---|
85 |
|
---|
86 | if($release_version_extra) {
|
---|
87 | `echo version-extra:$release_version_extra>> $rk-build.properties`;
|
---|
88 | }
|
---|
89 |
|
---|
90 | #processor propertylocal $| = 1;
|
---|
91 | if ( $^O eq "darwin" ) {
|
---|
92 | print "setting processor\n";
|
---|
93 | if ( `uname -p` eq "i386" ) {
|
---|
94 | `echo processor:intel>> $rk-build.properties`;
|
---|
95 | } elsif ( `uname -p` eq "powerpc" ) {
|
---|
96 | `echo processor:ppc>> $rk-build.properties`;
|
---|
97 | } else {
|
---|
98 | print "unable to determine processor type, using intel\n";
|
---|
99 | `echo processor:intel>> $rk-build.properties`;
|
---|
100 | }
|
---|
101 | } elsif ( $^O eq "linux" ) {
|
---|
102 | if(`uname -m` =~ m/64$/) {
|
---|
103 | print "Setting linux architecture to 64 bit";
|
---|
104 | `echo x64:true>> $rk-build.properties`;
|
---|
105 | }
|
---|
106 | }
|
---|
107 |
|
---|
108 | #branch path property
|
---|
109 | if ( $ENV{'branch_path'} ) {
|
---|
110 | `echo branch.path:$ENV{'branch_path'}>> $rk-build.properties`;
|
---|
111 | }
|
---|
112 |
|
---|
113 | #server.exe.location
|
---|
114 | if ( $major_version eq "2" && exists $ENV{'SERVER_EXE_LOCATION'} ) {
|
---|
115 | `echo server.exe.location:$ENV{'SERVER_EXE_LOCATION'}>> $rk-build.properties`;
|
---|
116 | }
|
---|
117 |
|
---|
118 | print "creating the snapshot using $rk\n";
|
---|
119 | system( $rk );
|
---|
120 | }
|
---|
121 |
|
---|
122 | sub create {
|
---|
123 |
|
---|
124 | die "release_dir not set, cant create\n" unless $release_dir;
|
---|
125 |
|
---|
126 | print "about to clean up old snapshots (Ctrl-C to cancel)";
|
---|
127 | local $| = 1;
|
---|
128 | for ( my $i=0; $i<5; $i++ ) {
|
---|
129 | print ".";
|
---|
130 | sleep 1;
|
---|
131 | }
|
---|
132 | $| = 0;
|
---|
133 |
|
---|
134 | print "cleaning up previous snapshot\n";
|
---|
135 | local $release_parent = dirname($release_dir);
|
---|
136 | if ( $^O eq "MSWin32" ) {
|
---|
137 | system("rd /q /s \"$release_parent\"");
|
---|
138 | } else {
|
---|
139 | system("rm -rf \"$release_parent\"");
|
---|
140 | }
|
---|
141 |
|
---|
142 | print "creating the release dir\n";
|
---|
143 | mkdir $release_parent or die "couldn't create release parent directory\n";
|
---|
144 | mkdir $release_dir or die "couldn't create release directory\n";
|
---|
145 |
|
---|
146 | print "changing to the release dir\n";
|
---|
147 | chdir $release_dir;
|
---|
148 |
|
---|
149 | #version property
|
---|
150 | print "setting up todays properties\n";
|
---|
151 | `echo version:$snapshot_id> $rk-build.properties`;
|
---|
152 |
|
---|
153 | #processor propertylocal $| = 1;
|
---|
154 | if ( $^O eq "darwin" ) {
|
---|
155 | print "setting processor\n";
|
---|
156 | if ( `uname -p` eq "i386" ) {
|
---|
157 | `echo processor:intel>> $rk-build.properties`;
|
---|
158 | } elsif ( `uname -p` eq "powerpc" ) {
|
---|
159 | `echo processor:ppc>> $rk-build.properties`;
|
---|
160 | } else {
|
---|
161 | print "unable to determine processor type, using intel\n";
|
---|
162 | `echo processor:intel>> $rk-build.properties`;
|
---|
163 | }
|
---|
164 | }
|
---|
165 |
|
---|
166 | #branch path property
|
---|
167 | if ( $ENV{'branch_path'} ) {
|
---|
168 | `echo branch.path:$ENV{'branch_path'}>> $rk-build.properties`;
|
---|
169 | }
|
---|
170 |
|
---|
171 | #server.exe.location
|
---|
172 | if ( exists $ENV{'SERVER_EXE_LOCATION'} ) {
|
---|
173 | `echo server.exe.location:$ENV{'SERVER_EXE_LOCATION'}>> $rk-build.properties`;
|
---|
174 | }
|
---|
175 |
|
---|
176 | print "creating the snapshot using $rk\n";
|
---|
177 | system( $rk );
|
---|
178 |
|
---|
179 | }
|
---|
180 |
|
---|
181 | sub upload {
|
---|
182 | print "uploading files\n";
|
---|
183 |
|
---|
184 | my @munges = ();
|
---|
185 | if ( exists $ENV{'munges'} ) {
|
---|
186 | @munges = split(' ', $ENV{'munges'});
|
---|
187 | }
|
---|
188 |
|
---|
189 | #copy products to a temporary folder, giving them their new names
|
---|
190 | if ( -d "$release_dir${sep}uploads" ) {
|
---|
191 | system( "rm -rf '$release_dir${sep}uploads'" );
|
---|
192 | }
|
---|
193 | mkdir "$release_dir${sep}uploads";
|
---|
194 |
|
---|
195 | my @files;
|
---|
196 | if ( -d "$release_dir${sep}products" ) {
|
---|
197 | @files = <$release_dir${sep}products${sep}*>;
|
---|
198 | }
|
---|
199 | push( @files, "$release_dir${sep}$rk.out" );
|
---|
200 |
|
---|
201 | for my $file ( @files ) {
|
---|
202 | if ( -e $file ) {
|
---|
203 | my $filename = basename($file);
|
---|
204 | #munge
|
---|
205 | for my $m ( @munges ) {
|
---|
206 | $doit="\$filename =~ $m"; eval "$doit";
|
---|
207 | }
|
---|
208 | #upload
|
---|
209 | print "Will upload '" . basename($file) . "' to '$filename'\n";
|
---|
210 | if( $^O =~ "linux|darwin" ) {
|
---|
211 | system("cp \"$file\" \"${release_dir}${sep}uploads${sep}$filename\"");
|
---|
212 | }
|
---|
213 | else {
|
---|
214 | system("copy \"$file\" \"${release_dir}${sep}uploads${sep}$filename\"");
|
---|
215 | }
|
---|
216 | }
|
---|
217 |
|
---|
218 | }
|
---|
219 |
|
---|
220 | # We use the upload-files-to-www-internal.sh script on linux systems now
|
---|
221 | # The following is still left in as it appears to work for the mac
|
---|
222 |
|
---|
223 | #my $out = `set`;
|
---|
224 | #print "out = $out\n";
|
---|
225 | my $command = "cd \"${release_dir}${sep}uploads\" && tar -c * | ";
|
---|
226 | $command .= ($^O eq "MSWin32" ? "plink" : "ssh");
|
---|
227 | $command .= " -T -i \"$ENV{'IDENTITY_FILE'}\" nzdl\@puka.cs.waikato.ac.nz";
|
---|
228 | print "$command\n";
|
---|
229 | system("$command");
|
---|
230 |
|
---|
231 | ## for now, upload a copy to the new machine, later to replace puka
|
---|
232 | #$command = "cd \"${release_dir}${sep}uploads\" && tar -c * | ";
|
---|
233 | #$command .= ($^O eq "MSWin32" ? "plink" : "ssh");
|
---|
234 | #$command .= " -T -i \"$ENV{'IDENTITY_FILE'}\" nzdl-gsorg\@wwwdev.greenstone.org";
|
---|
235 | ##print "$command\n";
|
---|
236 | #system("$command");
|
---|
237 |
|
---|
238 | # also upload a copy to www-internal, which is the new wwwdev, and will replace puka.
|
---|
239 | $command = "cd \"${release_dir}${sep}uploads\" && tar -c * | ";
|
---|
240 | $command .= ($^O eq "MSWin32" ? "plink" : "ssh");
|
---|
241 | $command .= " -T -i \"$ENV{'IDENTITY_FILE_ED25519'}\" nzdl-gsorg\@www-internal.greenstone.org";
|
---|
242 | print "$command\n";
|
---|
243 | system("$command");
|
---|
244 |
|
---|
245 | }
|
---|