File: startup.pl

package info (click to toggle)
0ad 0.0.17-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 51,248 kB
  • ctags: 46,933
  • sloc: cpp: 223,208; ansic: 31,240; python: 16,343; perl: 4,083; sh: 1,011; makefile: 915; xml: 733; java: 621; ruby: 229; erlang: 53; sql: 40
file content (43 lines) | stat: -rw-r--r-- 1,046 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
=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);
    }
}