Giter Club home page Giter Club logo

open-vm-tools's Introduction

General

What is the open-vm-tools project?

open-vm-tools is a set of services and modules that enable several features in VMware products for better management of, and seamless user interactions with, guests. It includes kernel modules for enhancing the performance of virtual machines running Linux or other VMware supported Unix like guest operating systems.

open-vm-tools enables the following features in VMware products:

  • The ability to perform virtual machine power operations gracefully.
  • Execution of VMware provided or user configured scripts in guests during various power operations.
  • The ability to run programs, commands and file system operation in guests to enhance guest automation.
  • Authentication for guest operations.
  • Periodic collection of network, disk, and memory usage information from the guest.
  • Generation of heartbeat from guests to hosts so VMware's HA solution can determine guests' availability.
  • Clock synchronization between guests and hosts or client desktops.
  • Quiescing guest file systems to allow hosts to capture file-system-consistent guest snapshots.
  • Execution of pre-freeze and post-thaw scripts while quiescing guest file systems.
  • The ability to customize guest operating systems immediately after powering on virtual machines.
  • Enabling shared folders between host and guest file systems on VMware Workstation and VMware Fusion.
  • Copying and pasting text, graphics, and files between guests and hosts or client desktops.

Can you provide more details on the actual code being released?

The following components have been released as open source software:

  • Linux, Solaris and FreeBSD drivers for various devices and file system access.
  • The memory balloon driver for reclaiming memory from guests.
  • The PowerOps plugin to perform graceful power operation and run power scripts.
  • The VIX plugin to run programs and commands, and perform file system operations in guests.
  • The GuestInfo plugin to periodically collect various statistics from guests.
  • The TimeSync plugin to perform time synchronization.
  • The dndcp plugin to support drag and drop, and text and file copy/paste operations.
  • The ResolutionSet plugin to adjust guest screen resolutions automatically based on window sizes.
  • The guest authentication service.
  • The toolbox command to perform disk wiping and shrinking, manage power scripts, and time synchronization.
  • The guest SDK libraries to provide information about virtual machines to guests.
  • Clients and servers for shared folders support.
  • Multiple monitor support.
  • The GTK Toolbox UI.

Is open-vm-tools available with Linux distributions?

Yes. open-vm-tools packages for user space components are available with new versions of major Linux distributions, and are installed as part of the OS installation in several cases. Please refer to VMware KB article http://kb.vmware.com/kb/2073803 for details. All leading Linux vendors support open-vm-tools and bundle it with their products. For information about OS compatibility for open-vm-tools, see the VMware Compatibility Guide at http://www.vmware.com/resources/compatibility Automatic installation of open-vm-tools along with the OS installation eliminates the need to separately install open-vm-tools in guests. If open-vm-tools is not installed automatically, you may be able to manually install it from the guest OS vendor's public repository. Installing open-vm-tools from the Linux vendor's repository reduces virtual machine downtime because future updates to open-vm-tools are included with the OS maintenance patches and updates. NOTE: Most of the Linux distributions ship two or more open-vm-tools packages. "open-vm-tools" is the core package without any dependencies on X libraries and "open-vm-tools-desktop" is an additional package with dependencies on "open-vm-tools" core package and X libraries. The "open-vm-tools-sdmp" package contains a plugin for Service Discovery. There may be additional packages, please refer to the documentation of the OS vendor. Note that the open-vm-tools packages available with Linux distributions do not include Linux drivers because Linux drivers are available as part of Linux kernel itself. Linux kernel versions 3.10 and later include all of the Linux drivers present in open-vm-tools except the vmhgfs driver. The vmhgfs driver was required for enabling shared folders feature, but is superseded by vmhgfs-fuse which does not require a kernel driver.

Will there be continued support for VMware Tools and OSP?

VMware Tools will continue to be available under a commercial license. It is recommended that open-vm-tools be used for the Linux distributions where open-vm-tools is available. VMware will not provide OSPs for operating systems where open-vm-tools is available.

How does this benefit other open source projects?

Under the terms of the GPL, open source community members are able to use the open-vm-tools code to develop their own applications, extend it, and contribute to the community. They can also incorporate some or all of the code into their projects, provided they comply with the terms of the GPL.

License Related

What license is the code being released under?

The code is being released under GPL v2 and GPL v2 compatible licenses. To be more specific, the Linux kernel modules are being released under the GPL v2, while almost all of the user level components are being released under the LGPL v2.1. The SVGA and mouse drivers have been available under the X11 license for quite some time. There are certain third party components released under BSD style licenses, to which VMware has in some cases contributed, and will continue to distribute with open-vm-tools.

Why did you choose these licenses?

We chose the GPL v2 for the kernel components to be consistent with the Linux kernel's license. We chose the LGPL v2.1 for the user level components because some of the code is implemented as shared libraries and we do not wish to restrict proprietary code from linking against those libraries. For consistency, we decided to license the rest of the userlevel code under the LGPL v2.1 as well.

What are the obligations that the license(s) impose?

Each of these licenses have different obligations. For questions about the GPL, LGPL licenses, the Free Software Foundation's GPL FAQ page provides lots of useful information. For questions about the other licenses like the X11, BSD licenses, the Open Source Initiative has numerous useful resources including mailing lists. The Software Freedom Law Center provides legal expertise and consulting for free and open source software (FOSS) developers.

Can I use all or part of this code in my proprietary software? Do I have to release the source code if I do?

Different open source licenses have different requirements regarding the release of source code. Since the code is being released under various open source licenses, you will need to comply with the terms of the corresponding licenses.

Am I required to contribute back any changes I make to the code?

No, you aren't required to contribute any changes that you make back to the open-vm-tools project. However, we encourage you to do so.

Can I use all or part of this code in another open source package?

Yes, as long as you comply with the appropriate license(s).

Can I package this for my favorite operating system?

Yes! Please do.

Will the commercial version (VMware Tools) differ from the open source version (open-vm-tools)? If so, how?

Our goal is to work towards making the open source version as close to the commercial version as possible. However, we do currently make use of certain components licensed from third parties as well as components from other VMware products which are only available in binary form.

If I use the code from the open-vm-tools project in my project/product, can I call my project/product VMware Tools?

No, since your project/product is not a VMware project/product.

Building open-vm-tools

How do I build open-vm-tools?

open-vm-tools uses the GNU Automake tool for generating Makefiles to build all sources. More information about Automake can be found here: http://www.gnu.org/software/automake/

Project build information:

The following steps will work on most recent Linux distributions:

autoreconf -i
./configure
make
sudo make install
sudo ldconfig

Service Discovery (sdmp) plugin

To build the optional sdmp (Service Discovery) plugin use the --enable-servicediscovery option to invoke the configure script:

./configure --enable-servicediscovery

The open-vm-tools 12.0.0 release introduces an optional setup script and two plugins (one optional)

  • Salt Minion Setup
  • Component Manager plugin
  • ContainerInfo plugin (optional)

Salt Minion Setup

The Salt support on Linux consists of a single bash script to setup Salt Minion on VMware virtual machines. The script requires the "curl" and "awk" commands to be available on the system.

Linux providers supplying open-vm-tools packages are recommended to provide Salt Minion support in a separate optional package - "open-vm-tools-salt-minion".

To include the Salt Minion Setup in the open-vm-tools build use the --enable-salt-minion option when invoking the configure script.

./configure --enable-salt-minion

Component Manager (componentMgr) plugin

The component Manager manages a preconfigured set of components available from VMware that can be made available on the Linux guest. Currently the only component that can be managed is the Salt Minion Setup.

ContainerInfo (containerInfo) plugin

The optional containerInfo plugin retrieves a list of the containers running on a Linux guest and publishes the list to the guest variable "guestinfo.vmtools.containerinfo" in JSON format. The containerInfo plugin communicates with the containerd daemon using gRPC to retrieve the desired information. For containers that are managed by Docker, the plugin uses libcurl to communicate with the Docker daemon and get the names of the containers.

Since this plugin requires additional build and runtime dependencies, Linux vendors are recommended to release it in a separate, optional package - "open-vm-tools-containerinfo". This avoids unnecessary dependencies for customers not using the feature.

Canonical, Debian, Ubuntu Linux

Build Dependencies Runtime
libcurl4-openssl-dev curl
protobuf-compiler protobuf
libprotobuf-dev grpc++
protobuf-compiler-grpc
libgrpc++-dev
golang-github-containerd-containerd-dev
golang-github-gogo-protobuf-dev

Fedora, Red Hat Enterprise Linux, ...

Build Dependencies Runtime
libcurl-devel curl
protobuf-compiler protobuf
protobuf-devel grpc-cpp
grpc-plugins
grpc-devel
containerd-devel

Configuring the build for the ContainerInfo plugin

The configure script defaults to building the ContainerInfo when all the needed dependencies are available. ContainerInfo will not be built if there are missing dependencies. Invoke the configure script with --enable-containerinfo=no to explicitly inhibit building the plugin.

./configure --enable-containerinfo=no

If the configure script is given the option --enable-containerinfo=yes and any necessary dependency is not available, the configure script will terminate with an error.

./configure --enable-containerinfo=yes

Getting configure options and help

If you are looking for help or additional settings for the building of this project, the following configure command will display a list of help options:

./configure --help

When using configure in the steps above it is only necessary to call ./configure once unless there was a problem after the first invocation.

Getting Involved

How can I get involved today?

You can get involved today in several different ways:

  • Start using open-vm-tools today and give us feedback.

  • Suggest feature enhancements.

  • Identify and submit bugs under issues section: https://github.com/vmware/open-vm-tools/issues

  • Start porting the code to other operating systems. Here is the list of operating systems with open-vm-tools:

    • Red Hat Enterprise Linux 7.0 and later releases
    • SUSE Linux Enterprise 12 and later releases
    • Ubuntu 14.04 and later releases
    • CentOS 7 and later releases
    • Debian 7.x and later releases
    • Oracle Linux 7 and later
    • Fedora 19 and later releases
    • openSUSE 11.x and later releases
    • Flatcar Container Linux, all releases
    • Rocky 8 and later releases
    • AlmaLinux OS 8 and later releases

Will external developers be allowed to become committers to the project?

Yes. Initially, VMware engineers will be the only committers. As we roll out our development infrastructure, we will be looking to add external committers to the project as well.

How can I submit code changes like bug fixes, patches, new features to the project?

Initially, you can submit bug fixes, patches and new features to the project development mailing list as attachments to emails or bug reports. To contribute source code, you will need to fill out a contribution agreement form as part of the submission process. We will have more details on this process shortly.

What is the governance model for managing this as an open source project?

The feature roadmap and schedules for the open-vm-tools project will continue to be defined by VMware. Initially, VMware engineers will be the only approved committers. We will review incoming submissions for suitability for merging into the project. We will be looking to add community committers to the project based on their demonstrated contributions to the project. Finally, we also plan to set up a process for enhancement proposals, establishing sub-projects and so on.

Will you ship code that I contribute with VMware products? If so, will I get credit for my contributions?

Contributions that are accepted into the open-vm-tools project's main source tree will likely be a part of VMware Tools. We also recognize the value of attribution and value your contributions. Consequently, we will acknowledge contributions from the community that are distributed with VMware's products.

Do I need to sign something before making a contribution?

Yes. We have a standard contribution agreement that covers all contributions made to the project. It gives VMware and you joint copyright interests in the code you are contributing. The agreement also gives VMware flexibility with licensing and also helps avoid any copyright/licensing related issues that may arise in the future. In order for us to include your contribution in our source tree, we ask that you send us a signed copy of the agreement. You can do this in one of two ways: Fax to +1.650.427.5003, Attn: Product & Technology Law Group Scan and email it to oss-queries_at_vmware.com Agreement: http://open-vm-tools.sourceforge.net/files/vca.pdf

My version of Linux is not recognized. How do I add my Linux name to the known list?

