SUMMARY = "Linux Virtualization Tests - qemu tests" DESCRIPTION = "Qemu tests for the virt-test test framework" HOMEPAGE = "https://github.com/autotest/tp-qemu" SECTION = "console/tests" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://LICENSE;md5=575f01e0b7a35e73c8e52ca65fd72bdc" def if_arch_re(regexp, trueval, falseval, d): import re target_arch = bb.data.getVar('TARGET_ARCH', d, 1) return trueval if re.match(regexp, target_arch) else falseval RDEPENDS_${PN} = "virt-test iperf ntpdate stress python-netserver \ ${@if_arch_re("^(i[3-9]86|x86_64)", "virt-test-qemu-guest-timedrift virt-test-qemu-guest-cpuflags", "", d)} \ " DEPENDS += "popt" # Use date of commit pointed to by SRCREV PV = "2014.04.16" SRCREV = "3e15869b4b838c47ce9ea0d4916e1edb89ccc58e" SRC_URI = "git://github.com/autotest/tp-qemu \ file://qemu-tests-multi-nic-stress.patch \ file://qemu-tests-time-drift-config.patch \ file://qemu-tests-tsc-sync-build-avoidance.patch \ file://qemu-tests-tsc-sync-config.patch \ file://qemu-tests-pipetest-config.patch \ file://qemu-tests-nx-exploit-config.patch \ file://qemu-tests-clock-getres-config.patch \ file://qemu-tests-stress-config.patch \ file://qemu-tests-virtual-nic-send-buffer-config.patch \ file://qemu-tests-cpuflags-migrate-to-provider.patch \ file://qemu-tests-cpuflags-build-avoidance.patch \ file://qemu-tests-cpuflags-conf.patch \ file://qemu-tests-cyclictest.patch \ " S = "${WORKDIR}/git" B = "${S}" DESTDIR = "/opt/virt-test/test-providers.d/downloads/io-github-autotest-qemu" FILES_${PN} += "${DESTDIR}" FILES_${PN}-dbg = " \ ${DESTDIR}/qemu/deps/timedrift/.debug/* \ ${DESTDIR}/qemu/deps/tsc_sync/.debug/* \ ${DESTDIR}/qemu/deps/nx/.debug/* \ ${DESTDIR}/generic/deps/clock_getres/.debug/clock_getres \ ${DESTDIR}/deps/cpu_flags/src/.debug/cpuflags-test-* \ " PACKAGES =+ "${PN}-guest-timedrift ${PN}-guest-tsc-sync ${PN}-guest-nx \ ${PN}-guest-clock-getres ${PN}-guest-cpuflags" DESCRIPTION_${PN}-guest-timedrift= "Clock test application for time drift test case" FILES_${PN}-guest-timedrift = "${DESTDIR}/qemu/deps/timedrift/clktest \ ${DESTDIR}/qemu/deps/timedrift/get_tsc" DESCRIPTION_${PN}-guest-tsc-sync = "Clock test application for time warp test case" FILES_${PN}-guest-tsc-sync = "${DESTDIR}/qemu/deps/tsc_sync/time-warp-test" DESCRIPTION_${PN}-guest-nx = "Test application for the NX (no execution) flag" FILES_${PN}-guest-nx = "${DESTDIR}/qemu/deps/nx/nx_exploit" DESCRIPTION_${PN}-guest-clock-getres = "Clock resolution test application" FILES_${PN}-guest-clock-getres = "${DESTDIR}/generic/deps/clock_getres/clock_getres" DESCRIPTION_${PN}-guest-cpuflags = "CPU flag test application" FILES_${PN}-guest-cpuflags = "${DESTDIR}/deps/cpu_flags/src/cpuflags-test-*" RDEPENDS_${PN}-guest-cpuflags =+ "libgomp" do_compile_x86() { # guest-timedrift cd ${S}/qemu/deps/timedrift/ ${CC} get_tsc.c -o get_tsc # guest-tsc-sync cd ${S}/qemu/deps/tsc_sync/ ${CC} -I${STAGING_DIR_TARGET}/usr/include -Wall -o time-warp-test time-warp-test.c -lrt # guest-nx cd ${S}/qemu/deps/nx/ ${CC} -o nx_exploit x64_sc_rdo.c # guest-cpuflags # Note: The $GCC_INCLUDEDIR should be searched for include files according to # http://gcc.gnu.org/onlinedocs/cpp/Search-Path.html. However, it seems that # gcc-cross searches in e.g. # .../sysroots/x86_64-linux/usr/lib/corei7-64-enea-linux/gcc/x86_64-enea-linux/4.8.2/include/ # instead of # .../sysroots/chiefriver/usr/lib/gcc/x86_64-enea-linux/4.8.2/include, # despite --sysroot= pointing to the latter (.../sysroots/chiefriver). export TARGET=`${CC} -v 2>&1 | grep ^Target | cut -d' ' -f2` export GCC_VERSION=`${CC} -v 2>&1 | grep '^gcc version' | cut -d' ' -f3` export GCC_INCLUDEDIR=$PKG_CONFIG_SYSROOT_DIR$libdir/gcc/$TARGET/$GCC_VERSION/include make -C ${S}/deps/cpu_flags/src/ CFLAGS="-I$GCC_INCLUDEDIR" EXTRA_FLAGS='' make -C ${S}/deps/cpu_flags/src/ CFLAGS="-I$GCC_INCLUDEDIR" EXTRA_FLAGS='-msse3 -msse2' # Avoid .o files in the package rm -rf ${S}/qemu/deps/cpu_flags/src/build-* } do_compile() { # guest-timedrift cd ${S}/qemu/deps/timedrift/ ${CC} clktest.c -o clktest -lrt # guest-clock-getres make -C ${S}/generic/deps/clock_getres/ # Architecture-specific applications ${@if_arch_re("^(i[3-9]86|x86_64)", "do_compile_x86", "", d)} } do_install() { install -d ${D}/${DESTDIR} cp -r --preserve=mode,links ${B}/* ${D}/${DESTDIR} }