backport open-vm-tools recipe 63/10163/4
authorMartin Kelly <mkelly@xevo.com>
Tue, 11 Jul 2017 18:49:34 +0000 (11:49 -0700)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Mon, 17 Jul 2017 13:41:03 +0000 (13:41 +0000)
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>
meta-agl-bsp/recipes-support/open-vm-tools/files/tools.conf [new file with mode: 0644]
meta-agl-bsp/recipes-support/open-vm-tools/files/vmtoolsd.service [new file with mode: 0644]
meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools/0001-configure.ac-don-t-use-dnet-config.patch [new file with mode: 0644]
meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools/0002-add-include-sys-sysmacros.h.patch [new file with mode: 0644]
meta-agl-bsp/recipes-support/open-vm-tools/open-vm-tools_10.1.5.bb [new file with mode: 0644]
templates/base/bblayers.conf.sample

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 (file)
index 0000000..f6cae70
--- /dev/null
@@ -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 (file)
index 0000000..d30e380
--- /dev/null
@@ -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 (file)
index 0000000..e9cb873
--- /dev/null
@@ -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 (file)
index 0000000..f905601
--- /dev/null
@@ -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 (file)
index 0000000..65fbfc9
--- /dev/null
@@ -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
+}
index 478523b..6bccb79 100644 (file)
@@ -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 \
   "
 
 ####################