The open-vm-tools source contains a table mapping the guest distro name to the officially recognized short name. Please do not submit pull requests altering this table and associated code. Any changes here must be accompanied by additional changes in the VMware host. Values that are not recognized by the VMware host will be ignored.

Use the appropriate generic Linux designation when configuring a VM for your Linux version. The selection available will vary by virtual hardware version being used.

  • Other 5.x or later Linux (64-bit)
  • Other 5.x or later Linux (32-bit)
  • Other 4.x Linux (64-bit)
  • Other 4.x Linux (32-bit)
  • Other 3.x Linux (64-bit)
  • Other 3.x Linux (32-bit)
  • Other Linux (64-bit)
  • Other Linux (32-bit)

Compatibilty

What Operating Systems are supported for customization?

The Guest OS Customization Support Matrix provides details about the guest operating systems supported for customization.

Which versions of open-vm-tools are compatible with other VMware products?

The VMware Product Interoperability Matrix provides details about the compatibility of different versions of VMware Tools (includes open-vm-tools) and other VMware Products.

Internationalization

Which languages are supported?

open-vm-tools supports the following languages:

  • English
  • French
  • German
  • Spanish
  • Italian
  • Japanese
  • Korean
  • Simplified Chinese
  • Traditional Chinese

Other

Mailing Lists

Please send an email to one of these mailing lists based on the nature of your question.

open-vm-tools's People

Contributors

dsouders avatar dyno avatar fkaty avatar goldsborough avatar johnwvmw avatar jonathanvmw avatar mkarg avatar oliverkurth avatar ravindravmw avatar stanguturi avatar vmwkruti1111 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

open-vm-tools's Issues

bas_source svid_source are deprecated warning

localhost open-vm-tools-9.10.0-2476743 # make
Making all in lib
make[1]: Entering directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib'
Making all in guestRpc
make[2]: Entering directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib/guestRpc'
/bin/sh ../../scripts/build/rpcgen_wrapper.sh lib/guestRpc/nicinfo.x nicinfo.h
/bin/sh ../../scripts/build/rpcgen_wrapper.sh lib/guestRpc/nicinfo.x nicinfo_xdr.c
/bin/sh ../../libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME="open-vm-tools" -DPACKAGE_TARNAME="open-vm-tools" -DPACKAGE_VERSION="2015.01.29" -DPACKAGE_STRING="open-vm-tools\ 2015.01.29" -DPACKAGE_BUGREPORT="[email protected]" -DPACKAGE="open-vm-tools" -DVERSION="2015.01.29" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=".libs/" -DX_DISPLAY_MISSING=1 -DHAVE_ECVT=1 -DHAVE_FCVT=1 -DHAVE_CRYPT_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_WCHAR_H=1 -DHAVE_SYS_IO_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_SYSINFO_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_USER_H=1 -DHAVE_SYS_VFS_H=1 -DHAVE_UNWIND_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1 -DHAVE_STRUCT_STAT_ST_RDEV=1 -DTIME_WITH_SYS_TIME=1 -DNO_XSM=1 -DNO_XCOMPOSITE=1 -DNO_MULTIMON=1 -I. -I/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib/include -I/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib/include -DUSING_AUTOCONF=1 -DOPEN_VM_TOOLS -DUSE_VGAUTH -DU_DISABLE_RENAMING=1 -I/usr/include -DUSE_ICU -DHAVE_ICU_38 -DVMX86_TOOLS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_SVID_SOURCE -g -O2 -Wall -Werror -Wno-pointer-sign -Wno-unused-value -fno-strict-aliasing -Wno-unknown-pragmas -Wno-uninitialized -Wno-deprecated-declarations -Wno-unused-but-set-variable -Wno-unused -MT nicinfo_xdr.lo -MD -MP -MF .deps/nicinfo_xdr.Tpo -c -o nicinfo_xdr.lo nicinfo_xdr.c
libtool: compile: gcc -DPACKAGE_NAME="open-vm-tools" -DPACKAGE_TARNAME="open-vm-tools" -DPACKAGE_VERSION="2015.01.29" "-DPACKAGE_STRING="open-vm-tools 2015.01.29"" -DPACKAGE_BUGREPORT="[email protected]" -DPACKAGE="open-vm-tools" -DVERSION="2015.01.29" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=".libs/" -DX_DISPLAY_MISSING=1 -DHAVE_ECVT=1 -DHAVE_FCVT=1 -DHAVE_CRYPT_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_WCHAR_H=1 -DHAVE_SYS_IO_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_SYSINFO_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_USER_H=1 -DHAVE_SYS_VFS_H=1 -DHAVE_UNWIND_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1 -DHAVE_STRUCT_STAT_ST_RDEV=1 -DTIME_WITH_SYS_TIME=1 -DNO_XSM=1 -DNO_XCOMPOSITE=1 -DNO_MULTIMON=1 -I. -I/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib/include -I/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib/include -DUSING_AUTOCONF=1 -DOPEN_VM_TOOLS -DUSE_VGAUTH -DU_DISABLE_RENAMING=1 -I/usr/include -DUSE_ICU -DHAVE_ICU_38 -DVMX86_TOOLS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_SVID_SOURCE -g -O2 -Wall -Werror -Wno-pointer-sign -Wno-unused-value -fno-strict-aliasing -Wno-unknown-pragmas -Wno-uninitialized -Wno-deprecated-declarations -Wno-unused-but-set-variable -Wno-unused -MT nicinfo_xdr.lo -MD -MP -MF .deps/nicinfo_xdr.Tpo -c nicinfo_xdr.c -fPIC -DPIC -o .libs/nicinfo_xdr.o
In file included from /usr/include/stdlib.h:24:0,
from /usr/include/rpc/types.h:60,
from /root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib/include/vmxrpc.h:29,
from nicinfo.h:9,
from nicinfo_xdr.c:6:
/usr/include/features.h:148:3: error: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Werror=cpp]

warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"

^
cc1: all warnings being treated as errors
Makefile:348: recipe for target 'nicinfo_xdr.lo' failed
make[2]: *** [nicinfo_xdr.lo] Error 1
make[2]: Leaving directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib/guestRpc'
Makefile:327: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib'
Makefile:361: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

will remove -Werror from makefile as temp work around.

Memory leak in vmxnet when using XenApp receiver

Hi,

I'm experiencing a memory leak in vmxnet driver. When using XenApp receiver from Citrix to access a remote desktop, vmxnet fills dmesg with messages

eth0: Runt pkt (55 bytes) entry 31!

It's happening on Debian (wheezy), which routes traffic between two Ethernets - server on one eth0, client on second eth1. It's installed in ESXi 5.1.0

I saw a similar problem on forum and when I blindly tried to change vmxnet.c:2713 to

