summaryrefslogtreecommitdiff
path: root/build-vm-lxc
blob: 322299bd7779521d4a0d6c9c13d5c2fa590150c4 (plain)
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
90
91
92
93
94
95
96
97
98
99
100
#
# LXC specific functions
#
################################################################
#
# Copyright (c) 1995-2014 SUSE Linux Products GmbH
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or 3 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program (see the file COPYING); if not, write to the
# Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
################################################################

lxc_get_id() {
    LXCID="obsbuild:${BUILD_ROOT##*/}"
}

vm_verify_options_lxc() {
    VM_IMAGE=
    VM_SWAP=
}

vm_startup_lxc() {
    lxc_get_id
    LXCDIR="`lxc-config lxc.lxcpath`/$LXCID"
    LXCROOTFS="$LXCDIR/rootfs"
    LXCHOOK="$LXCDIR/pre-mount.hook"
    LXCCONF="$BUILD_ROOT/.build.lxc.conf"
    rm -f "$LXCCONF"
    cat $BUILD_DIR/lxc.conf > "$LXCCONF"
    cat >> "$LXCCONF" <<-EOF
	lxc.rootfs = $LXCROOTFS
	lxc.hook.pre-mount = $LXCHOOK
	EOF
    # XXX: do this always instead of leaking the hosts' one?
    echo "rootfs / rootfs rw 0 0" > $BUILD_ROOT/etc/mtab
    lxc-destroy -n "$LXCID" >/dev/null 2>&1 || true
    mkdir -p "$LXCROOTFS"
    cat > "$LXCHOOK" <<-EOF
	#!/bin/sh
	mount --bind "$BUILD_ROOT" "$LXCROOTFS"
	EOF
    chmod a+x "$LXCHOOK"
    case "$(lxc-create --version)" in
        1.0.8|1.1.*)
           lxc-create -n "$LXCID" -f "$LXCCONF" -t none || cleanup_and_exit 1
           lxc-start -n "$LXCID" -F "$vm_init_script"
           ;;
        1.0.*)
           lxc-create -n "$LXCID" -f "$LXCCONF" || cleanup_and_exit 1
           lxc-start -n "$LXCID" "$vm_init_script"
           ;;
    esac
    BUILDSTATUS="$?"
    test "$BUILDSTATUS" != 255 || BUILDSTATUS=3
    cleanup_and_exit "$BUILDSTATUS"
}

vm_kill_lxc() {
    lxc_get_id
    lxc-stop -n "$LXCID" || true
}

vm_fixup_lxc() {
    :
}

vm_attach_root_lxc() {
    :
}

vm_attach_swap_lxc() {
    :
}

vm_detach_root_lxc() {
    :
}

vm_detach_swap_lxc() {
    :
}

vm_cleanup_lxc() {
    if test $$ -ne 1 && test $$ -ne 2 ; then
        lxc_get_id
        lxc-destroy -n "$LXCID"
    fi
}