app-emulation/open-vm-tools: bump to 9.10.0

This commit is contained in:
Alex Crawford 2015-04-17 17:03:40 -07:00
parent a95ebfaef7
commit 9deb14623a
6 changed files with 2 additions and 639 deletions

View File

@ -1,53 +0,0 @@
From aa50490f8dcb3111f49035bd8ed85bf47f304f31 Mon Sep 17 00:00:00 2001
From: Michael Marineau <mike@marineau.org>
Date: Sun, 30 Mar 2014 20:28:05 -0700
Subject: [PATCH 1/3] configure: Add options for fuse and hgfs
---
configure.ac | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/configure.ac b/configure.ac
index 549736f..4964364 100644
--- a/configure.ac
+++ b/configure.ac
@@ -355,6 +355,13 @@ fi
#
# Check for fuse.
#
+AC_ARG_WITH([fuse],
+ [AS_HELP_STRING([--without-fuse],
+ [compiles without fuse support.])],
+ [],
+ [with_fuse=yes])
+
+if test "$with_fuse" = "yes"; then
AC_VMW_CHECK_LIB([fuse],
[FUSE],
[fuse],
@@ -365,6 +372,7 @@ AC_VMW_CHECK_LIB([fuse],
[have_fuse=yes],
[have_fuse=no;
AC_MSG_WARN([Fuse is missing, vmblock-fuse will be disabled.])])
+fi
#
# Check for PAM.
@@ -1013,6 +1021,14 @@ if test "$os" = "solaris"; then
fi
fi
+if test "$buildHgfsmounter" = "yes"; then
+ AC_ARG_ENABLE([hgfs-mounter],
+ [AS_HELP_STRING([--disable-hgfs-mounter],
+ [disables mount.vmhgfs])],
+ [buildHgfsmounter="$enableval"],
+ [])
+fi
+
AM_CONDITIONAL(BUILD_HGFSMOUNTER, test "$buildHgfsmounter" = "yes")
AM_CONDITIONAL(LINUX, test "$os" = "linux")
AM_CONDITIONAL(SOLARIS, test "$os" = "solaris")
--
2.0.4

View File

@ -1,25 +0,0 @@
From 64566ff351ec73693b6d9ce498fc94529ea0aca8 Mon Sep 17 00:00:00 2001
From: Alex Crawford <alex.crawford@coreos.com>
Date: Fri, 19 Sep 2014 14:52:35 -0700
Subject: [PATCH 2/3] configure: Fix USE_SLASH_PROC conditional
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 4964364..8cd990d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1048,7 +1048,7 @@ AM_CONDITIONAL(HAVE_FUSE, test "$have_fuse" = "yes")
AM_CONDITIONAL(HAVE_GNU_LD, test "$with_gnu_ld" = "yes")
AM_CONDITIONAL(HAVE_GTKMM, test "$have_x" = "yes" -a "$with_gtkmm" = "yes")
AM_CONDITIONAL(HAVE_PAM, test "$with_pam" = "yes")
-AM_CONDITIONAL(USE_SLASH_PROC, test "os" = "linux" -a "$have_glib_2_14" = "yes")
+AM_CONDITIONAL(USE_SLASH_PROC, test "$os" = "linux" -a "$have_glib_2_14" = "yes")
AM_CONDITIONAL(USE_PRINTF_WRAPPERS, test "$bsdPrintfWrappers" = "yes")
if test "$have_xsm" != "yes"; then
--
2.0.4

View File

@ -1,477 +0,0 @@
diff --git a/open-vm-tools/scripts/linux/network b/open-vm-tools/scripts/linux/network
index af3bc9c..621e4b4 100644
--- a/open-vm-tools/scripts/linux/network
+++ b/open-vm-tools/scripts/linux/network
@@ -21,9 +21,9 @@
#
# network (Linux)
#
-# Using a combination of a system networking script, ifconfig, and ifup,
-# attempt to release and renew DHCP leases upon receipt of suspend and resume
-# events, respectively.
+# Using a combination of a system networking script, ifconfig, ifup, ifdown
+# and the ip command, attempt to release and renew DHCP leases upon receipt
+# of suspend and resume events, respectively.
#
@@ -79,25 +79,233 @@ find_networking_script() {
#
-# run_network_script --
+# exec_networking_script --
#
-# Finds out how to run the system's script used to control networking, and
-# runs it with the given argument (which should be one of the usual SysV
-# init script arguments).
+# Execute the networking script to bring network interfaces up or down
+# based on the given input action argument.
#
-run_network_script()
+
+exec_networking_script()
{
- script=`find_networking_script`
- [ "$script" != "error" ] || Panic "Cannot find system networking script."
+ local script=$1
+ local action=$2
- # Using SysV "service" if it exists, otherwise fall back to run the script directly
+ # Using SysV "service" if it exists, otherwise fall back to run the
+ # script directly
service=`which service 2>/dev/null`
if [ $? = 0 -a -n "$service" ]; then
serviceName=`basename "$script"`
- "$service" "$serviceName" "$1"
+ "$service" "$serviceName" "$action"
else
- "$script" "$1"
+ "$script" "$action"
fi
+
+ return $?
+}
+
+
+#
+# exec_systemctl_service --
+#
+# Handle linux distributions that use systemd to replace the legacy
+# system V startup scripts. The previous network script searching
+# approach is no longer viable in these systems. Invoke the systemctl
+# command to control the network service instead.
+#
+
+exec_systemctl_service()
+{
+ local rc=1
+ local action=$1
+ local ctlcmd=$(which systemctl 2>/dev/null)
+ local service
+
+ [ -z "$ctlcmd" ] && return $rc
+
+ for svc in systemd-networkd network; do
+ if ! $ctlcmd status $svc | grep -iq 'not-found'; then
+ service=$svc && break
+ fi
+ done
+
+ [ -z "$service" ] && return $rc
+
+ $ctlcmd $action $service; rc=$?
+
+ # When use the systemd-networkd service to shut down interfaces, interface
+ # address and state remain unchanged. Need to use ip command to change its
+ # address and state.
+ if [ $rc = 0 -a $service = 'systemd-networkd' -a $action = 'stop' ]; then
+ config_network_intfs $action; rc=$?
+ fi
+
+ return $rc
+}
+
+
+#
+# del_intf_ip --
+#
+# Use the ip command to remove all the addresses of an interface.
+#
+
+del_intf_ip()
+{
+ local nic=$1
+
+ $ip_cmd addr flush dev $nic
+ return $?
+}
+
+
+#
+# ip_intf_ops --
+#
+# Use the ip command to change the state of an interface to up or down.
+#
+
+ip_intf_ops()
+{
+ local rc=1
+ local nic=$1
+ local ops=$2
+
+ [ -z "$ip_cmd" ] && return $rc
+
+ $ip_cmd link set $nic $ops; rc=$?
+
+ # Remove interface addresses when taking an interface down.
+ if [ $rc = 0 -a $ops = down ]; then
+ del_intf_ip $nic; rc=$?
+ fi
+
+ return $rc
+}
+
+
+#
+# intf_ops --
+#
+# Execute the specified command (ifup or ifdown) if available, otherwise use
+# the ip command as fallback. If ifup or ifdown fails, run the ip command to
+# retry the intended operation.
+#
+
+intf_ops()
+{
+ local rc=0
+ local cmd=$1
+ local ops=$2
+ local nic=$3
+ local tmp
+
+ if [ ! -z "$cmd" ]; then
+ tmp=$($cmd $nic 2>&1); rc=$?
+
+ # Some systems still return a successful status even the command fails
+ # because the interface is not configured in the configuration file. So
+ # have to examine the command output to determine the actual status.
+ if [ $rc = 0 ]; then
+ echo $tmp | egrep -iq 'not configured|ignoring unknown' && rc=1
+ fi
+ fi
+
+ # If ifup/ifdown fails, try the ip fallback.
+ if [ -z "$cmd" -o $rc != 0 ]; then
+ ip_intf_ops $nic $ops; rc=$?
+ fi
+
+ return $rc
+}
+
+
+#
+# exec_intf_ops --
+#
+# Perform an operation to bring an individual interface up or down.
+#
+
+exec_intf_ops()
+{
+ local rc=0
+ local action=$1
+ local nic=$2
+
+ case $action in
+ start)
+ intf_ops "$ifup_cmd" up $nic; rc=$?
+ ;;
+ stop)
+ intf_ops "$ifdown_cmd" down $nic; rc=$?
+ ;;
+ *)
+ Panic "Illegal interface action: $action"
+ ;;
+ esac
+
+ return $rc
+}
+
+
+#
+# config_network_intfs --
+#
+# For Linux systems not supporting networking scripts to bring interfaces
+# up or down, provide a way to change the interface state individually.
+#
+
+config_network_intfs()
+{
+ local rc=0
+ local action=$1
+
+ if [ -f "$activeList" ]; then
+
+ while read nic; do
+ exec_intf_ops $action $nic
+ rc=$(expr $rc \| $?)
+ done < $activeList
+ fi
+
+ return $rc
+}
+
+
+#
+# run_network_script --
+#
+# Finds out how to run the system's script used to control networking, and
+# runs it with the given argument (which should be one of the usual SysV
+# init script arguments). If it does not work, tries the other alternatives.
+# So far, our alternatives are (a) systemctl (b) network script (c) perform
+# an individual interface state change.
+#
+
+run_network_script()
+{
+ local action=$1
+ local rc=0
+ local script
+
+ while true; do
+
+ exec_systemctl_service $action
+ [ $? != 0 ] || break
+
+ script=`find_networking_script`
+
+ if [ $script != "error" ]; then
+ exec_networking_script $script $action
+ [ $? != 0 ] || break
+ fi
+
+ # Since all the other alternatives fail, need to manually change
+ # individual interface state.
+ config_network_intfs $action; rc=$?
+ break
+ done
+
+ return $rc
}
@@ -116,13 +324,25 @@ run_network_script()
# None.
#
-save_active_NIC_list() {
+save_active_NIC_list()
+{
+ local intf_out
+
>$activeList
- for nic in `ifconfig | awk '/^eth/ { print $1 }'`; do
- ifconfig $nic | egrep -q '\bUP\b' && echo $nic >> $activeList
- exitCode=`expr $exitCode \| $?`
- done
+ # Find out all the non-loopback up interfaces. Use ifconfig if available
+ # otherwise fall back to the ip command.
+ if [ -z "$ifconfig_cmd" ]; then
+ for nic in $($ip_cmd link show up | egrep '\bUP\b' | awk -F: '{print $2}'); do
+ $ip_cmd link show ${nic%@*} | grep -iq 'link/ether' && echo ${nic%@*} >> $activeList
+ done
+ else
+ for nic in $($ifconfig_cmd | sed -n 's/^\([^: \t]*\).*$/\1/p'); do
+ intf_out=$($ifconfig_cmd $nic)
+ echo $intf_out | grep -iq loopback && continue
+ echo $intf_out | egrep -q '\bUP\b' && echo $nic >> $activeList
+ done
+ fi
}
@@ -130,27 +350,41 @@ save_active_NIC_list() {
# rescue_NIC --
#
# For each NIC recorded in $activeList that is not currently "up", run
-# "ifup $nic".
+# "ifup $nic" or "ip link set $nic up" to bring the interface up.
#
# Results:
# All downed NICs should be active.
#
-rescue_NIC() {
+rescue_NIC()
+{
+ local rc=0
+ local intf_out
+
if [ -f "$activeList" ]; then
while read nic; do
- if ifconfig $nic | egrep -q '\bUP\b'; then
+ if [ -z "$ifconfig_cmd" ]; then
+ intf_out=$($ip_cmd link show $nic up)
+ else
+ intf_out=$($ifconfig_cmd $nic)
+ fi
+
+ if echo $intf_out | grep -q 'UP'; then
echo `date` "[rescue_nic] $nic is already active."
else
echo `date` "[rescue_nic] activating $nic ..."
- ifup $nic
- exitCode=`expr $exitCode \| $?`
+ # Our best effort to activate interfaces, use ifup if available
+ # otherwise use the ip command as fallback.
+ intf_ops "$ifup_cmd" up $nic
+ rc=$(expr $rc \| $?)
fi
done < $activeList
rm -f $activeList
fi
+
+ return $rc
}
@@ -173,32 +407,56 @@ TranquilizeNetworkManager()
# `which' may be a bit noisy, so we'll shush it.
dbusSend=`which dbus-send 2>/dev/null`
rc=$?
- if [ $rc = 0 ]; then
- # NetworkManager 0.8.0
- $dbusSend --system --print-reply \
- --dest=org.freedesktop.NetworkManager \
- /org/freedesktop/NetworkManager \
- org.freedesktop.NetworkManager.Enable boolean:false
- rc=$?
- if [ $rc = 0 ]; then
- return $rc
- fi
- # NetworkManager 0.7.0
- $dbusSend --system --print-reply \
- --dest=org.freedesktop.NetworkManager \
- /org/freedesktop/NetworkManager \
- org.freedesktop.NetworkManager.Sleep boolean:true
- rc=$?
- if [ $rc = 0 ]; then
- return $rc
- fi
- # NetworkManager 0.6
- $dbusSend --system --print-reply \
- --dest=org.freedesktop.NetworkManager \
- /org/freedesktop/NetworkManager \
- org.freedesktop.NetworkManager.sleep
- rc=$?
+ if [ $rc -ne 0 ]; then
+ return $rc
fi
+
+ # Check NetworkManager state before disabling it.
+ nm_state=`$dbusSend --system --print-reply \
+ --dest=org.freedesktop.NetworkManager \
+ /org/freedesktop/NetworkManager \
+ org.freedesktop.DBus.Properties.Get \
+ string:'org.freedesktop.NetworkManager' \
+ string:'State' \
+ | awk '/variant/ {print $3;}'`
+ if [ -z "$nm_state" ]; then
+ return 1
+ fi
+ # NetworkManager API 0.7/0.8 0.9
+ # NM_STATE_ASLEEP 1 10
+ # NM_STATE_DISCONNECTED 4 20
+ case $nm_state in
+ 1|4|10|20)
+ # Nothing needs to be done.
+ return 0
+ ;;
+ esac
+
+ # NetworkManager 0.8.0 and above
+ $dbusSend --system --print-reply \
+ --dest=org.freedesktop.NetworkManager \
+ /org/freedesktop/NetworkManager \
+ org.freedesktop.NetworkManager.Enable boolean:false
+ rc=$?
+ if [ $rc -eq 0 ]; then
+ return $rc
+ fi
+ # NetworkManager 0.7.0
+ $dbusSend --system --print-reply \
+ --dest=org.freedesktop.NetworkManager \
+ /org/freedesktop/NetworkManager \
+ org.freedesktop.NetworkManager.Sleep boolean:true
+ rc=$?
+ if [ $rc -eq 0 ]; then
+ return $rc
+ fi
+ # NetworkManager 0.6
+ $dbusSend --system --print-reply \
+ --dest=org.freedesktop.NetworkManager \
+ /org/freedesktop/NetworkManager \
+ org.freedesktop.NetworkManager.sleep
+ rc=$?
+
return $rc
}
@@ -253,6 +511,27 @@ WakeNetworkManager()
#
+# sanity_check --
+#
+# Check if the script has all the commands it needs to carry out the
+# request. So far, it requires either ip or ifconfig command to read
+# interface configuration. Ifup is not checked here. It is checked at
+# the place where we need to do individual interface state change.
+#
+
+sanity_check()
+{
+ ip_cmd=$(which ip 2>/dev/null)
+ ifconfig_cmd=$(which ifconfig 2>/dev/null)
+ ifup_cmd=$(which ifup 2>/dev/null)
+ ifdown_cmd=$(which ifdown 2>/dev/null)
+
+ [ -z "$ifconfig_cmd" -a -z "$ip_cmd" ] && \
+ Panic "ip and ifconfig not in search path."
+}
+
+
+#
# main --
#
# Main entry point. Perform some sanity checking, then map state change
@@ -266,11 +545,6 @@ main() {
exitCode=0
activeList=/var/run/vmware-active-nics
- # XXX Are these really necessary? If so, we should have seen customer
- # complaints by now.
- which ifup >/dev/null 2>&1 || Panic "ifup not in search path."
- which ifconfig >/dev/null 2>&1 || Panic "ifconfig not in search path."
-
case "$1" in
poweron-vm)
rm -f $activeList
@@ -279,6 +553,7 @@ main() {
TranquilizeNetworkManager
exitCode=$?
if [ $exitCode != 0 ]; then
+ sanity_check suspend-vm
save_active_NIC_list
run_network_script stop
exitCode=$?
@@ -288,6 +563,7 @@ main() {
WakeNetworkManager
exitCode=$?
if [ $exitCode != 0 ]; then
+ sanity_check resume-vm
# According to hfu, "/etc/init.d/networking restart" on Debian 5.0
# may bring down ethernet interfaces tagged as "allow-hotplug" without
# bringing them back up.

View File

@ -1,50 +0,0 @@
From 7071154a3700a7b826b0d56f0cc8f4ae05b55fd1 Mon Sep 17 00:00:00 2001
From: Oliver Kurth <okurth@vmware.com>
Date: Tue, 9 Sep 2014 08:58:34 -0700
Subject: [PATCH] auth: Read from shadow password if needed
---
lib/auth/authPosix.c | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/lib/auth/authPosix.c b/lib/auth/authPosix.c
index beec4ee..6a3da65 100644
--- a/lib/auth/authPosix.c
+++ b/lib/auth/authPosix.c
@@ -20,6 +20,7 @@
#include <stdio.h>
#include <string.h>
#include <unistd.h> // for access, crypt, etc.
+#include <shadow.h>
#include "vmware.h"
#include "vm_version.h"
@@ -341,10 +342,23 @@
}
if (*pwd->pw_passwd != '\0') {
- char *namep = (char *) crypt(pass, pwd->pw_passwd);
+ const char *pw = pwd->pw_passwd;
+ const char *namep;
- if (strcmp(namep, pwd->pw_passwd) != 0) {
- // Incorrect password
+ if(strcmp(pwd->pw_passwd, "x") == 0) {
+ struct spwd *sp = getspnam(user);
+ if (sp) {
+ pw = sp->sp_pwdp;
+ }
+ }
+
+ namep = (char *) crypt(pass, pw);
+ if (namep) {
+ if (strcmp(namep, pw) != 0) {
+ // Incorrect password
+ return NULL;
+ }
+ } else {
return NULL;
}
--
1.8.5.5

View File

@ -1,24 +0,0 @@
From 5936cd877fd307b796e364a4ac99615f44ef6024 Mon Sep 17 00:00:00 2001
From: Oliver Kurth <okurth@vmware.com>
Date: Mon, 17 Nov 2014 17:36:52 -0800
Subject: [PATCH] define USE_SLASH_PROC
---
open-vm-tools/services/plugins/guestInfo/getlib/Makefile.am | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/open-vm-tools/services/plugins/guestInfo/getlib/Makefile.am b/open-vm-tools/services/plugins/guestInfo/getlib/Makefile.am
index 331e24f..862029f 100644
--- a/open-vm-tools/services/plugins/guestInfo/getlib/Makefile.am
+++ b/open-vm-tools/services/plugins/guestInfo/getlib/Makefile.am
@@ -28,4 +28,6 @@ libGuestInfo_la_CPPFLAGS += @GLIB2_CPPFLAGS@
libGuestInfo_la_CPPFLAGS += -I$(srcdir)/..
AM_CFLAGS = $(DNET_CPPFLAGS)
-
+if USE_SLASH_PROC
+AM_CFLAGS += -DUSE_SLASH_PROC
+endif
--
1.9.1

View File

@ -12,8 +12,7 @@ DESCRIPTION="VMware tools for distribution via /usr/share/oem"
HOMEPAGE="http://open-vm-tools.sourceforge.net/"
EGIT_REPO_URI="https://github.com/vmware/open-vm-tools"
EGIT_BRANCH="stable-9.4.6-deploypkg"
EGIT_COMMIT="a4d763b036c6b413f71a5841194a53858625a3cb"
EGIT_COMMIT="0696234c3905bf91cfba2cf909dbf92fc30ee6fc"
EGIT_SOURCEDIR="${WORKDIR}"
LICENSE="LGPL-2"
@ -36,14 +35,6 @@ RDEPEND="dnet? ( dev-libs/libdnet )
S="${WORKDIR}/${PN}"
PATCHES=(
"${FILESDIR}/${P}-0001-configure-Add-options-for-fuse-and-hgfs.patch"
"${FILESDIR}/${P}-0002-configure-Fix-USE_SLASH_PROC-conditional.patch"
"${FILESDIR}/${P}-0003-scripts-network.patch"
"${FILESDIR}/${P}-0004-auth-Read-from-shadow.patch"
"${FILESDIR}/${P}-0005-define_USE_SLASH_PROC.patch"
)
#pkg_setup() {
# enewgroup vmware
#}
@ -99,6 +90,7 @@ src_configure() {
--without-kernel-modules
--without-pam
--without-x
--disable-vgauth
$(use_with dnet)
$(use_with pic)
)