if (skb->len < (ETH_MIN_FRAME_LEN - 5)) {

memory consumption was fixed. But I'm not sure, what it could cause in other parts of code.

Used software:
open-vm-tools-9.4.0-1280544

SCSI timer timeout value increase missing in open-vm-tools

In various releases of VMWare Tools a udev rule stored in /etc/udev/rules.d/99-vmware-scsi-udev.rules was created by the OSP packages to prevent SCSI subsystem intervention during storage head failovers and storage vMotions, etc. The following KB article describes this behavior:

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009465

The open-vm-tools packages should also incorporate the same udev rule.

open-vm-tools on Fedora 22 isn't fitting guest or autofit

On a fresh Fedora 22 install running kde-plasma and kernel 4.0.4-301.fc22:

  • sudo dnf install open-vm-tools (dnf is Fedora 22's replacement to yum)
  • reboot
  • dmesg | grep vm shows "systemd[1]: Detected virtualization VMware."; "[drm] Initialized vmwgfx 2.6.1 20140704 for 0000:00:0f.0 on minor 0"; "vmw_vmci 0000:00:00.7: Found VMCI PCI device at 0x11080, irq 16"; "vmw_vmci 0000:00:07.7: Using capabilities 0xc"; and "VMCI host device registered (name=vmci, major=10, minor=58)".
  • ps -ax | grep vm shows "/usr/bin/vmtoolsd".
  • VMware Workstation->View->Fit Guest Now is grayed out

Is there more configuration that I have to do? Or, after rebooting after a successful repo install, should autofit and fitting guest be working?

If I install the VMware Tools included in VMware Workstation, it creates a new initrd boot image, starts VMware-tools via systemctl, and tells me to run /usr/bin/vmware-user, log out, restart my x session. Running /usr/bin/vmware-user fits guest without me asking for it.

What extra steps do I need to take, to use open-vm-tools? The only features I'm interested in is auto-fitting guest, and automatically handling resizing to fit. Do I need to install a new initrd image? If so, what are the steps? Do I need to run the comparable version of /usr/bin/vmware-user (as open-vm-tools doesn't install one?)

VGAuthLog.c:213:4: error: format '%s' expects argument of type 'char *'

VGAuth is failing to build :(

mv -f .deps/libvgauth_la-usercheck.Tpo .deps/libvgauth_la-usercheck.Plo
/bin/sh ../../libtool --tag=CC --mode=compile gcc -DPACKAGE_NAME="open-vm-tools" -DPACKAGE_TARNAME="open-vm-tools" -DPACKAGE_VERSION="2015.01.29" -DPACKAGE_STRING="open-vm-tools\ 2015.01.29" -DPACKAGE_BUGREPORT="[email protected]" -DPACKAGE="open-vm-tools" -DVERSION="2015.01.29" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=".libs/" -DX_DISPLAY_MISSING=1 -DHAVE_ECVT=1 -DHAVE_FCVT=1 -DHAVE_CRYPT_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_WCHAR_H=1 -DHAVE_SYS_IO_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_SYSINFO_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_USER_H=1 -DHAVE_SYS_VFS_H=1 -DHAVE_UNWIND_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1 -DHAVE_STRUCT_STAT_ST_RDEV=1 -DTIME_WITH_SYS_TIME=1 -DNO_XSM=1 -DNO_XCOMPOSITE=1 -DNO_MULTIMON=1 -I. -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -DG_LOG_DOMAIN="VCGA" -I/usr/include -DUSE_PAM -I/usr/include -I../../libvmtools -I../../vgauth/public -I../../vgauth/common -I/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib/include -I/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib/include -DUSING_AUTOCONF=1 -DOPEN_VM_TOOLS -DUSE_VGAUTH -DU_DISABLE_RENAMING=1 -I/usr/include -DUSE_ICU -DHAVE_ICU_38 -DVMX86_TOOLS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_SVID_SOURCE -D_DEFAULT_SOURCE -Wall -Werror -Wno-pointer-sign -Wno-unused-value -fno-strict-aliasing -Wno-unknown-pragmas -Wno-uninitialized -Wno-deprecated-declarations -Wno-unused-but-set-variable -MT libvgauth_la-VGAuthLog.lo -MD -MP -MF .deps/libvgauth_la-VGAuthLog.Tpo -c -o libvgauth_la-VGAuthLog.lo test -f '../common/VGAuthLog.c' || echo './'../common/VGAuthLog.c
libtool: compile: gcc -DPACKAGE_NAME="open-vm-tools" -DPACKAGE_TARNAME="open-vm-tools" -DPACKAGE_VERSION="2015.01.29" "-DPACKAGE_STRING="open-vm-tools 2015.01.29"" -DPACKAGE_BUGREPORT="[email protected]" -DPACKAGE="open-vm-tools" -DVERSION="2015.01.29" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=".libs/" -DX_DISPLAY_MISSING=1 -DHAVE_ECVT=1 -DHAVE_FCVT=1 -DHAVE_CRYPT_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_WCHAR_H=1 -DHAVE_SYS_IO_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_SYSINFO_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_USER_H=1 -DHAVE_SYS_VFS_H=1 -DHAVE_UNWIND_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1 -DHAVE_STRUCT_STAT_ST_RDEV=1 -DTIME_WITH_SYS_TIME=1 -DNO_XSM=1 -DNO_XCOMPOSITE=1 -DNO_MULTIMON=1 -I. -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -DG_LOG_DOMAIN="VCGA" -I/usr/include -DUSE_PAM -I/usr/include -I../../libvmtools -I../../vgauth/public -I../../vgauth/common -I/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib/include -I/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib/include -DUSING_AUTOCONF=1 -DOPEN_VM_TOOLS -DUSE_VGAUTH -DU_DISABLE_RENAMING=1 -I/usr/include -DUSE_ICU -DHAVE_ICU_38 -DVMX86_TOOLS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_SVID_SOURCE -D_DEFAULT_SOURCE -Wall -Werror -Wno-pointer-sign -Wno-unused-value -fno-strict-aliasing -Wno-unknown-pragmas -Wno-uninitialized -Wno-deprecated-declarations -Wno-unused-but-set-variable -MT libvgauth_la-VGAuthLog.lo -MD -MP -MF .deps/libvgauth_la-VGAuthLog.Tpo -c ../common/VGAuthLog.c -fPIC -DPIC -o .libs/libvgauth_la-VGAuthLog.o
../common/VGAuthLog.c: In function 'LogErrorPosixCodeV':
../common/VGAuthLog.c:213:4: error: format '%s' expects argument of type 'char ', but argument 9 has type 'int' [-Werror=format=]
g_warning("[function %s, file %s, line %d], %s, [errno = %d], %s\n",
^
cc1: all warnings being treated as errors
Makefile:520: recipe for target 'libvgauth_la-VGAuthLog.lo' failed
make[2]: *
* [libvgauth_la-VGAuthLog.lo] Error 1
make[2]: Leaving directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/vgauth/lib'
Makefile:312: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/vgauth'
Makefile:361: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
localhost open-vm-tools-9.10.0-2476743 #

CFLAGS="-D_DEFAULT_SOURCE" ./configure --without-x --without-kernel-modules

emerge --info

Portage 2.2.18 (python 2.7.9-final-0, default/linux/amd64/13.0, gcc-4.8.4, glibc-2.20-r2, 3.18.11-gentoo x86_64)
System uname: Linux-3.18.11-gentoo-x86_64-Intel-R-_Core-TM-i7_CPU_Q_840@_1.87GHz-with-gentoo-2.2
KiB Mem: 2053344 total, 1169352 free
KiB Swap: 8387580 total, 8387580 free
Timestamp of repository gentoo: Fri, 08 May 2015 00:30:01 +0000
sh bash 4.2_p53
ld GNU ld (Gentoo 2.24 p1.4) 2.24
app-shells/bash: 4.2_p53::gentoo
dev-lang/perl: 5.20.2::gentoo
dev-lang/python: 2.7.9-r1::gentoo, 3.3.5-r1::gentoo
dev-util/pkgconfig: 0.28-r2::gentoo
sys-apps/baselayout: 2.2::gentoo
sys-apps/openrc: 0.13.11::gentoo
sys-apps/sandbox: 2.6-r1::gentoo
sys-devel/autoconf: 2.69::gentoo
sys-devel/automake: 1.13.4::gentoo
sys-devel/binutils: 2.24-r3::gentoo
sys-devel/gcc: 4.8.4::gentoo
sys-devel/gcc-config: 1.7.3::gentoo
sys-devel/libtool: 2.4.6::gentoo
sys-devel/make: 4.1-r1::gentoo
sys-kernel/linux-headers: 3.18::gentoo (virtual/os-headers)
sys-libs/glibc: 2.20-r2::gentoo
Repositories:

gentoo
location: /usr/portage
sync-type: rsync
sync-uri: rsync://rsync.gentoo.org/gentoo-portage
priority: -1000

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@eula"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe -D_DEFAULT_SOURCE"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-march=native -O2 -pipe -D_DEFAULT_SOURCE"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j5"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
USE="acl amd64 berkdb bindist bzip2 cli cracklib crypt cxx dri fortran gdbm iconv ipv6 mmx mmxext modules multilib ncurses nls nptl openmp pam pcre readline session sse sse2 ssl tcpd unicode zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="keyboard mouse evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3" RUBY_TARGETS="ruby19 ruby20" USERLAND="GNU" VIDEO_CARDS="fbdev glint intel mach64 mga nouveau nv r128 radeon savage sis tdfx trident vesa via vmware dummy v4l" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset: CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON

Build system ./configure error : hgfsUri directory with 10.0.0-3000743 on Gentoo Linux x86_64

I'm attempting to build the latest open-vm-tools on Gentoo linux, and basing my build on the previous version's configure flags and with a slightly modified ebuild.

In short, if I pass the following arguments to ./configure, the build fails entirely. Here's the configure and output of the build attempt:

thunderstorm open-vm-tools-10.0.0-3000743 # ./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --disable-dependency-tracking --libdir=/usr/lib64 --disable-deploypkg --disable-tests --docdir=/usr/share/doc/open-vm-tools-10.0.0_p3000743 --with-procps --with-dnet --without-kernel-modules --disable-docs --disable-grabbitmqproxy --disable-vgauth --disable-multimon --without-icu --with-pam --with-pic --without-gtk2 --without-gtkmm --without-x

checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking build system type... (cached) x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for style of include used by make... GNU
checking for x86_64-pc-linux-gnu-gcc... x86_64-pc-linux-gnu-gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether x86_64-pc-linux-gnu-gcc accepts -g... yes
checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... none needed
checking dependency style of x86_64-pc-linux-gnu-gcc... none
checking how to run the C preprocessor... x86_64-pc-linux-gnu-gcc -E
checking for x86_64-pc-linux-gnu-gcc... (cached) x86_64-pc-linux-gnu-gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether x86_64-pc-linux-gnu-gcc accepts -g... (cached) yes
checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... (cached) none needed
checking dependency style of x86_64-pc-linux-gnu-gcc... (cached) none
checking for x86_64-pc-linux-gnu-g++... x86_64-pc-linux-gnu-g++
checking whether we are using the GNU C++ compiler... yes
checking whether x86_64-pc-linux-gnu-g++ accepts -g... yes
checking dependency style of x86_64-pc-linux-gnu-g++... none
checking whether x86_64-pc-linux-gnu-gcc and cc understand -c and -o together... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for a sed that does not truncate output... /bin/sed
checking whether ln -s works... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for a sed that does not truncate output... (cached) /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by x86_64-pc-linux-gnu-gcc... /usr/x86_64-pc-linux-gnu/bin/ld
checking if the linker (/usr/x86_64-pc-linux-gnu/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /usr/x86_64-pc-linux-gnu/bin/ld option to reload object files... -r
checking how to recognize dependent libraries... pass_all
checking for x86_64-pc-linux-gnu-ar... x86_64-pc-linux-gnu-ar
checking for x86_64-pc-linux-gnu-strip... x86_64-pc-linux-gnu-strip
checking for x86_64-pc-linux-gnu-ranlib... x86_64-pc-linux-gnu-ranlib
checking command to parse /usr/bin/nm -B output from x86_64-pc-linux-gnu-gcc object... ok
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether x86_64-pc-linux-gnu-g++ accepts -g... (cached) yes
checking dependency style of x86_64-pc-linux-gnu-g++... (cached) none
checking how to run the C++ preprocessor... x86_64-pc-linux-gnu-g++ -E
checking for objdir... .libs
checking if x86_64-pc-linux-gnu-gcc supports -fno-rtti -fno-exceptions... no
checking for x86_64-pc-linux-gnu-gcc option to produce PIC... -fPIC -DPIC
checking if x86_64-pc-linux-gnu-gcc PIC flag -fPIC -DPIC works... yes
checking if x86_64-pc-linux-gnu-gcc static flag -static works... yes
checking if x86_64-pc-linux-gnu-gcc supports -c -o file.o... yes
checking if x86_64-pc-linux-gnu-gcc supports -c -o file.o... (cached) yes
checking whether the x86_64-pc-linux-gnu-gcc linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for ld used by x86_64-pc-linux-gnu-g++... /usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64
checking if the linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) is GNU ld... yes
checking whether the x86_64-pc-linux-gnu-g++ linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) supports shared libraries... yes
checking for x86_64-pc-linux-gnu-g++ option to produce PIC... -fPIC -DPIC
checking if x86_64-pc-linux-gnu-g++ PIC flag -fPIC -DPIC works... yes
checking if x86_64-pc-linux-gnu-g++ static flag -static works... yes
checking if x86_64-pc-linux-gnu-g++ supports -c -o file.o... yes
checking if x86_64-pc-linux-gnu-g++ supports -c -o file.o... (cached) yes
checking whether the x86_64-pc-linux-gnu-g++ linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for pkg-config... yes
checking for X... disabled
checking libintl.h usability... yes
checking libintl.h presence... yes
checking for libintl.h... yes
checking for glib-2.0 >= 2.14.0 (via pkg-config)... yes
checking for gmodule-2.0 >= 2.14.0 (via pkg-config)... yes
checking for gobject-2.0 >= 2.14.0 (via pkg-config)... yes
checking for gthread-2.0 >= 2.14.0 (via pkg-config)... yes
checking for glib-genmarshal... yes
checking for fuse (via pkg-config)... yes
checking security/pam_appl.h usability... yes
checking security/pam_appl.h presence... yes
checking for security/pam_appl.h... yes
checking for pam_start in -lpam... yes
checking for crypt in -lcrypt... yes
checking for dlopen... no
checking for dlopen in -ldl... yes
checking for ecvt... yes
checking for fcvt... yes
checking for pthread_mutex_init in -lpthread... yes
checking for libprocps (via pkg-config)... yes
checking for dumbnet-config... no
checking for dnet-config... /usr/bin/dnet-config
checking for rpcgen... /usr/bin/rpcgen
checking crypt.h usability... yes
checking crypt.h presence... yes
checking for crypt.h... yes
checking for inttypes.h... (cached) yes
checking for stdint.h... (cached) yes
checking for stdlib.h... (cached) yes
checking wchar.h usability... yes
checking wchar.h presence... yes
checking for wchar.h... yes
checking sys/inttypes.h usability... no
checking sys/inttypes.h presence... no
checking for sys/inttypes.h... no
checking sys/io.h usability... yes
checking sys/io.h presence... yes
checking for sys/io.h... yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/sysinfo.h usability... yes
checking sys/sysinfo.h presence... yes
checking for sys/sysinfo.h... yes
checking for sys/types.h... (cached) yes
checking for sys/user.h... yes
checking sys/vfs.h usability... yes
checking sys/vfs.h presence... yes
checking for sys/vfs.h... yes
checking syslimits.h usability... no
checking syslimits.h presence... no
checking for syslimits.h... no
checking unwind.h usability... yes
checking unwind.h presence... yes
checking for unwind.h... yes
checking for wchar.h... (cached) yes
checking linux/unistd.h usability... yes
checking linux/unistd.h presence... yes
checking for linux/unistd.h... yes
checking for ecvt in -lc... yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for an ANSI C-conforming const... yes
checking for uid_t in sys/types.h... yes
checking for inline... inline
checking for mode_t... yes
checking for off_t... yes
checking for pid_t... yes
checking for size_t... yes
checking for struct stat.st_rdev... yes
checking whether time.h and sys/time.h may both be included... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for working volatile... yes
checking for GCC flag -Wno-pointer-sign... yes
checking for GCC flag -Wno-unused-value... yes
checking for GCC flag -fno-strict-aliasing... yes
checking for GCC flag -Wno-unknown-pragmas... yes
checking for GCC flag -Wno-uninitialized... yes
checking for GCC flag -Wno-deprecated-declarations... yes
checking for GCC flag -fvisibility... yes
checking for GCC flag -Wno-unused-but-set-variable... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating lib/Makefile
config.status: creating lib/appUtil/Makefile
config.status: creating lib/auth/Makefile
config.status: creating lib/backdoor/Makefile
config.status: creating lib/asyncsocket/Makefile
config.status: creating lib/sslDirect/Makefile
config.status: creating lib/pollGtk/Makefile
config.status: creating lib/poll/Makefile
config.status: creating lib/dataMap/Makefile
config.status: creating lib/hashMap/Makefile
config.status: creating lib/dict/Makefile
config.status: creating lib/dynxdr/Makefile
config.status: creating lib/err/Makefile
config.status: creating lib/file/Makefile
config.status: creating lib/foundryMsg/Makefile
config.status: creating lib/glibUtils/Makefile
config.status: creating lib/guestApp/Makefile
config.status: creating lib/guestRpc/Makefile
config.status: creating lib/hgfs/Makefile
config.status: creating lib/hgfsBd/Makefile
config.status: creating lib/hgfsHelper/Makefile
config.status: creating lib/hgfsServer/Makefile
config.status: creating lib/hgfsServerManagerGuest/Makefile
config.status: creating lib/hgfsServerPolicyGuest/Makefile
config.status: error: cannot find input file: lib/hgfsUri/Makefile.in
thunderstorm open-vm-tools-10.0.0-3000743 #

I can't see any obvious option that could have caused this. There's no Makefile.in generated in that directory:

thunderstorm open-vm-tools-10.0.0-3000743 # ls -la lib/hgfsUri/
total 16
drwxr-xr-x 2 portage portage 4096 Sep 10 17:31 .
drwxr-xr-x 51 portage portage 4096 Sep 13 21:34 ..
-rw-r--r-- 1 portage portage 3696 Sep 10 17:31 hgfsUriPosix.c
-rw-r--r-- 1 portage portage 1061 Sep 10 17:31 Makefile.am
thunderstorm open-vm-tools-10.0.0-3000743 #41

This is with GNU Make version 4.1, autoconf 2.69 and automake version 1.15.

debian version detection broken

hi,

as we are having point-releases in debian every other month, version detection in the current code is rather broken. for now i've patched it in Debian (yes, I'm the open-vm-tools maintainer in debian, just mail me if you want to get in contact!) with this patch: https://github.com/bzed/pkg-open-vm-tools/blob/master/debian/patches/debian/fix_debian_verison_recognition

the better fix for version >= 7.X would be to strip the .X part from the number and just use that one. I know that some longish time ago we had things like 3.0 and 3.1 being completely different releases, but that time is gone.

cheers,

Bernd

p.s. it would be really nice to have public access to new code and patches again!

deadlock caused by loop device

Have mounted loop device:
mount loop.img loopmnt
mount
...
/dev/sdb1 on /home/rjokl/disk type ext3 (rw,relatime,data=ordered)
/home/rjokl/disk/loop.img on /home/rjokl/loopmnt type ext3 (rw,relatime,data=ordered)

Now when you try to quiesce disks, vmtoolsd list all mounted FSs and call ioctl(fd, FIFREEZE) on them, one by one. However, that ioctl will hang on the loop device if the parent device is already frozen. It can be resumed by calling ioctl(fd, FITHAW) from another process, but that is not the case of vmtoolsd.

Result: guest is completely deadlocked.

I see several options to fix the issue:

  1. if the ioctl is not supposed to lock, then it is bug in kernel. I don't know the restrictions of ioctl usage.
  2. exclude loop devices from quiesce operation. underlaying block device is frozen, so the FS is probably consistent, but I'm not sure if this assumption correct.
  3. freeze loop device first and thaw them in reverse order (otherwise thaw ioctl will lock too)

fails to quiesce running rsync and gluster

I have a host on ESX which I'm using to rsync on to gluster. When the nightly backups occur, I get hung_task_timeouts and the snapshot fails because of a failure to quiesce. The backup guy claims we cannot turn off quiesced backups because we are using a 3rd party backup solution. Is there I way I can disable quiescing from the machine itself?

Support for appmonitorlib in open-vm-tools

This version of open-vm-tools does not include libappmonitorlib.so to be able to perform ping, start and stop actions for individual components in a VM. Are there any plans in this area? It seems to me that the vSphere HA SDK conflicts with the contents of open-vm-tools, which may lead to unexpected failures if both are mixed in a VM, particularly for the deamon vmtoolsd if it finds in a path a library provided by the HA SDK instead of what is available in package open-vm-tools.

generic_file_aio_read and generic_file_aio_write deleted from the kernel

Hi VMware!

generic_file_aio_read and generic_file_aio_write were deleted from the kernel as for stable version 3.16.2, see torvalds/linux@ed978a8 and torvalds/linux@6abd232

These calls should be changed so vmhgfs kernel module could be compiled for the newest kernel:

modules/linux/vmhgfs/file.c#L688 and modules/linux/vmhgfs/file.c#L743

New iter_ functions in mm/filemap.c have been added, see https://github.com/torvalds/linux/commits/master/mm/filemap.c for 07 May 2014, reading diffs for this day should help.

When done, please close the ticket.
If I patch it, I'll send you a PR. Thanks!

configure: error: mspack >= 0.0.20040308alpha is required.

localhost open-vm-tools-9.10.0-2476743 # ./configure --without-x
.
.
checking for libmspack >= 0.0.20040308alpha (via pkg-config)... no
configure: error: mspack >= 0.0.20040308alpha is required.

mspack 0.5.0alpha is installed

using ./configure CUSTOM_MSPACK_LIBS=/usr/local/include/mspack.h --without-x
as a temp workaround

Provide a better sync between master and stable branches

Currently tracking this repository is nearly impossible. When a single commit is "2 commits ahead of master" yet has "Showing 1,046 changed files with 186,655 additions and 982 deletions." This does lead to a good view into what is happening with the project. Additionally it doesn't even allow for use of the auditing of the codebase when errors like "Sorry, we could not display the entire diff because too many files (1,046) changed." are thrown.

Affects #8

rpc call before uninstall

When open-vm-tools are built and uninstalled with 'make uninstall', the host will not get notified of the change. Before uninstalling, a rpc call should be sent using the vmware-rpc-tool like this:

/usr/bin/vmware-rpctool 'tools.set.version 0'

When tools are installed with rpm, Debian or similar packages, this should be done automatically in the uninstall scripts.

"The power-on script did not run successfully in this virtual machine"

I've just created a linux image in Workstation 12 (debian-8.2-testing-amd64-netinst).

Once open-vm-tools is installed, I get errors on each power change:
"The VMware Tools power-on script did not run successfully in this virtual machine. If you have configured a custom power-on script in this virtual machine, make sure that it contains no errors. You can also submit a support request to report this issue"

Cycle multiple monitors failing

Hi,

trying to use "Cycle multiple monitors" from VMware-Workstation 11 results in

"..cannot use multiple monitors..virtual machine must have up-to-date VMware Tools installed and running"

However using the official tools with the same VM and Host works and has working multi-screen (with some glitches).

Using official tools is very distribution-related and not maintainable on Gentoo, so I would prefer the open-vm-tools.

Using the multiscreen by using the script vmware-user-suid-wrapper and "Cycle multiple monitors" in the workstation" is a requirement.

OpenSuSE Tumbleweed, Gnome 3.16.X on Wayland has no automatic screen resolution adjustment

I'm having the following issue on OpenSuSE Tumbleweed running Gnome 3.16.X on Wayland: The automatic screen resolution adjustment to fit the window size does not work. Further, there are resolutions missing from the list, and some non-available ones, when I open the Display control-panel in Gnome under Wayland. If I login in Gnome under Xorg, then things work as expected.

A typical Xorg log can be seen here: http://susepaste.org/890dd3fe
In it the proper resolutions are listed.

When I log into Gnome on Wayland I get the following log messages:
gnome-session

Xlib: extension "VMWARE_CTRL" missing on display ":0"

vmtoolsd
[ warning] [Gtk] gtk_disable_setlocale() must be called before gtk_init()

gnome-session
vmware-user: could not open /proc/fs/vmblock/dev

Now I don't know whether this is a open-vm-tools, SuSE Tumbleweed, Gnome, or Wayland issue, but perhaps you can help me finding out?

vmware autotools m4 macros broken for c++ only flags from pkg-config

Looking at
https://github.com/vmware/open-vm-tools/blob/stable-10.0.x/open-vm-tools/m4/vmtools.m4#L157
which will also be called for C++ libraries - all cflags from pkg-config will be assigned to cppflags. So even flags which might be c++ compiler compatible only will go in there.
Imho pkg-config -cflags need to go into CFLAGS for C libraries and CXXFLAGS for c++ libraries. And then use the appropriate ones. Right now building fails as libsigx-2.0-dev ships with -std=gnu11 in cflags and your m4 macros assign that to CPPFLAGS which is used for c code, too...

compiling with --without-icu still links libicu

compiled with --without-kernel-modules --without-gtk2 --without-gtkmm --without-ssl --without-xmlsecurity --without-xerces --without-icu --without-x --disable-vgauth

still links icu libraries, which are huge (~30MB)

libvmtools.so.0 => /lib/libvmtools.so.0 (0x28074000)
libdnet.so.1 => /usr/local/lib/libdnet.so.1 (0x280e9000)
libkvm.so.6 => /lib/libkvm.so.6 (0x280f5000)
libcrypt.so.5 => /lib/libcrypt.so.5 (0x280fe000)
libthr.so.3 => /lib/libthr.so.3 (0x28122000)
libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0 (0x28143000)
libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0 (0x28146000)
libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0 (0x28185000)
libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x28190000)
libintl.so.8 => /usr/local/lib/libintl.so.8 (0x28284000)
libc.so.7 => /lib/libc.so.7 (0x2828d000)
libicui18n.so.55 => /usr/local/lib/libicui18n.so.55 (0x28402000)
libicuuc.so.55 => /usr/local/lib/libicuuc.so.55 (0x2867a000)
libicudata.so.55 => /usr/local/lib/libicudata.so.55 (0x28800000)
libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x2a0b7000)
libpcre.so.1 => /usr/local/lib/libpcre.so.1 (0x2a1ab000)
libffi.so.6 => /usr/local/lib/libffi.so.6 (0x287f6000)
libm.so.5 => /lib/libm.so.5 (0x2a222000)
libc++.so.1 => /usr/lib/libc++.so.1 (0x2a249000)
libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x2a2f7000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2a310000)

