aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Kelly <mkelly@xevo.com>2017-07-11 11:49:34 -0700
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2017-07-17 13:41:03 +0000
commit31716c2d8f8d07e34aa48528bc0b123b1c70d351 (patch)
tree4c9820b94e91e9d291d940a413ebaaa00c99b9ae
parent6778887bf0059ca3f9fcbdcbb96c77797aff71e0 (diff)
backport open-vm-tools recipe
Without open-vm-tools, VMWare guests are very slow. open-vm-tools was recently added to meta-openembedded, so we should get it when Rocko is released. Until then, this patch backports it. Note that open-vm-tools has an optional dependency on fuse, so we need to include the meta-filesystems layer too. Bug-AGL: SPEC-739 Change-Id: Icc5bf7f10b8e21778ab7043dea8d340eb41a527c Signed-off-by: Martin Kelly <mkelly@xevo.com> Reviewed-on: https://gerrit.automotivelinux.org/gerrit/10163 Reviewed-by: Changhyeok Bae <changhyeok.bae@gmail.com> Tested-by: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> ci-image-build: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> ci-image-boot-test: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
-rw-r--r--meta-agl-bsp/recipes-support/open-vm-tools/files/tools.conf2
-rw-r--r--meta-agl-bsp/recipes-support/open-vm-tools/files/vmtoolsd.service11
-rw-r--r--meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch41
-rw-r--r--meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools/0002-add-include-sys-sysmacros.h.patch33
-rw-r--r--meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools_10.1.5.bb84
-rw-r--r--templates/base/bblayers.conf.sample1
6 files changed, 172 insertions, 0 deletions
diff --git a/meta-agl-bsp/recipes-support/open-vm-tools/files/tools.conf b/meta-agl-bsp/recipes-support/open-vm-tools/files/tools.conf
new file mode 100644
index 000000000..f6cae70cc
--- /dev/null
+++ b/meta-agl-bsp/recipes-support/open-vm-tools/files/tools.conf
@@ -0,0 +1,2 @@
+[guestinfo]
+disable-perf-mon=1
diff --git a/meta-agl-bsp/recipes-support/open-vm-tools/files/vmtoolsd.service b/meta-agl-bsp/recipes-support/open-vm-tools/files/vmtoolsd.service
new file mode 100644
index 000000000..d30e38055
--- /dev/null
+++ b/meta-agl-bsp/recipes-support/open-vm-tools/files/vmtoolsd.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Open Virtual Machine Tools (VMware Tools)
+ConditionVirtualization=vmware
+
+[Service]
+ExecStart=/usr/bin/vmtoolsd
+Restart=on-failure
+KillSignal=SIGKILL
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch b/meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch
new file mode 100644
index 000000000..e9cb873f1
--- /dev/null
+++ b/meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch
@@ -0,0 +1,41 @@
+From 929150608c16644695f19cd2e0cc8a06a41cd497 Mon Sep 17 00:00:00 2001
+From: Martin Kelly <mkelly@xevo.com>
+Date: Fri, 7 Apr 2017 15:20:30 -0700
+Subject: [PATCH] configure.ac: don't use dnet-config
+
+The dnet-config tool doesn't know about cross-compilation, so it injects
+-I/usr/include into the path, causing compiler errors. So instead find dnet via
+-ldnet.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Martin Kelly <mkelly@xevo.com>
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 3400b86..7d6119e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -942,7 +942,7 @@ if test "$with_dnet" = "yes"; then
+ AC_VMW_CHECK_LIB([dnet],
+ [DNET],
+ [],
+- [dnet-config],
++ [],
+ [],
+ [dnet.h],
+ [intf_open],
+@@ -952,7 +952,7 @@ if test "$with_dnet" = "yes"; then
+
+ if test $have_dnet = "no"; then
+ AC_MSG_ERROR(
+- [dnet-config was not found on your PATH. Please configure without dnet (using --without-dnet) or install dnet - http://libdnet.sourceforge.net])
++ [dnet was not found. Please configure without dnet (using --without-dnet) or install dnet - http://libdnet.sourceforge.net])
+ fi
+ fi
+
+--
+2.1.4
+
diff --git a/meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools/0002-add-include-sys-sysmacros.h.patch b/meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools/0002-add-include-sys-sysmacros.h.patch
new file mode 100644
index 000000000..f905601d5
--- /dev/null
+++ b/meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools/0002-add-include-sys-sysmacros.h.patch
@@ -0,0 +1,33 @@
+From 5818acc8032e3247257730376e947330340a07b3 Mon Sep 17 00:00:00 2001
+From: Martin Kelly <mkelly@xevo.com>
+Date: Mon, 22 May 2017 17:00:05 -0700
+Subject: [PATCH 2/2] add #include <sys/sysmacros.h>
+
+In newer glibc versions, the definition for major() has been moved to
+sys/sysmacros.h, and using the older version in <sys/types.h> has been
+deprecated. So, add an include for <sys/sysmacros.h>.
+
+Upstream-Status: Pending
+
+Signed-off-by: Martin Kelly <mkelly@xevo.com>
+---
+ lib/wiper/wiperPosix.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/open-vm-tools/lib/wiper/wiperPosix.c b/open-vm-tools/lib/wiper/wiperPosix.c
+index d389eee..1f221fc 100644
+--- a/lib/wiper/wiperPosix.c
++++ b/lib/wiper/wiperPosix.c
+@@ -40,6 +40,9 @@
+ # include <libgen.h>
+ # endif /* __FreeBSD_version >= 500000 */
+ #endif
++#if defined(__linux__)
++#include <sys/sysmacros.h>
++#endif
+ #include <unistd.h>
+
+ #include "vmware.h"
+--
+2.7.4
+
diff --git a/meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools_10.1.5.bb b/meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools_10.1.5.bb
new file mode 100644
index 000000000..65fbfc9e9
--- /dev/null
+++ b/meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools_10.1.5.bb
@@ -0,0 +1,84 @@
+# This recipe is modified from the recipe originally found in the Open-Switch
+# repository:
+#
+# https://github.com/open-switch/ops-build
+# yocto/openswitch/meta-foss-openswitch/meta-oe/recipes-support/open-vm-tools/open-vm-tools_10.0.5.bb
+# Commit 9008de2d8e100f3f868c66765742bca9fa98f3f9
+#
+# The recipe packaging has been relicensed under the MIT license for inclusion
+# in meta-openembedded by agreement of the author (Diego Dompe).
+#
+
+SUMMARY = "Tools to enhance VMWare guest integration and performance"
+HOMEPAGE = "https://github.com/vmware/open-vm-tools"
+SECTION = "vmware-tools"
+
+LICENSE = "LGPLv2.1 & GPLv2 & BSD & CDDLv1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b66ba4cb4fc017682c95efc300410e79"
+LICENSE_modules/freebsd/vmblock = "BSD"
+LICENSE_modules/freebsd/vmmemctl = "GPLv2"
+LICENSE_modules/freebsd/vmxnet = "GPLv2"
+LICENSE_modules/linux = "GPLv2"
+LICENSE_modules/solaris = "CDDLv1"
+
+SRC_URI = "git://github.com/vmware/open-vm-tools.git;protocol=https \
+ file://tools.conf \
+ file://vmtoolsd.service \
+ file://0001-configure.ac-don-t-use-dnet-config.patch \
+ file://0002-add-include-sys-sysmacros.h.patch \
+ "
+
+SRCREV = "854c0bb374612f7e633b448ca273f970f154458b"
+
+S = "${WORKDIR}/git/open-vm-tools"
+
+DEPENDS = "glib-2.0 glib-2.0-native util-linux libdnet procps"
+
+# open-vm-tools is supported only on x86.
+COMPATIBLE_HOST = '(x86_64.*|i.86.*)-linux'
+
+inherit autotools pkgconfig systemd
+
+SYSTEMD_SERVICE_${PN} = "vmtoolsd.service"
+
+EXTRA_OECONF = "--without-icu --disable-multimon --disable-docs \
+ --disable-tests --without-gtkmm --without-xerces --without-pam \
+ --disable-grabbitmqproxy --disable-vgauth --disable-deploypkg \
+ --without-root-privileges --without-kernel-modules"
+
+NO_X11_FLAGS = "--without-x --without-gtk2 --without-gtk3"
+X11_DEPENDS = "libxext libxi libxrender libxrandr libxtst gtk+ gdk-pixbuf"
+PACKAGECONFIG[x11] = ",${NO_X11_FLAGS},${X11_DEPENDS}"
+
+# fuse gets implicitly detected; there is no --without-fuse option.
+PACKAGECONFIG[fuse] = ",,fuse"
+
+FILES_${PN} += "\
+ ${libdir}/open-vm-tools/plugins/vmsvc/lib*.so \
+ ${libdir}/open-vm-tools/plugins/common/lib*.so \
+ ${sysconfdir}/vmware-tools/tools.conf \
+ "
+FILES_${PN}-locale += "${datadir}/open-vm-tools/messages"
+FILES_${PN}-dev += "${libdir}/open-vm-tools/plugins/common/lib*.la"
+FILES_${PN}-dbg += "\
+ ${libdir}/open-vm-tools/plugins/common/.debug \
+ ${libdir}/open-vm-tools/plugins/vmsvc/.debug \
+ "
+
+CONFFILES_${PN} += "${sysconfdir}/vmware-tools/tools.conf"
+
+RDEPENDS_${PN} = "util-linux libdnet fuse"
+
+do_install_append() {
+ ln -sf ${sbindir}/mount.vmhgfs ${D}/sbin/mount.vmhgfs
+ install -d ${D}${systemd_unitdir}/system ${D}${sysconfdir}/vmware-tools
+ install -m 644 ${WORKDIR}/*.service ${D}${systemd_unitdir}/system
+ install -m 0644 ${WORKDIR}/tools.conf ${D}${sysconfdir}/vmware-tools/tools.conf
+}
+
+do_configure_prepend() {
+ export CUSTOM_PROCPS_NAME=procps
+ export CUSTOM_PROCPS_LIBS=-L${STAGING_LIBDIR}/libprocps.so
+ export CUSTOM_DNET_NAME=dnet
+ export CUSTOM_DNET_LIBS=-L${STAGING_LIBDIR}/libdnet.so
+}
diff --git a/templates/base/bblayers.conf.sample b/templates/base/bblayers.conf.sample
index 478523b0d..6bccb7932 100644
--- a/templates/base/bblayers.conf.sample
+++ b/templates/base/bblayers.conf.sample
@@ -38,6 +38,7 @@ AGL_CORE_DEPENDENCY_LAYERS = " \
${METADIR}/meta-openembedded/meta-efl \
${METADIR}/meta-openembedded/meta-networking \
${METADIR}/meta-openembedded/meta-python \
+ ${METADIR}/meta-openembedded/meta-filesystems \
"
####################