summaryrefslogtreecommitdiffstats
path: root/recipes-test/virt-test/virt-test-qemu_git.bb
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-test/virt-test/virt-test-qemu_git.bb')
-rw-r--r--recipes-test/virt-test/virt-test-qemu_git.bb118
1 files changed, 118 insertions, 0 deletions
diff --git a/recipes-test/virt-test/virt-test-qemu_git.bb b/recipes-test/virt-test/virt-test-qemu_git.bb
new file mode 100644
index 0000000..40f4e56
--- /dev/null
+++ b/recipes-test/virt-test/virt-test-qemu_git.bb
@@ -0,0 +1,118 @@
1SUMMARY = "Linux Virtualization Tests - qemu tests"
2DESCRIPTION = "Qemu tests for the virt-test test framework"
3HOMEPAGE = "https://github.com/autotest/tp-qemu"
4SECTION = "console/tests"
5LICENSE = "GPLv2"
6LIC_FILES_CHKSUM = "file://LICENSE;md5=575f01e0b7a35e73c8e52ca65fd72bdc"
7
8def if_arch_re(regexp, trueval, falseval, d):
9 import re
10 target_arch = bb.data.getVar('TARGET_ARCH', d, 1)
11 return trueval if re.match(regexp, target_arch) else falseval
12
13RDEPENDS_${PN} = "virt-test iperf ntpdate stress python-netserver \
14 ${@if_arch_re("^(i[3-9]86|x86_64)", "virt-test-qemu-guest-timedrift virt-test-qemu-guest-cpuflags", "", d)} \
15 "
16DEPENDS += "popt"
17
18# Use date of commit pointed to by SRCREV
19PV = "2014.04.16"
20SRCREV = "3e15869b4b838c47ce9ea0d4916e1edb89ccc58e"
21
22SRC_URI = "git://github.com/autotest/tp-qemu \
23 file://qemu-tests-multi-nic-stress.patch \
24 file://qemu-tests-time-drift-config.patch \
25 file://qemu-tests-tsc-sync-build-avoidance.patch \
26 file://qemu-tests-tsc-sync-config.patch \
27 file://qemu-tests-pipetest-config.patch \
28 file://qemu-tests-nx-exploit-config.patch \
29 file://qemu-tests-clock-getres-config.patch \
30 file://qemu-tests-stress-config.patch \
31 file://qemu-tests-virtual-nic-send-buffer-config.patch \
32 file://qemu-tests-cpuflags-migrate-to-provider.patch \
33 file://qemu-tests-cpuflags-build-avoidance.patch \
34 file://qemu-tests-cpuflags-conf.patch \
35 file://qemu-tests-cyclictest.patch \
36 "
37
38S = "${WORKDIR}/git"
39B = "${S}"
40
41DESTDIR = "/opt/virt-test/test-providers.d/downloads/io-github-autotest-qemu"
42
43FILES_${PN} += "${DESTDIR}"
44
45FILES_${PN}-dbg = " \
46 ${DESTDIR}/qemu/deps/timedrift/.debug/* \
47 ${DESTDIR}/qemu/deps/tsc_sync/.debug/* \
48 ${DESTDIR}/qemu/deps/nx/.debug/* \
49 ${DESTDIR}/generic/deps/clock_getres/.debug/clock_getres \
50 ${DESTDIR}/deps/cpu_flags/src/.debug/cpuflags-test-* \
51 "
52
53PACKAGES =+ "${PN}-guest-timedrift ${PN}-guest-tsc-sync ${PN}-guest-nx \
54 ${PN}-guest-clock-getres ${PN}-guest-cpuflags"
55
56DESCRIPTION_${PN}-guest-timedrift= "Clock test application for time drift test case"
57FILES_${PN}-guest-timedrift = "${DESTDIR}/qemu/deps/timedrift/clktest \
58 ${DESTDIR}/qemu/deps/timedrift/get_tsc"
59
60DESCRIPTION_${PN}-guest-tsc-sync = "Clock test application for time warp test case"
61FILES_${PN}-guest-tsc-sync = "${DESTDIR}/qemu/deps/tsc_sync/time-warp-test"
62
63DESCRIPTION_${PN}-guest-nx = "Test application for the NX (no execution) flag"
64FILES_${PN}-guest-nx = "${DESTDIR}/qemu/deps/nx/nx_exploit"
65
66DESCRIPTION_${PN}-guest-clock-getres = "Clock resolution test application"
67FILES_${PN}-guest-clock-getres = "${DESTDIR}/generic/deps/clock_getres/clock_getres"
68
69DESCRIPTION_${PN}-guest-cpuflags = "CPU flag test application"
70FILES_${PN}-guest-cpuflags = "${DESTDIR}/deps/cpu_flags/src/cpuflags-test-*"
71RDEPENDS_${PN}-guest-cpuflags =+ "libgomp"
72
73do_compile_x86() {
74 # guest-timedrift
75 cd ${S}/qemu/deps/timedrift/
76 ${CC} get_tsc.c -o get_tsc
77
78 # guest-tsc-sync
79 cd ${S}/qemu/deps/tsc_sync/
80 ${CC} -I${STAGING_DIR_TARGET}/usr/include -Wall -o time-warp-test time-warp-test.c -lrt
81
82 # guest-nx
83 cd ${S}/qemu/deps/nx/
84 ${CC} -o nx_exploit x64_sc_rdo.c
85
86 # guest-cpuflags
87 # Note: The $GCC_INCLUDEDIR should be searched for include files according to
88 # http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html. However, it seems that
89 # gcc-cross searches in e.g.
90 # .../sysroots/x86_64-linux/usr/lib/corei7-64-enea-linux/gcc/x86_64-enea-linux/4.8.2/include/
91 # instead of
92 # .../sysroots/chiefriver/usr/lib/gcc/x86_64-enea-linux/4.8.2/include,
93 # despite --sysroot= pointing to the latter (.../sysroots/chiefriver).
94 export TARGET=`${CC} -v 2>&1 | grep ^Target | cut -d' ' -f2`
95 export GCC_VERSION=`${CC} -v 2>&1 | grep '^gcc version' | cut -d' ' -f3`
96 export GCC_INCLUDEDIR=$PKG_CONFIG_SYSROOT_DIR$libdir/gcc/$TARGET/$GCC_VERSION/include
97 make -C ${S}/deps/cpu_flags/src/ CFLAGS="-I$GCC_INCLUDEDIR" EXTRA_FLAGS=''
98 make -C ${S}/deps/cpu_flags/src/ CFLAGS="-I$GCC_INCLUDEDIR" EXTRA_FLAGS='-msse3 -msse2'
99 # Avoid .o files in the package
100 rm -rf ${S}/qemu/deps/cpu_flags/src/build-*
101}
102
103do_compile() {
104 # guest-timedrift
105 cd ${S}/qemu/deps/timedrift/
106 ${CC} clktest.c -o clktest -lrt
107
108 # guest-clock-getres
109 make -C ${S}/generic/deps/clock_getres/
110
111 # Architecture-specific applications
112 ${@if_arch_re("^(i[3-9]86|x86_64)", "do_compile_x86", "", d)}
113}
114
115do_install() {
116 install -d ${D}/${DESTDIR}
117 cp -r --preserve=mode,links ${B}/* ${D}/${DESTDIR}
118}