Snapshot failure results in frozen VM

Whenever a quiesced snapshot is created from VMware, the tools will issue the freeze ioctl just before and the thaw ioctl just after the actual snapshot.

If for some reason the snapshot fails, the thaw ioctl is never issued and we have a frozen VM.

With 9.10.0, a stale -ctk.vmdk from a non-existing snapshot prevented a proper snapshot on the host side - This causes this issue, but I suspect, the problem is more generic in nature.

Would it be possible to add some sort of failsafe mechanism, to make sure we always bail out and unfreeze everything - or, if the tools are informed that the snapshot has failed, just handle it on that event? It seems a crash-consistent backup is preferable to a production server down. It is to me at least.

One way to reproduce (provoke) this behaviour on my end:

  1. Create a test VM with no snapshots, with CBT enabled and with open-vm-tools 9.10 installed
  2. Create a properly named snapshot CBT file (creating a naming conflict). For "test-app.vmdk", create an empty file named "test-app-000001-ctk.vmdk".
  3. take a non-qiuescing snapshot (this validates the conflict and VMware should throw the error; Create VM snapshot test-app the virtual disk is either corrupted or not a supported format)
  4. Now take a quiescing snapshot and notice how the system is frozen.

Let be know if I can provide you guys with more info.

vmware-user-suid-wrapper error: could not open proc/fs/vmblock/dev

Hi,

I'm using Ubuntu 14.04.03. I have tried open-vm-tools packages 9.4.0-1280544-5ubuntu6 and 9.10.2-2822639-1ubuntu4~14.04.0.

When trying to execute vmware-user-suid-wrapper, the process exits with could not open /proc/fs/vmblock/dev. I think because of this DnD and clipboard do not work.

