0ad/source/tools/autobuild2/startup.pl
2009-06-20 14:57:02 +00:00

44 lines
1.0 KiB
Perl

=pod
This script is executed on startup (via a service) on the build server.
It does as little as possible, since it is necessarily frozen
into the static machine image and is hard to update.
The interesting code is passed in a zip file via the EC2 user-data API.
=cut
use strict;
use warnings;
use LWP::Simple();
use Archive::Zip;
use IO::String;
open STDOUT, '>c:/0ad/autobuild/stdout.txt';
open STDERR, '>c:/0ad/autobuild/stderr.txt';
STDOUT->autoflush;
STDERR->autoflush;
# This bit sometimes fails, for reasons I don't understand, so just keep trying it lots of times
for my $i (0..60) {
mkdir 'd:/0ad' and last;
warn "($i) $!";
sleep 1;
}
my $extract_root = 'd:/0ad/autobuild';
extract_user_data();
do "$extract_root/run.pl";
sub extract_user_data {
my $data = LWP::Simple::get('http://169.254.169.254/2008-09-01/user-data');
my $zip = Archive::Zip->new();
$zip->readFromFileHandle(new IO::String($data));
for ($zip->members) {
$_->extractToFileNamed("$extract_root/" . $_->fileName);
}
}