forked from openSUSE/obs-build
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build-vm-lxc
100 lines (89 loc) · 2.41 KB
/
build-vm-lxc
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
#
# 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
}