I have tried mounting the vmblock filesystem using vmware-vmblock-fuse command as suggested by https://gist.github.com/lloeki/62239da19ec25f90f215 onto /var/run/vmblock-fuse and onto /tmp/VMwareDnD. In both cases it mounts (mount target have: blockdir, dev), but vmware-user-suid-wrapper still exits with same error about /proc/fs/vmblock (and DnD and clipboard don't work). I can't mount it into /proc filesystem the way vmware-user-suid-wrapper seems to want me to do.

vixTools.c:2291: possible missing break ?

[vixTools.c:2291] -> [vixTools.c:2293]: (warning) Variable 'err' is reassigned a value before the old one has been used. 'break;' missing?

case VGAUTH_E_COMM:
err = VIX_E_FAIL;
case VGAUTH_E_NOTIMPLEMENTED:
err = VIX_E_NOT_SUPPORTED;
break;

Unable to compile hgfs module for Linux kernel 4.2.1

I'm using the open-vm-tools-dkms AUR package to compile the hgfs module for kernel version 4.2.1 (4.2.1-1-ARCH is the Arch specific version string). I am using VMWare Workstation Pro 12.

Building the modules fails and the build output in /var/lib/dkms/open-vm-tools/10.0.0/build/make.log is as follows:

hhunt /home/hhunt » cat /var/lib/dkms/open-vm-tools/10.0.0/build/make.log                                                                    
DKMS make.log for open-vm-tools-10.0.0 for kernel 4.2.1-1-ARCH (x86_64)
Wed 30 Sep 15:00:56 BST 2015
make: Entering directory '/var/lib/dkms/open-vm-tools/10.0.0/build/vmxnet'
Using kernel build system.
make -C /lib/modules/4.2.1-1-ARCH/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR=/var/lib/dkms/open-vm-tools/10.0.0/build modules
make[1]: Entering directory '/usr/lib/modules/4.2.1-1-ARCH/build'
  CC [M]  /var/lib/dkms/open-vm-tools/10.0.0/build/vmxnet/vmxnet.o
In file included from /var/lib/dkms/open-vm-tools/10.0.0/build/vmxnet/vmxnet.c:54:0:
/var/lib/dkms/open-vm-tools/10.0.0/build/vmxnet/./shared/vm_device_version.h:56:0: warning: "PCI_VENDOR_ID_VMWARE" redefined
 #define PCI_VENDOR_ID_VMWARE                    0x15AD
 ^
In file included from include/linux/pci.h:35:0,
                 from /var/lib/dkms/open-vm-tools/10.0.0/build/vmxnet/./shared/compat_pci.h:27,
                 from /var/lib/dkms/open-vm-tools/10.0.0/build/vmxnet/vmxnet.c:31:
include/linux/pci_ids.h:2252:0: note: this is the location of the previous definition
 #define PCI_VENDOR_ID_VMWARE  0x15ad
 ^
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /var/lib/dkms/open-vm-tools/10.0.0/build/vmxnet/vmxnet.mod.o
  LD [M]  /var/lib/dkms/open-vm-tools/10.0.0/build/vmxnet/vmxnet.ko
make[1]: Leaving directory '/usr/lib/modules/4.2.1-1-ARCH/build'
make -C $PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR=/var/lib/dkms/open-vm-tools/10.0.0/build postbuild
make[1]: Entering directory '/var/lib/dkms/open-vm-tools/10.0.0/build/vmxnet'
make[1]: 'postbuild' is up to date.
make[1]: Leaving directory '/var/lib/dkms/open-vm-tools/10.0.0/build/vmxnet'
cp -f vmxnet.ko ./../vmxnet.o
make: Leaving directory '/var/lib/dkms/open-vm-tools/10.0.0/build/vmxnet'
make: Entering directory '/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs'
Using kernel build system.
make -C /lib/modules/4.2.1-1-ARCH/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR=/var/lib/dkms/open-vm-tools/10.0.0/build modules
make[1]: Entering directory '/usr/lib/modules/4.2.1-1-ARCH/build'
  CC [M]  /var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/message.o
  CC [M]  /var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/rpcout.o
  CC [M]  /var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/filesystem.o
  CC [M]  /var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/cpName.o
  CC [M]  /var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/request.o
  CC [M]  /var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/cpNameUtilLinux.o
  CC [M]  /var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/stubs.o
  CC [M]  /var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/cpNameUtil.o
  CC [M]  /var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/hgfsUtil.o
  CC [M]  /var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/link.o
/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/link.c:59:21: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
    .follow_link   = HgfsFollowlink,
                     ^
/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/link.c:59:21: note: (near initialization for ‘HgfsLinkInodeOperations.follow_link’)
/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/link.c:61:21: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
    .put_link      = HgfsPutlink,
                     ^
/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/link.c:61:21: note: (near initialization for ‘HgfsLinkInodeOperations.put_link’)
/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/link.c: In function ‘HgfsFollowlink’:
/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/link.c:127:10: error: implicit declaration of function ‘nd_set_link’ [-Werror=implicit-function-declaration]
          nd_set_link(nd, fileName);
          ^
/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/link.c: In function ‘HgfsPutlink’:
/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/link.c:238:15: error: implicit declaration of function ‘nd_get_link’ [-Werror=implicit-function-declaration]
    fileName = nd_get_link(nd);
               ^
/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/link.c:238:13: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
    fileName = nd_get_link(nd);
             ^
cc1: some warnings being treated as errors
scripts/Makefile.build:258: recipe for target '/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/link.o' failed
make[2]: *** [/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs/link.o] Error 1
Makefile:1386: recipe for target '_module_/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs' failed
make[1]: *** [_module_/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs] Error 2
make[1]: Leaving directory '/usr/lib/modules/4.2.1-1-ARCH/build'
Makefile:120: recipe for target 'vmhgfs.ko' failed
make: *** [vmhgfs.ko] Error 2
make: Leaving directory '/var/lib/dkms/open-vm-tools/10.0.0/build/vmhgfs'

nd_{g,s}et_link() were removed by commit 680baacbca69, so the vmhgfs driver will need updating accordingly.

‘struct dentry

