~darkmuggle-deactivatedaccount/junk/virtualbox_test

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/bash
# Setup up the build environment.
exec > >(tee /tmp/build.log) 2>&1
echo "127.0.1.1 $HOSTNAME $HOSTNAME" >> /etc/hosts
error() { echo "$@" 1>&2; }
fail() {
    [ $# -eq 0 ] || error "$@";
    echo "Failed" > /tmp/failed;
    tar -C /tmp -cvf /dev/vdb failed build.log;
    shutdown -P now;
    exit 1;
}

debug() { error "$(date -R):" "$@"; }
sysfail() { fail "General failure!"; }

trap sysfail SIGINT SIGTERM
set -x

# Variables from configuration step
PACK_D="%D"
BZR_MAAS="%M"
suite="%d"
stream="%S"
serial="%s"

# Set up the stuff
export SRC_D="/tmp/maas"
export START_D="/tmp/logs"
export OUT_D="%O"

# Set up the code paths
cd /tmp
bzr branch "${BZR_MAAS}" "${SRC_D}" ||
    fail "Failed to check out the BZR branch"
mci2eph="${SRC_D}/maas-cloudimg2ephemeral"

# Extract /dev/vdc (which has all the goodies including the image
# for conversion)
tar -C / -xvvf /dev/vdd

# Make the dirs
mkdir /tmp/maas_images
mkdir "${START_D}"
mkdir "${PUBLISH_BASE}"

# Do the work
ARCHES="%A"
for arch in ${ARCHES:-i386 amd64 armhf}; do
    prefix="${suite}-${stream}-maas-${arch}"
    work_d="${OUT_D}/${arch}"
    mkdir -p "${work_d}" ||
        fail "Unable to create destination directory for ${arch}"

    echo "Extracting tarball for ${prefix}"
    tar -Sxvzf - -C "${work_d}" --wildcards "*.img" < "${PACK_D}/%B-${arch}.tar.gz" ||
        fail "failed to extract tarball for ${prefix}"

    img=$(echo "${work_d}/"*.img) && [ -f "$img" ] ||
        fail "failed to find img in tarball at $r_url"

    mv "${img}" "${work_d}/${prefix}.img" && img="${work_d}/${prefix}.img" ||
        fail "failed to rename image"

    echo "Converting ${arch} to ephemeral disk"

    "$mci2eph" "$img" "${work_d}/${prefix}-vmlinuz" \
        "${work_d}/${prefix}-initrd" "${work_d}/${prefix}.manifest" ||
        fail "failed to turn $img into ephemeral"

    echo "creating ${prefix}.tar.gz"
    ( cd "$work_d" &&
        tar -Scvzf - ${prefix}.img ${prefix}-vmlinuz ${prefix}-initrd ) \
            > "$OUT_D/${prefix}.tar.gz" ||
        fail "failed to make tar file"

    mv "${work_d}/${prefix}.manifest" "${OUT_D}" ||
        fail "failed to move manifest"

    rm -Rf "${work_d}"
    rm "${PACK_D}/${prefix}.tar.gz"
done

# Finish the work
echo "Taring up artifacts to /dev/vdb!"
touch /tmp/success
tar -C /tmp -cvf /dev/vdb maas_images logs success build.log "${OUT_D}" >> /dev/null
sync
shutdown -P now