summaryrefslogtreecommitdiff
path: root/package/openvmtools
diff options
context:
space:
mode:
authorKaroly Kasza <kaszak@gmail.com>2014-09-02 18:13:36 +0200
committerPeter Korsgaard <peter@korsgaard.com>2014-09-13 23:50:13 +0200
commit4288da4bb0f678829e7d24392831f086e5f22582 (patch)
treef8a88404bf194421df213ae4fa8cf4f2f4df3794 /package/openvmtools
parent1c102abb56a5396c9822bb630b6d1a31f0751548 (diff)
openvmtools: new package
New package: openvmtools [Peter: add patch to fix compilation against modern glib versions] Signed-off-by: Karoly Kasza <kaszak@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Diffstat (limited to 'package/openvmtools')
-rw-r--r--package/openvmtools/Config.in61
-rw-r--r--package/openvmtools/S10vmtoolsd33
-rw-r--r--package/openvmtools/openvmtools-01-has_bsd_printf.patch26
-rw-r--r--package/openvmtools/openvmtools-02-network_script.patch21
-rw-r--r--package/openvmtools/openvmtools-03-conditionally-define-g_info.patch28
-rw-r--r--package/openvmtools/openvmtools.mk79
-rw-r--r--package/openvmtools/shutdown7
-rw-r--r--package/openvmtools/vmtoolsd.service14
8 files changed, 269 insertions, 0 deletions
diff --git a/package/openvmtools/Config.in b/package/openvmtools/Config.in
new file mode 100644
index 000000000..319b653e0
--- /dev/null
+++ b/package/openvmtools/Config.in
@@ -0,0 +1,61 @@
+config BR2_PACKAGE_OPENVMTOOLS
+ bool "openvmtools"
+ depends on BR2_i386 || BR2_x86_64
+ depends on BR2_USE_MMU # libglib2
+ depends on BR2_USE_WCHAR # libglib2
+ depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
+ depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ depends on BR2_LARGEFILE
+ depends on BR2_ENABLE_LOCALE
+ select BR2_PACKAGE_LIBGLIB2
+ help
+ Open Virtual Machine Tools for VMware guest OS
+
+ http://open-vm-tools.sourceforge.net/
+
+ ICU locales and X11 tools are currently not supported.
+
+ NOTE: Support for vmblock-fuse will be enabled in openvmtools if the
+ libfuse package is selected.
+
+if BR2_PACKAGE_OPENVMTOOLS
+
+config BR2_PACKAGE_OPENVMTOOLS_PROCPS
+ bool "procps support"
+ depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
+ select BR2_PACKAGE_PROCPS_NG
+ help
+ Enable support for procps / meminfo
+
+comment "procps support needs BR2_PACKAGE_BUSYBOX_SHOW_OTHERS"
+ depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
+
+config BR2_PACKAGE_OPENVMTOOLS_DNET
+ bool "dnet support"
+ depends on BR2_INET_IPV6
+ select BR2_PACKAGE_LIBDNET
+ help
+ Enable support for libdnet / nicinfo
+
+comment "dnet support needs a toolchain w/ IPv6"
+ depends on !BR2_INET_IPV6
+
+config BR2_PACKAGE_OPENVMTOOLS_PAM
+ bool "PAM support"
+ select BR2_PACKAGE_LINUX_PAM
+ # linux-pam needs locale and wchar, but we already have this
+ # dependency on the main symbol, above.
+ depends on !BR2_PREFER_STATIC_LIB
+ help
+ Support for PAM in openvmtools
+
+comment "PAM support needs a toolchain w/ dynamic library"
+ depends on BR2_PREFER_STATIC_LIB
+
+endif
+
+comment "openvmtools needs a toolchain w/ wchar, threads, RPC, largefile, locale"
+ depends on BR2_i386 || BR2_x86_64
+ depends on BR2_USE_MMU
+ depends on !BR2_USE_WCHAR ||!BR2_TOOLCHAIN_HAS_THREADS || \
+ !BR2_TOOLCHAIN_HAS_NATIVE_RPC || !BR2_LARGEFILE || !BR2_ENABLE_LOCALE
diff --git a/package/openvmtools/S10vmtoolsd b/package/openvmtools/S10vmtoolsd
new file mode 100644
index 000000000..969ba930f
--- /dev/null
+++ b/package/openvmtools/S10vmtoolsd
@@ -0,0 +1,33 @@
+#!/bin/sh
+#
+# Starts vmtoolsd for openvmtools
+#
+
+EXEC="/usr/bin/vmtoolsd"
+ARGS="-b"
+PID="/var/run/vmtoolsd.pid"
+
+case "$1" in
+ start)
+ echo -n "Starting vmtoolsd: "
+ start-stop-daemon -S -q -x $EXEC -- $ARGS $PID
+ if [ $? != 0 ]; then
+ echo "FAILED"
+ exit 1
+ else
+ echo "OK"
+ fi
+ ;;
+ stop)
+ echo -n "Stopping vmtoolsd: "
+ start-stop-daemon -K -q -p $PID
+ echo "OK"
+ ;;
+ restart|reload)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart}"
+ exit 1
+esac
diff --git a/package/openvmtools/openvmtools-01-has_bsd_printf.patch b/package/openvmtools/openvmtools-01-has_bsd_printf.patch
new file mode 100644
index 000000000..889f7d1d2
--- /dev/null
+++ b/package/openvmtools/openvmtools-01-has_bsd_printf.patch
@@ -0,0 +1,26 @@
+lib/misc/msgList.c: missing #ifdef
+
+This macro checks for BSD style printf(), which is not present
+when compiling for uClibc. The linked functions are unnecessary in
+this case, and they break compilation.
+
+Signed-off-by: Karoly Kasza <kaszak@gmail.com>
+
+--- open-vm-tools-9.4.6-1770165.orig/lib/misc/msgList.c 2014-07-02 00:21:14.000000000 +0200
++++ open-vm-tools-9.4.6-1770165/lib/misc/msgList.c 2014-07-29 13:40:40.000000000 +0200
+@@ -487,6 +487,7 @@
+ return messages->id;
+ }
+
++#ifdef HAS_BSD_PRINTF
+
+ /*
+ *----------------------------------------------------------------------
+@@ -566,6 +567,7 @@
+ }
+ }
+
++#endif
+
+ /*
+ *----------------------------------------------------------------------
diff --git a/package/openvmtools/openvmtools-02-network_script.patch b/package/openvmtools/openvmtools-02-network_script.patch
new file mode 100644
index 000000000..67705cc53
--- /dev/null
+++ b/package/openvmtools/openvmtools-02-network_script.patch
@@ -0,0 +1,21 @@
+scripts/linux/network: exit normally if no network control script
+
+When using suspend/resume from the hypervisor, openvmtools checks for the
+networking script, and exists with an error if not found, making the hypervisor
+raise a warning message. This workaround silences that error message.
+
+Signed-off-by: Karoly Kasza <kaszak@gmail.com>
+
+--- open-vm-tools-9.4.6-1770165.orig/scripts/linux/network 2014-07-02 00:21:14.000000000 +0200
++++ open-vm-tools-9.4.6-1770165/scripts/linux/network 2014-08-07 16:34:21.963514273 +0200
+@@ -88,7 +88,9 @@
+ run_network_script()
+ {
+ script=`find_networking_script`
+- [ "$script" != "error" ] || Panic "Cannot find system networking script."
++# [ "$script" != "error" ] || Panic "Cannot find system networking script."
++# Modified for buildroot
++ [ "$script" != "error" ] || exit 0
+
+ # Using SysV "service" if it exists, otherwise fall back to run the script directly
+ service=`which service 2>/dev/null`
diff --git a/package/openvmtools/openvmtools-03-conditionally-define-g_info.patch b/package/openvmtools/openvmtools-03-conditionally-define-g_info.patch
new file mode 100644
index 000000000..fa35f2935
--- /dev/null
+++ b/package/openvmtools/openvmtools-03-conditionally-define-g_info.patch
@@ -0,0 +1,28 @@
+conditionally define g_info
+
+glib also defines a g_info macro since 2.39.2, conflicting with the one in
+openvmtools:
+
+https://git.gnome.org/browse/glib/commit/?h=glib-2-40&id=36f1a4ce7ed6df6aa8
+
+Patch from Fedora:
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1063847
+http://pkgs.fedoraproject.org/cgit/open-vm-tools.git/tree/g_info_redefine.patch
+
+Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
+
+diff -uNr open-vm-tools-9.4.0-1280544.orig/lib/include/vmware/tools/log.h open-vm-tools-9.4.0-1280544/lib/include/vmware/tools/log.h
+--- open-vm-tools-9.4.0-1280544.orig/lib/include/vmware/tools/log.h 2013-09-23 19:51:10.000000000 +0400
++++ open-vm-tools-9.4.0-1280544/lib/include/vmware/tools/log.h 2014-02-18 10:56:50.368604176 +0400
+@@ -134,7 +134,9 @@
+ *******************************************************************************
+ */
+
+-#define g_info(fmt, ...) g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, fmt, ## __VA_ARGS__)
++#if !defined(g_info)
++# define g_info(fmt, ...) g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, fmt, ## __VA_ARGS__)
++#endif
+
+
+ /*
diff --git a/package/openvmtools/openvmtools.mk b/package/openvmtools/openvmtools.mk
new file mode 100644
index 000000000..6361d6b58
--- /dev/null
+++ b/package/openvmtools/openvmtools.mk
@@ -0,0 +1,79 @@
+################################################################################
+#
+# openvmtools
+#
+################################################################################
+
+OPENVMTOOLS_VERSION = 9.4.6-1770165
+OPENVMTOOLS_SOURCE = open-vm-tools-$(OPENVMTOOLS_VERSION).tar.gz
+OPENVMTOOLS_SITE = http://downloads.sourceforge.net/project/open-vm-tools/open-vm-tools/stable-9.4.x
+OPENVMTOOLS_LICENSE = LGPLv2.1
+OPENVMTOOLS_LICENSE_FILES = COPYING
+# Autoreconf needed because package is distributed without a configure script
+# See http://sourceforge.net/p/open-vm-tools/mailman/message/32550385/
+OPENVMTOOLS_AUTORECONF = YES
+OPENVMTOOLS_CONF_OPT = --without-icu --without-x --without-gtk2 --without-gtkmm --without-kernel-modules
+# -Wno-deprecated-declarations is a workaround for a bug in open-vm-tools
+# See http://sourceforge.net/p/open-vm-tools/mailman/message/31473171/
+OPENVMTOOLS_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -Wno-deprecated-declarations"
+
+OPENVMTOOLS_DEPENDENCIES = libglib2
+
+# When libfuse is available, openvmtools can build vmblock-fuse, so
+# make sure that libfuse gets built first
+ifeq ($(BR2_PACKAGE_LIBFUSE),y)
+OPENVMTOOLS_DEPENDENCIES += libfuse
+endif
+
+ifeq ($(BR2_PACKAGE_OPENVMTOOLS_PROCPS),y)
+OPENVMTOOLS_CONF_ENV += CUSTOM_PROCPS_NAME=procps
+OPENVMTOOLS_CONF_OPT += --with-procps
+OPENVMTOOLS_DEPENDENCIES += procps-ng
+else
+OPENVMTOOLS_CONF_OPT += --without-procps
+endif
+
+ifeq ($(BR2_PACKAGE_OPENVMTOOLS_DNET),y)
+# Needed because if it is defined configure will
+# use a different method to check for dnet
+OPENVMTOOLS_CONF_ENV += CUSTOM_DNET_CPPFLAGS=" "
+OPENVMTOOLS_CONF_OPT += --with-dnet
+OPENVMTOOLS_DEPENDENCIES += libdnet
+else
+OPENVMTOOLS_CONF_OPT += --without-dnet
+endif
+
+ifeq ($(BR2_PACKAGE_OPENVMTOOLS_PAM),y)
+OPENVMTOOLS_CONF_OPT += --with-pam
+OPENVMTOOLS_MAKE_OPT += CFLAGS+="-Wno-unused-local-typedefs"
+OPENVMTOOLS_DEPENDENCIES += linux-pam
+else
+OPENVMTOOLS_CONF_OPT += --without-pam
+endif
+
+# symlink needed by lib/system/systemLinux.c (or will cry in /var/log/messages)
+# /sbin/shutdown needed for Guest OS restart/shutdown from hypervisor
+define OPENVMTOOLS_POST_INSTALL_TARGET_THINGIES
+ ln -fs os-release $(TARGET_DIR)/etc/lfs-release
+ if [ ! -e $(TARGET_DIR)/sbin/shutdown ]; then \
+ $(INSTALL) -D -m 755 package/openvmtools/shutdown \
+ $(TARGET_DIR)/sbin/shutdown; \
+ fi
+endef
+
+OPENVMTOOLS_POST_INSTALL_TARGET_HOOKS += OPENVMTOOLS_POST_INSTALL_TARGET_THINGIES
+
+define OPENVMTOOLS_INSTALL_INIT_SYSV
+ $(INSTALL) -D -m 755 package/openvmtools/S10vmtoolsd \
+ $(TARGET_DIR)/etc/init.d/S10vmtoolsd
+endef
+
+define OPENVMTOOLS_INSTALL_INIT_SYSTEMD
+ $(INSTALL) -D -m 644 package/openvmtools/vmtoolsd.service \
+ $(TARGET_DIR)/etc/systemd/system/vmtoolsd.service
+ mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants
+ ln -fs ../vmtoolsd.service \
+ $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/vmtoolsd.service
+endef
+
+$(eval $(autotools-package))
diff --git a/package/openvmtools/shutdown b/package/openvmtools/shutdown
new file mode 100644
index 000000000..bca9765a3
--- /dev/null
+++ b/package/openvmtools/shutdown
@@ -0,0 +1,7 @@
+#!/bin/sh
+#compatibility script for openvmtools
+if [ "$1" == "-r" ]; then
+/sbin/reboot
+else
+/sbin/poweroff
+fi
diff --git a/package/openvmtools/vmtoolsd.service b/package/openvmtools/vmtoolsd.service
new file mode 100644
index 000000000..17a4df44c
--- /dev/null
+++ b/package/openvmtools/vmtoolsd.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=vmtoolsd for openvmtools
+After=syslog.target network.target
+
+[Service]
+Type=forking
+PIDFile=/var/run/vmtoolsd.pid
+ExecStart=/usr/bin/vmtoolsd -b /var/run/vmtoolsd.pid
+Restart=on-failure
+KillMode=process
+KillSignal=SIGKILL
+
+[Install]
+WantedBy=multi-user.target