make
.
.
.
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/shared/kernelStubsSal.h:111:8: warning: "_SAL_VERSION" is not defined [-Wundef]
#elif _SAL_VERSION == 10
^
CC [M] /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/file.o
CC [M] /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/transport.o
CC [M] /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/module.o
CC [M] /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/super.o
CC [M] /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/bdhandler.o
CC [M] /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/fsutil.o
CC [M] /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/page.o
CC [M] /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.o
In file included from include/linux/list.h:8:0,
from include/linux/preempt.h:10,
from include/linux/spinlock.h:50,
from include/linux/mmzone.h:7,
from include/linux/gfp.h:5,
from include/linux/mm.h:9,
from include/linux/pagemap.h:7,
from /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:29:
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c: In function ‘HgfsPermission’:
include/linux/kernel.h:796:27: error: ‘struct dentry’ has no member named ‘d_alias’
const typeof( ((type _)0)->member ) *__mptr = (ptr);
^
include/linux/list.h:688:40: note: in expansion of macro ‘container_of’
#define hlist_entry(ptr, type, member) container_of(ptr,type,member)
^
include/linux/list.h:699:15: note: in expansion of macro ‘hlist_entry’
____ptr ? hlist_entry(___ptr, type, member) : NULL;
^
include/linux/list.h:709:13: note: in expansion of macro ‘hlist_entry_safe’
for (pos = hlist_entry_safe((head)->first, typeof(
(pos)), member);
^
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:1915:7: note: in expansion of macro ‘hlist_for_each_entry’
hlist_for_each_entry(dentry,
^
include/linux/kernel.h:796:48: warning: initialization from incompatible pointer type [enabled by default]
const typeof( ((type _)0)->member ) *__mptr = (ptr);
^
include/linux/list.h:688:40: note: in expansion of macro ‘container_of’
#define hlist_entry(ptr, type, member) container_of(ptr,type,member)
^
include/linux/list.h:699:15: note: in expansion of macro ‘hlist_entry’
____ptr ? hlist_entry(___ptr, type, member) : NULL;
^
include/linux/list.h:709:13: note: in expansion of macro ‘hlist_entry_safe’
for (pos = hlist_entry_safe((head)->first, typeof(
(pos)), member);
^
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:1915:7: note: in expansion of macro ‘hlist_for_each_entry’
hlist_for_each_entry(dentry,
^
In file included from include/linux/compiler-gcc.h:106:0,
from include/linux/compiler.h:54,
from include/uapi/linux/stddef.h:1,
from include/linux/stddef.h:4,
from ./include/uapi/linux/posix_types.h:4,
from include/uapi/linux/types.h:13,
from include/linux/types.h:5,
from /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/shared/driver-config.h:71,
from /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:26:
include/linux/compiler-gcc4.h:14:34: error: ‘struct dentry’ has no member named ‘d_alias’
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
^
include/linux/stddef.h:17:31: note: in expansion of macro ‘__compiler_offsetof’
#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
^
include/linux/kernel.h:797:29: note: in expansion of macro ‘offsetof’
(type _)( (char *)__mptr - offsetof(type,member) );})
^
include/linux/list.h:688:40: note: in expansion of macro ‘container_of’
#define hlist_entry(ptr, type, member) container_of(ptr,type,member)
^
include/linux/list.h:699:15: note: in expansion of macro ‘hlist_entry’
____ptr ? hlist_entry(__ptr, type, member) : NULL;
^
include/linux/list.h:709:13: note: in expansion of macro ‘hlist_entry_safe’
for (pos = hlist_entry_safe((head)->first, typeof(
(pos)), member);
^
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:1915:7: note: in expansion of macro ‘hlist_for_each_entry’
hlist_for_each_entry(dentry,
^
In file included from include/linux/preempt.h:10:0,
from include/linux/spinlock.h:50,
from include/linux/mmzone.h:7,
from include/linux/gfp.h:5,
from include/linux/mm.h:9,
from include/linux/pagemap.h:7,
from /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:29:
include/linux/list.h:711:35: error: ‘struct dentry’ has no member named ‘d_alias’
pos = hlist_entry_safe((pos)->member.next, typeof(
(pos)), member))
^
include/linux/list.h:698:12: note: in definition of macro ‘hlist_entry_safe’
({ typeof(ptr) ___ptr = (ptr);
^
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:1915:7: note: in expansion of macro ‘hlist_for_each_entry’
hlist_for_each_entry(dentry,
^
include/linux/list.h:711:35: error: ‘struct dentry’ has no member named ‘d_alias’
pos = hlist_entry_safe((pos)->member.next, typeof(
(pos)), member))
^
include/linux/list.h:698:28: note: in definition of macro ‘hlist_entry_safe’
({ typeof(ptr) ____ptr = (ptr);
^
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:1915:7: note: in expansion of macro ‘hlist_for_each_entry’
hlist_for_each_entry(dentry,
^
In file included from include/linux/list.h:8:0,
from include/linux/preempt.h:10,
from include/linux/spinlock.h:50,
from include/linux/mmzone.h:7,
from include/linux/gfp.h:5,
from include/linux/mm.h:9,
from include/linux/pagemap.h:7,
from /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:29:
include/linux/kernel.h:796:27: error: ‘struct dentry’ has no member named ‘d_alias’
const typeof( ((type _)0)->member ) *__mptr = (ptr);
^
include/linux/list.h:688:40: note: in expansion of macro ‘container_of’
#define hlist_entry(ptr, type, member) container_of(ptr,type,member)
^
include/linux/list.h:699:15: note: in expansion of macro ‘hlist_entry’
____ptr ? hlist_entry(___ptr, type, member) : NULL;
^
include/linux/list.h:711:13: note: in expansion of macro ‘hlist_entry_safe’
pos = hlist_entry_safe((pos)->member.next, typeof(
(pos)), member))
^
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:1915:7: note: in expansion of macro ‘hlist_for_each_entry’
hlist_for_each_entry(dentry,
^
include/linux/kernel.h:796:48: warning: initialization makes pointer from integer without a cast [enabled by default]
const typeof( ((type _)0)->member ) *__mptr = (ptr);
^
include/linux/list.h:688:40: note: in expansion of macro ‘container_of’
#define hlist_entry(ptr, type, member) container_of(ptr,type,member)
^
include/linux/list.h:699:15: note: in expansion of macro ‘hlist_entry’
____ptr ? hlist_entry(___ptr, type, member) : NULL;
^
include/linux/list.h:711:13: note: in expansion of macro ‘hlist_entry_safe’
pos = hlist_entry_safe((pos)->member.next, typeof(
(pos)), member))
^
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:1915:7: note: in expansion of macro ‘hlist_for_each_entry’
hlist_for_each_entry(dentry,
^
In file included from include/linux/compiler-gcc.h:106:0,
from include/linux/compiler.h:54,
from include/uapi/linux/stddef.h:1,
from include/linux/stddef.h:4,
from ./include/uapi/linux/posix_types.h:4,
from include/uapi/linux/types.h:13,
from include/linux/types.h:5,
from /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/shared/driver-config.h:71,
from /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:26:
include/linux/compiler-gcc4.h:14:34: error: ‘struct dentry’ has no member named ‘d_alias’
#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
^
include/linux/stddef.h:17:31: note: in expansion of macro ‘__compiler_offsetof’
#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
^
include/linux/kernel.h:797:29: note: in expansion of macro ‘offsetof’
(type _)( (char *)__mptr - offsetof(type,member) );})
^
include/linux/list.h:688:40: note: in expansion of macro ‘container_of’
#define hlist_entry(ptr, type, member) container_of(ptr,type,member)
^
include/linux/list.h:699:15: note: in expansion of macro ‘hlist_entry’
____ptr ? hlist_entry(___ptr, type, member) : NULL;
^
include/linux/list.h:711:13: note: in expansion of macro ‘hlist_entry_safe’
pos = hlist_entry_safe((pos)->member.next, typeof(
(pos)), member))
^
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.c:1915:7: note: in expansion of macro ‘hlist_for_each_entry’
hlist_for_each_entry(dentry,
^
scripts/Makefile.build:257: recipe for target '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.o' failed
make[4]: *** [/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs/inode.o] Error 1
Makefile:1381: recipe for target 'module/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs' failed
make[3]: *** [module/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs] Error 2
make[3]: Leaving directory '/usr/src/linux-3.18.11-gentoo'
Makefile:120: recipe for target 'vmhgfs.ko' failed
make[2]: *** [vmhgfs.ko] Error 2
make[2]: Leaving directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmhgfs'
Makefile:500: recipe for target 'vmhgfs' failed
make[1]: *** [vmhgfs] Error 2
make[1]: Leaving directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules'
Makefile:361: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
localhost open-vm-tools-9.10.0-2476743 #

vmware-hostd crashes on unrecognized Linux distribution

While this is probably a Workstation bug, it's possible to work around it by patching vmtoolsd, so I thought I'd make a report here so that it can be forwarded to the right place. (BTW, you might want to indicate in the readme on the master branch that this repo isn't dead, because it looks like the code hasn't been touched for two years unless you click around and notice that there's been activity in the branches.)

I reported this on the VMware forum:

When running a VM as a shared VM on Workstation 11, vmware-hostd crashes repeatedly if vmtoolsd is running in the guest and the distribution isn't recognized by vmware-hostd. This causes all shared VMs to disappear from the GUI, though they will continue to run if they are already running. Stopping vmtoolsd and restarting the shared VM service makes the VMs reappear, but if you restart vmtoolsd, the service will crash again. This happens for me with Arch Linux 64-bit and vmtoolsd from open-vm-tools; probably it is an issue on many other distributions too. Here is the relevant line from the hostd log file:

2015-01-06T16:52:51.141+09:00 [07580 error 'Default' opID=17217a18] Unable to convert Vigor value 'Arch-64' of type 'char const *' to VIM type 'enum Vim::Vm::GuestOsDescriptor::GuestOsIdentifier'

The patch in that thread is a hack to prevent vmtoolsd from providing the information that ultimately makes vmware-hostd crash. In case someone sees this thread hoping for a quick fix, here's an updated one for 9.10.2 (cd to open-vm-tools-stable-9.10.2/open-vm-tools and apply with patch -p2):

--- open-vm-tools-stable-9.10.2/open-vm-tools/lib/misc/hostinfoPosix.c.old  2015-06-17 06:49:24.000000000 +0900
+++ open-vm-tools-stable-9.10.2/open-vm-tools/lib/misc/hostinfoPosix.c  2015-07-22 00:26:59.716488677 +0900
@@ -457,387 +457,6 @@
 }


-#if !defined __APPLE__ && !defined USERWORLD
-/*
- *-----------------------------------------------------------------------------
- *
- * HostinfoGetOSShortName --
- *
- *      Returns distro information based on .vmx format (distroShort).
- *
- * Return value:
- *      Overwrited the short name if we recognise the OS.
- *      Otherwise leave the short name as it is.
- *
- * Side effects:
- *      None
- *
- *-----------------------------------------------------------------------------
- */
-
-static void
-HostinfoGetOSShortName(char *distro,         // IN: full distro name
-                       char *distroShort,    // OUT: short distro name
-                       int distroShortSize)  // IN: size of short distro name
-
-{
-   char *distroLower = NULL;  /* Lower case distro name */
-
-   distroLower = calloc(strlen(distro) + 1, sizeof *distroLower);
-
-   if (distroLower == NULL) {
-      Warning("%s: could not allocate memory\n", __FUNCTION__);
-
-      return;
-   }
-
-   Str_Strcpy(distroLower, distro, distroShortSize);
-   distroLower = Str_ToLower(distroLower);
-
-   if (strstr(distroLower, "red hat")) {
-      if (strstr(distroLower, "enterprise")) {
-
-         /*
-          * Looking for "release x" here instead of "x" as there could be
-          * build version which can be misleading. For example Red Hat
-          * Enterprise Linux ES release 4 (Nahant Update 3)
-          */
-
-         int release = 0;
-         char *releaseStart = strstr(distroLower, "release");
-
-         if (releaseStart) {
-            sscanf(releaseStart, "release %d", &release);
-            if (release > 0) {
-               snprintf(distroShort, distroShortSize, STR_OS_RED_HAT_EN"%d",
-                        release);
-            }
-         }
-
-         if (release <= 0) {
-            Warning("%s: could not read Red Hat Enterprise release version\n",
-                  __FUNCTION__);
-            Str_Strcpy(distroShort, STR_OS_RED_HAT_EN, distroShortSize);
-         }
-
-      } else {
-         Str_Strcpy(distroShort, STR_OS_RED_HAT, distroShortSize);
-      }
-   } else if (strstr(distroLower, "opensuse")) {
-      Str_Strcpy(distroShort, STR_OS_OPENSUSE, distroShortSize);
-   } else if (strstr(distroLower, "suse")) {
-      if (strstr(distroLower, "enterprise")) {
-         if (strstr(distroLower, "server 12") ||
-             strstr(distroLower, "desktop 12")) {
-            Str_Strcpy(distroShort, STR_OS_SLES_12, distroShortSize);
-         } else if (strstr(distroLower, "server 11") ||
-                    strstr(distroLower, "desktop 11")) {
-            Str_Strcpy(distroShort, STR_OS_SLES_11, distroShortSize);
-         } else if (strstr(distroLower, "server 10") ||
-                    strstr(distroLower, "desktop 10")) {
-            Str_Strcpy(distroShort, STR_OS_SLES_10, distroShortSize);
-         } else {
-            Str_Strcpy(distroShort, STR_OS_SLES, distroShortSize);
-         }
-      } else if (strstr(distroLower, "sun")) {
-         Str_Strcpy(distroShort, STR_OS_SUN_DESK, distroShortSize);
-      } else if (strstr(distroLower, "novell")) {
-         Str_Strcpy(distroShort, STR_OS_NOVELL, distroShortSize);
-      } else {
-         Str_Strcpy(distroShort, STR_OS_SUSE, distroShortSize);
-      }
-   } else if (strstr(distroLower, "mandrake")) {
-      Str_Strcpy(distroShort, STR_OS_MANDRAKE, distroShortSize);
-   } else if (strstr(distroLower, "turbolinux")) {
-      Str_Strcpy(distroShort, STR_OS_TURBO, distroShortSize);
-   } else if (strstr(distroLower, "sun")) {
-      Str_Strcpy(distroShort, STR_OS_SUN_DESK, distroShortSize);
-   } else if (strstr(distroLower, "annvix")) {
-      Str_Strcpy(distroShort, STR_OS_ANNVIX, distroShortSize);
-   } else if (strstr(distroLower, "arch")) {
-      Str_Strcpy(distroShort, STR_OS_ARCH, distroShortSize);
-   } else if (strstr(distroLower, "arklinux")) {
-      Str_Strcpy(distroShort, STR_OS_ARKLINUX, distroShortSize);
-   } else if (strstr(distroLower, "asianux server 3") ||
-              strstr(distroLower, "asianux client 3")) {
-      Str_Strcpy(distroShort, STR_OS_ASIANUX_3, distroShortSize);
-   } else if (strstr(distroLower, "asianux server 4") ||
-              strstr(distroLower, "asianux client 4")) {
-      Str_Strcpy(distroShort, STR_OS_ASIANUX_4, distroShortSize);
-   } else if (strstr(distroLower, "asianux server 5") ||
-              strstr(distroLower, "asianux client 5")) {
-      Str_Strcpy(distroShort, STR_OS_ASIANUX_5, distroShortSize);
-   } else if (strstr(distroLower, "aurox")) {
-      Str_Strcpy(distroShort, STR_OS_AUROX, distroShortSize);
-   } else if (strstr(distroLower, "black cat")) {
-      Str_Strcpy(distroShort, STR_OS_BLACKCAT, distroShortSize);
-   } else if (strstr(distroLower, "cobalt")) {
-      Str_Strcpy(distroShort, STR_OS_COBALT, distroShortSize);
-   } else if (StrUtil_StartsWith(distroLower, "centos")) {
-      Str_Strcpy(distroShort, STR_OS_CENTOS, distroShortSize);
-   } else if (strstr(distroLower, "conectiva")) {
-      Str_Strcpy(distroShort, STR_OS_CONECTIVA, distroShortSize);
-   } else if (strstr(distroLower, "debian")) {
-      if (strstr(distroLower, "4.0")) {
-         Str_Strcpy(distroShort, STR_OS_DEBIAN_4, distroShortSize);
-      } else if (strstr(distroLower, "5.0")) {
-         Str_Strcpy(distroShort, STR_OS_DEBIAN_5, distroShortSize);
-      } else if (strstr(distroLower, "6.0")) {
-         Str_Strcpy(distroShort, STR_OS_DEBIAN_6, distroShortSize);
-      } else if (strstr(distroLower, "7.")) {
-         Str_Strcpy(distroShort, STR_OS_DEBIAN_7, distroShortSize);
-      } else if (strstr(distroLower, "8.")) {
-         Str_Strcpy(distroShort, STR_OS_DEBIAN_8, distroShortSize);
-      }
-   } else if (StrUtil_StartsWith(distroLower, "enterprise linux") ||
-              StrUtil_StartsWith(distroLower, "oracle")) {
-      /*
-       * [root@localhost ~]# lsb_release -sd
-       * "Enterprise Linux Enterprise Linux Server release 5.4 (Carthage)"
-       *
-       * Not sure why they didn't brand their releases as "Oracle Enterprise
-       * Linux". Oh well. It's fixed in 6.0, though.
-       */
-      Str_Strcpy(distroShort, STR_OS_ORACLE, distroShortSize);
-   } else if (strstr(distroLower, "fedora")) {
-      Str_Strcpy(distroShort, STR_OS_FEDORA, distroShortSize);
-   } else if (strstr(distroLower, "gentoo")) {
-      Str_Strcpy(distroShort, STR_OS_GENTOO, distroShortSize);
-   } else if (strstr(distroLower, "immunix")) {
-      Str_Strcpy(distroShort, STR_OS_IMMUNIX, distroShortSize);
-   } else if (strstr(distroLower, "linux-from-scratch")) {
-      Str_Strcpy(distroShort, STR_OS_LINUX_FROM_SCRATCH, distroShortSize);
-   } else if (strstr(distroLower, "linux-ppc")) {
-      Str_Strcpy(distroShort, STR_OS_LINUX_PPC, distroShortSize);
-   } else if (strstr(distroLower, "mandriva")) {
-      Str_Strcpy(distroShort, STR_OS_MANDRIVA, distroShortSize);
-   } else if (strstr(distroLower, "mklinux")) {
-      Str_Strcpy(distroShort, STR_OS_MKLINUX, distroShortSize);
-   } else if (strstr(distroLower, "pld")) {
-      Str_Strcpy(distroShort, STR_OS_PLD, distroShortSize);
-   } else if (strstr(distroLower, "slackware")) {
-      Str_Strcpy(distroShort, STR_OS_SLACKWARE, distroShortSize);
-   } else if (strstr(distroLower, "sme server")) {
-      Str_Strcpy(distroShort, STR_OS_SMESERVER, distroShortSize);
-   } else if (strstr(distroLower, "tiny sofa")) {
-      Str_Strcpy(distroShort, STR_OS_TINYSOFA, distroShortSize);
-   } else if (strstr(distroLower, "ubuntu")) {
-      Str_Strcpy(distroShort, STR_OS_UBUNTU, distroShortSize);
-   } else if (strstr(distroLower, "ultra penguin")) {
-      Str_Strcpy(distroShort, STR_OS_ULTRAPENGUIN, distroShortSize);
-   } else if (strstr(distroLower, "united linux")) {
-      Str_Strcpy(distroShort, STR_OS_UNITEDLINUX, distroShortSize);
-   } else if (strstr(distroLower, "va linux")) {
-      Str_Strcpy(distroShort, STR_OS_VALINUX, distroShortSize);
-   } else if (strstr(distroLower, "yellow dog")) {
-      Str_Strcpy(distroShort, STR_OS_YELLOW_DOG, distroShortSize);
-   }
-
-   free(distroLower);
-}
-
-
-/*
- *-----------------------------------------------------------------------------
- *
- * HostinfoReadDistroFile --
- *
- *      Look for a distro version file /etc/xxx-release.
- *      Once found, read the file in and figure out which distribution.
- *
- * Return value:
- *      Returns TRUE on success and FALSE on failure.
- *      Returns distro information verbatium from /etc/xxx-release (distro).
- *
- * Side effects:
- *      None
- *
- *-----------------------------------------------------------------------------
- */
-
-static Bool
-HostinfoReadDistroFile(char *filename,  // IN: distro version file name
-                       int distroSize,  // IN: size of OS distro name buffer
-                       char *distro)    // OUT: full distro name
-{
-   int fd = -1;
-   int buf_sz;
-   struct stat st;
-   Bool ret = FALSE;
-   char *distroOrig = NULL;
-   char distroPart[DISTRO_BUF_SIZE];
-   char *tmpDistroPos = NULL;
-   int i = 0;
-
-   /* It's OK for the file to not exist, don't warn for this.  */
-   if ((fd = Posix_Open(filename, O_RDONLY)) == -1) {
-      return FALSE;
-   }
-
-   if (fstat(fd, &st)) {
-      Warning("%s: could not stat the file %s: %d\n", __FUNCTION__, filename,
-           errno);
-      goto out;
-   }
-
-   if (st.st_size == 0) {
-      Warning("%s: Cannot work with empty file.\n", __FUNCTION__);
-      goto out;
-   }
-
-   buf_sz = st.st_size;
-   if (buf_sz >= distroSize) {
-      Warning("%s: input buffer too small\n", __FUNCTION__);
-      goto out;
-   }
-   distroOrig = calloc(distroSize, sizeof *distroOrig);
-
-   if (distroOrig == NULL) {
-      Warning("%s: could not allocate memory\n", __FUNCTION__);
-      goto out;
-   }
-
-   if (read(fd, distroOrig, buf_sz) != buf_sz) {
-      Warning("%s: could not read file %s: %d\n", __FUNCTION__, filename,
-              errno);
-      goto out;
-   }
-
-   distroOrig[buf_sz - 1] = '\0';
-
-   /*
-    * For the case where we do have a release file in the LSB format,
-    * but there is no LSB module, let's parse the LSB file for possible fields.
-    */
-
-   distro[0] = '\0';
-
-   for (i = 0; lsbFields[i].name != NULL; i++) {
-      tmpDistroPos = strstr(distroOrig, lsbFields[i].name);
-      if (tmpDistroPos) {
-         sscanf(tmpDistroPos, lsbFields[i].scanstring, distroPart);
-         if (distroPart[0] == '"') {
-            char *tmpMakeNull = NULL;
-
-            tmpDistroPos += strlen(lsbFields[i].name) + 1;
-            tmpMakeNull = strchr(tmpDistroPos + 1 , '"');
-            if (tmpMakeNull) {
-               *tmpMakeNull = '\0';
-               Str_Strcat(distro, tmpDistroPos, distroSize);
-               *tmpMakeNull = '"' ;
-            }
-         } else {
-            Str_Strcat(distro, distroPart, distroSize);
-         }
-         Str_Strcat(distro, " ", distroSize);
-      }
-   }
-
-   if (distro[0] == '\0') {
-      /* Copy original string. What we got wasn't LSB compliant. */
-      Str_Strcpy(distro, distroOrig, distroSize);
-   }
-
-   ret = TRUE;
-
-out:
-   if (fd != -1) {
-      close(fd);
-   }
-   free(distroOrig);
-
-   return ret;
-}
-
-
-/*
- *----------------------------------------------------------------------
- *
- * HostinfoGetCmdOutput --
- *
- *      Run a cmd & get its cmd line output
- *
- * Results:
- *      An allocated string or NULL if an error occurred.
- *
- * Side effects:
- * The cmd is run.
- *
- *----------------------------------------------------------------------
- */
-
-static char *
-HostinfoGetCmdOutput(const char *cmd)  // IN:
-{
-   Bool isSuperUser = FALSE;
-   DynBuf db;
-   FILE *stream;
-   char *out = NULL;
-
-   /*
-    * Attempt to lower privs, because we use popen and an attacker
-    * may control $PATH.
-    */
-   if (vmx86_linux && Id_IsSuperUser()) {
-      Id_EndSuperUser(getuid());
-      isSuperUser = TRUE;
-   }
-
-   DynBuf_Init(&db);
-
-   stream = Posix_Popen(cmd, "r");
-   if (stream == NULL) {
-      Warning("Unable to get output of command \"%s\"\n", cmd);
-
-      goto exit;
-   }
-
-   for (;;) {
-      char *line = NULL;
-      size_t size;
-
-      switch (StdIO_ReadNextLine(stream, &line, 0, &size)) {
-      case StdIO_Error:
-         goto closeIt;
-         break;
-
-      case StdIO_EOF:
-         break;
-
-      case StdIO_Success:
-         break;
-
-      default:
-         NOT_IMPLEMENTED();
-      }
-
-      if (line == NULL) {
-         break;
-      }
-
-      /* size does -not- include the NUL terminator. */
-      DynBuf_Append(&db, line, size + 1);
-      free(line);
-   }
-
-   if (DynBuf_Get(&db)) {
-      out = (char *) DynBuf_AllocGet(&db);
-   }
-
- closeIt:
-   pclose(stream);
-
- exit:
-   DynBuf_Destroy(&db);
-
-   if (isSuperUser) {
-      Id_BeginSuperUser();
-   }
-   return out;
-}
-#endif // !defined __APPLE__ && !defined USERWORLD
-
-
 /*
  *-----------------------------------------------------------------------------
  *
@@ -947,7 +566,6 @@
       char distro[DISTRO_BUF_SIZE];
       char distroShort[DISTRO_BUF_SIZE];
       static int const distroSize = sizeof distro;
-      char *lsbOutput;
       int majorVersion;

       /*
@@ -970,61 +588,6 @@
          Str_Strcpy(distroShort, STR_OS_OTHER_3X, distroSize);
       }

-      /*
-       * Try to get OS detailed information from the lsb_release command.
-       */
-
-      lsbOutput = HostinfoGetCmdOutput("/usr/bin/lsb_release -sd 2>/dev/null");
-      if (!lsbOutput) {
-         int i;
-
-         /*
-          * Try to get more detailed information from the version file.
-          */
-
-         for (i = 0; distroArray[i].filename != NULL; i++) {
-            if (HostinfoReadDistroFile(distroArray[i].filename, distroSize,
-                                       distro)) {
-               break;
-            }
-         }
-
-         /*
-          * If we failed to read every distro file, exit now, before calling
-          * strlen on the distro buffer (which wasn't set).
-          */
-
-         if (distroArray[i].filename == NULL) {
-            Warning("%s: Error: no distro file found\n", __FUNCTION__);
-
-            return FALSE;
-         }
-      } else {
-         char *lsbStart = lsbOutput;
-         char *quoteEnd = NULL;
-
-         if (lsbStart[0] == '"') {
-            lsbStart++;
-            quoteEnd = strchr(lsbStart, '"');
-            if (quoteEnd) {
-               *quoteEnd = '\0';
-            }
-         }
-         Str_Strcpy(distro, lsbStart, distroSize);
-         free(lsbOutput);
-      }
-
-      HostinfoGetOSShortName(distro, distroShort, distroSize);
-
-      if (strlen(distro) + strlen(osNameFull) + 2 > sizeof osNameFull) {
-         Warning("%s: Error: buffer too small\n", __FUNCTION__);
-
-         return FALSE;
-      }
-
-      Str_Strcat(osNameFull, " ", sizeof osNameFull);
-      Str_Strcat(osNameFull, distro, sizeof osNameFull);
-
       if (strlen(distroShort) + 1 > sizeof osName) {
          Warning("%s: Error: buffer too small\n", __FUNCTION__);

Multimon on Linux guest: pointer crossing screen in fullscreen disappears

Hi,

I have the latest tools 9.10.0.2476743 on Gentoo Linux.
I'm using x11-base/xorg-server-1.17.1-r1 and xfce-base/xfwm4-4.12.2.
This is VMware Workstatation 11.1.0 on Windows 7.

Crossing the monitor borders to the next screen in fullscreen makes the mousepointer disappear for 1 second which is very annoying. Dragging windows from one screen to the other gets frozen for that 1 second. I always had that issue with older official tools, so looking for the latest version and coming to open-vm-tools.

It feels like in the middle for the screen the host get's the pointer. So I tried Exclusive mode, but doesn't help.

I thought about using a usual scaled window of the workstation scaled over both screens, this does not have the issue but Windows or Workstation does not have a function to remove the window decoration.

Support XFS filesystem?

XFS filesystem is a popular file system and used as default on RHEL7/CentOS7.
However, an open-vm-tools doesn't support XFS.

Will open-vm-tools support XFS at an early date?

I want to get partition sizes with vsphere API or mob.

AC_VMW_CHECK_LIB troubles

the current AC_VMW_CHECK_LIB currently only works for native builds and fails badly when trying to cross-compile due to:

  • it hardcodes "pkg-config" instead of standard PKG_CHECK_MODULES ... at the very least, it should utilize AC_CHECK_TOOL and respect the $PKG_CONFIG env var
  • it should use AC_CHECK_TOOL instead of AC_PATH_PROG to look for the fallback xxx-config scripts

Multimon on Linux guest: HardwareAcceleration breaking multimon

Hi,

I have the latest tools 9.10.0.2476743 on Gentoo Linux.
I'm using x11-base/xorg-server-1.17.1-r1 and xfce-base/xfwm4-4.12.2.
This is VMware Workstatation 11.1.0 on Windows 7.

Starting firefox with a stored session of multiple windows breaks the multiscreen.
Both screens are still visible, but the pointer disappears on one screen and doesn't accept control anymore. I always need to reset multiscreen by "Cycle multiple monitors" which means that all windows on all virtual desktops are reset to one screen only and need to be re-arranged.

I always had that issue with older official tools, so looking for the latest version and coming to open-vm-tools.

Xfce4 on native Linux does not have these issues. Firefox is the only application causing this. A running Firefox instance for days works fine, only restart causes the issue. Firefox is the only application I know using the XSHM feature which could be related to this issue.

open-vm-tools doesn't allow for customizing OSes hostname

In ESXI I can create custom settings to apply custom settings- the main one being "change hostname to vm name". This is extremely useful for puppet templates.

This works fine on my image that uses vmware tools, but creating an image with open-vm-tools fails to handle the hostname change.

Unable to build on RHEL/CentOS 6

I'm trying to update open-vm-tools in epel-6, but the build fails on VGAuth:

mv -f .deps/VGAuthService-ticket.Tpo .deps/VGAuthService-ticket.Po
mv -f .deps/VGAuthService-service.Tpo .deps/VGAuthService-service.Po
mv -f .deps/VGAuthService-verify.Tpo .deps/VGAuthService-verify.Po
../serviceImpl/saml.cpp: In function 'bool SAMLCheckSubject(const xercesc_3_0::DOMDocument*, SAMLTokenData&)':
../serviceImpl/saml.cpp:790: error: 'const class xercesc_3_0::DOMElement' has no member named 'getFirstElementChild'
../serviceImpl/saml.cpp:791: error: 'class xercesc_3_0::DOMElement' has no member named 'getNextElementSibling'
../serviceImpl/saml.cpp: In function 'xercesc_3_0::DOMElement* SAMLFindChildByName(const xercesc_3_0::DOMElement*, const char*)':
../serviceImpl/saml.cpp:1218: error: 'const class xercesc_3_0::DOMElement' has no member named 'getFirstElementChild'
../serviceImpl/saml.cpp:1219: error: 'class xercesc_3_0::DOMElement' has no member named 'getNextElementSibling'
make[2]: Leaving directory `/builddir/build/BUILD/open-vm-tools-9.10.2-2822639/vgauth/service'
make[2]: *** [VGAuthService-saml.o] Error 1
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/builddir/build/BUILD/open-vm-tools-9.10.2-2822639/vgauth'
make: *** [all-recursive] Error 1

RHEL/CentOS 6 has xerces 3.0, while Fedora and RHEL/CentOS 7 do have 3.1.

error: ‘struct net_device’ has no member named ‘do_ioctl’

mv -f .deps/xferlogs.Tpo .deps/xferlogs.Po
/bin/sh ../libtool --tag=CXX --mode=link g++ -g -O2 -o vmware-xferlogs xferlogs.o /root/open-vm-tools/open-vm-tools-9.10.0-2476743/libvmtools/libvmtools.la -lglib-2.0 -L/usr/lib64 -licui18n -licuuc -licudata
libtool: link: g++ -g -O2 -o .libs/vmware-xferlogs xferlogs.o /root/open-vm-tools/open-vm-tools-9.10.0-2476743/libvmtools/.libs/libvmtools.so -L/usr/lib64 -ldnet -ldl -lrt -lcrypt -lpthread -lssl -lcrypto -lglib-2.0 -licui18n -licuuc -licudata
make[1]: Leaving directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/xferlogs'
Making all in modules
make[1]: Entering directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules'
make VM_UNAME=3.18.11-gentoo MV=mv RM=rm
OVT_SOURCE_DIR=/root/open-vm-tools/open-vm-tools-9.10.0-2476743
MODULEBUILDDIR=/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux
-C "/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmxnet"
make[2]: Entering directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmxnet'
Using kernel build system.
make -C /lib/modules/3.18.11-gentoo/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/.
MODULEBUILDDIR=/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux modules
make[3]: Entering directory '/usr/src/linux-3.18.11-gentoo'
make[3]: Warning: File '.vmlinux.cmd' has modification time 2450903 s in the future
make[4]: Warning: File 'include/config/auto.conf' has modification time 2450395 s in the future
CC [M] /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmxnet/vmxnet.o
In file included from /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmxnet/vmxnet.c:54:0:
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/lib/include/vm_device_version.h:56:0: warning: "PCI_VENDOR_ID_VMWARE" redefined [enabled by default]
#define PCI_VENDOR_ID_VMWARE 0x15AD
^
In file included from include/linux/pci.h:34:0,
from /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/shared/compat_pci.h:27,
from /root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmxnet/vmxnet.c:31:
include/linux/pci_ids.h:2248:0: note: this is the location of the previous definition
#define PCI_VENDOR_ID_VMWARE 0x15ad
^
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmxnet/vmxnet.c: In function ‘vmxnet_probe_device’:
/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmxnet/vmxnet.c:1148:7: error: ‘struct net_device’ has no member named ‘do_ioctl’
dev->do_ioctl = vmxnet_ioctl;
^
scripts/Makefile.build:263: recipe for target '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmxnet/vmxnet.o' failed
make[4]: *** [/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmxnet/vmxnet.o] Error 1
Makefile:1381: recipe for target 'module/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmxnet' failed
make[3]: *** [module/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmxnet] Error 2
make[3]: Leaving directory '/usr/src/linux-3.18.11-gentoo'
Makefile:120: recipe for target 'vmxnet.ko' failed
make[2]: *** [vmxnet.ko] Error 2
make[2]: Leaving directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules/linux/vmxnet'
Makefile:500: recipe for target 'vmxnet' failed
make[1]: *** [vmxnet] Error 2
make[1]: Leaving directory '/root/open-vm-tools/open-vm-tools-9.10.0-2476743/modules'
Makefile:361: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
localhost open-vm-tools-9.10.0-2476743 #

will look at https://github.com/davispuh/open-vm-tools/commit/08836a47c56b47b658025e41a20027c5d915f836.patch and https://github.com/rasa/vmware-tools-patches for a fix for now.

Cannot compile on Debian testing/stretch with gtkmm

While trying to compile the code using the configure options:

./configure --disable-deploypkg

the compilation fails, with the first error being:

In file included from /usr/include/c++/5/type_traits:35:0,
                 from /usr/include/sigc++-2.0/sigc++/visit_each.h:22,
                 from /usr/include/sigc++-2.0/sigc++/functors/slot.h:6,
                 from /usr/include/sigc++-2.0/sigc++/signal_base.h:27,
                 from /usr/include/sigc++-2.0/sigc++/signal.h:8,
                 from /usr/include/sigc++-2.0/sigc++/connection.h:22,
                 from ../../../../services/plugins/dndcp/dnd/copyPasteRpc.hh:28,
                 from ../../../../services/plugins/dndcp/dndGuest/copyPasteRpcV3.hh:29,
                 from ../../../../services/plugins/dndcp/dndGuest/copyPasteRpcV3.cc:26:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options

If I use the configure options:

    ./configure --disable-deploypkg --disable-gtkmm

the compilation succeed but then copy and paste doesn't work anymore, which is quite important to me.

Is thre any workaround? If you need more information about my environment, feel free to ask. Basically, it's a freshly installed Debian Stretch.

No rule to make target '.deps/nicinfo_xdr.Plo' when compiling open-vm-tools 10.0.5 on FreeBSD 10.2-RELEASE

When I tried to configure open-vm-tools 10.0.5 on FreeBSD 10.2-RELEASE, the configure script executed properly, but I was unable to build:

$ gmake
Making all in lib
gmake[1]: Entering directory '/usr/home/dcarmich/open-vm-tools-10.0.5-3227872/lib'
Making all in guestRpc
gmake[2]: Entering directory '/usr/home/dcarmich/open-vm-tools-10.0.5-3227872/lib/guestRpc'
Makefile:331: .deps/nicinfo_xdr.Plo: No such file or directory
gmake[2]: *** No rule to make target '.deps/nicinfo_xdr.Plo'.  Stop.
gmake[2]: Leaving directory '/usr/home/dcarmich/open-vm-tools-10.0.5-3227872/lib/guestRpc'
Makefile:330: recipe for target 'all-recursive' failed
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory '/usr/home/dcarmich/open-vm-tools-10.0.5-3227872/lib'
Makefile:361: recipe for target 'all-recursive' failed
gmake: *** [all-recursive] Error 1

I have gmake version 4.1 installed, would this be a version issue?

Cannot install in newly-released pfsense 2.2.3

I just installed pfsense 2.2.3 on my vmware esxi 6.0 host, but when I try to install open-vm-tools I get different errors for each different installation attempt. The errors are:

1.) ERROR: Failed to read PBI header! Possible corrupt PBI, or wrong PBI version for this OS.

2.) Verifying Checksum...SKIP_ARCHLINES: 67
Archive checksum: ab39b91f1552b5d702703668d976c15daa3fba706c6388c82c57a07157546b4f
Saved checksum: 6ce8ce1af97f35fceff5f46bd829d9440f7b050453343f81fabd5ed39fc0b86f
ERROR: /tmp/apkg_open-vm-tools-1280544_9-amd64.pbi failed checksum, the archive may be corrupt.
of open-vm-tools-1280544_9-amd64 failed!

Hoping for your help. Thanks.

Centos 7

got this problem, any help?

configure: error: Can't find include dir under /lib/modules/3.10.0-229.el7.x86_64

Include cstring to avoid 'memset not in scope' error

When compiling open-vm-tools-9.10.0-2476743 with gcc4.3, I see the following errors:

[   84s] xutils/xutils.cc: In function 'void xutils::SetFullscreenMonitorsHint(Glib::RefPtr<Gdk::Window>, std::vector<long int, std::allocator<long int> >)':
[   84s] xutils/xutils.cc:406: error: 'memset' was not declared in this scope
[   84s] xutils/xutils.cc: In function 'void xutils::RaiseWindowInternal(Glib::RefPtr<Gdk::Window>, Glib::RefPtr<Gdk::Window>, guint32)':
[   84s] xutils/xutils.cc:733: error: 'memset' was not declared in this scope
[   84s] xutils/xutils.cc: In function 'void xutils::ChangeEWMHWindowState(bool, Glib::RefPtr<Gdk::Window>, _GdkAtom*, _GdkAtom*)':
[   84s] xutils/xutils.cc:1254: error: 'memset' was not declared in this scope

The problem is due to the older version of gcc failing to automatically track down and include cstring. The following simple fix resolves the issue in my environment, and should not cause any problems in newer gcc environments. (I've tested against 4.3 and 4.8.)

Index: open-vm-tools-9.10.0-2476743/services/plugins/dndcp/xutils/xutils.cc
===================================================================
--- open-vm-tools-9.10.0-2476743.orig/services/plugins/dndcp/xutils/xutils.cc
+++ open-vm-tools-9.10.0-2476743/services/plugins/dndcp/xutils/xutils.cc
@@ -29,6 +29,7 @@
 #include <X11/Xlib.h>
 #include <X11/Xatom.h>
 #include <gdk/gdkx.h>
+#include <cstring>

 extern "C" {
 #include "vm_assert.h"

after make install, no services or modules are launched

Hi,

This is the first time i am using openvm tools, i would like to install them from compiling. I patched the code source from git to match my kernel, and started make install which work perfectly without a mistake, then used ldconfig to resolve library paths. But when i reboot, i cannot find processes of vmtoolsd, nor launched kernel modules, i tried to add vmtoolsd to init.d script but this process doesn't seem to do anything.
For exemple i tried to activate the log feature but without any services, i doubt changing the config file will do anything.
What should i do to use the general features of open-vm-tools ? i am a little lost.

Freebsd Compile Error

libDeployPkg/processPosix.c needs

include <signal.h>

or compile will fail with

processPosix.c: In function 'Process_RunToComplete':
processPosix.c:180:13: error: implicit declaration of function 'kill' [-Werror=implicit-function-declaration]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.