-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdataset-built.do
65 lines (54 loc) · 1.52 KB
/
dataset-built.do
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
#!/bin/bash -x
redo-ifchange config.sh qemu-built || exit 1
exec >&2
set -o xtrace
. ./config.sh
PARENT=$(zfs list -H -o name | grep 'data$')
FILESYSTEM=${PARENT}/zone_dataset
zfs create ${FILESYSTEM}
ZONEDIR=$(zfs list -H -o mountpoint ${FILESYSTEM})
UUID=$(uuid)
#
# clean the old one
#
rm -fr ${ZONEDIR}
#
# Initial setup
#
mkdir ${ZONEDIR}
chmod 700 ${ZONEDIR}
mkdir ${ZONEDIR}/root
( cd qemu.source && gmake DESTDIR="${ZONEDIR}/root" install ; ) || exit 1
#
# Now figure out the libs we need to copy...
#
LIBS=$(ldd qemu.source/x86_64-softmmu/qemu-system-x86_64 | grep "=>" | awk '{ print $3 }')
for LIB in $LIBS; do
ISOPT=$(echo "${LIB}" | egrep -e "^/opt/")
if test -n "$ISOPT"; then
echo "Copying ${LIB}"
rsync -LR ${LIB} ${ZONEDIR}/root/ || exit 1
fi
done
pwd >&2
cp startvm.zone ${ZONEDIR}/root/ || exit 1
chmod +x ${ZONEDIR}/root/startvm.zone
cp usbredir.cfg ${ZONEDIR}/root/${PREFIX}/etc/qemu/ || exit 1
zfs destroy ${FILESYSTEM}@final
zfs snapshot ${FILESYSTEM}@final
mkdir -p ${UUID}
FILENAME=${UUID}/${QEMU_VERSION}-$VERSION.zfs.bz2
zfs send ${FILESYSTEM}@final | pbzip2 > ${FILENAME}
DATE=$(date +%FT%H:%M:%S.0Z)
SIZE=$(ls -l ${FILENAME} | awk '{ print $5 }')
SHA=$(sha1sum ${FILENAME} | awk '{ print $1 }')
SPICEVER=$(pkgin ls | grep libspice | sed 's|.*-\([0-9.]*\).*|\1|')
sed "
s|VERSION|$VERSION|;
s|SPICEVER|$SPICEVER|;
s|NAME|${QEMU_VERSION}|;
s|DATE|${DATE}|;
s|UUID|${UUID}|;
s|SIZE|$SIZE|;
s|SHA|${SHA}|;" manifest.json.template > ${FILENAME}.manifest
echo "Dataset has been placed in $(pwd)/${UUID}"