open-vm-tools: fork for testing purposes

This commit is contained in:
Anton Bolshakov 2013-06-01 02:44:03 +00:00
parent 44f3c07361
commit 639d3b0f56
11 changed files with 475 additions and 0 deletions

View file

@ -0,0 +1,5 @@
AUX fragsize.patch 4543 SHA256 fee39ad39fb9d3d84bfa09b7a51096ffc7d1f65f78a227ab591c0c006eef9f8e SHA512 96566f82bf7b0fa78444823062d847e73a9b3020c6b873a6c838efe8ad2b1a317f7b1acaf55bb4f24d1d4974dd78f4baf2091d3dac6a4dfad6172af7a4188c82 WHIRLPOOL 762534c4b1c088df67dfc0f1ae6fdf0c3b5014bc2946a50d0571a5df14d726e25f056f9bf670142240885d307e82fe0d5b3a0b14dd41e67a6b7cc04662677a67
AUX frozen.patch 1155 SHA256 5997f5aa4d1d2bb262b9ef24888d4706f1227af4d359862d3d49b4e6c961d193 SHA512 5dbee1a119d6abd13b8217d66b8f611fee92c863b0d48029b1c05f33a06f6a20f35eaf6f01fb268a811270c6c799a1fef26939f7bfc97a42421e7f14b4cfa46d WHIRLPOOL 34244123ac2eebe6aa9d144f2af12304c1355f455b4b04b15ff5f949ffa0b23c62d40436b16371e3c5055b94afd51b2dd9ea3f92864d4f597c9b568814e3fa48
AUX hardened.patch 1191 SHA256 720945299cf4842e0f178c307d2dd6212aec85bc808a4ecf74956bebba921dd0 SHA512 f5ed920720f8d36e928e25e4b19b7b5557510236c6f22bd7f47adcc7a24f779df9060c890208847a74fcd5495b4db03fa3b4eead8bf03903804356085587b2b8 WHIRLPOOL b1d7d52b37319665f650e569fb6e0c6c36ba39b2d6f581f6d72bd23e0dceb29972423d04b6004ea781be2b2610e58b8e3ea0150ab6587ad6639d441960e527a2
DIST open-vm-tools-2013.04.16-1098359.tar.gz 3737845 SHA256 fc939de4133d66c0cced8d0a7b5d87edcad3f598393b71c341e66bfec5087960 SHA512 682c25e315e3108617fd4d419f5bba8bf45f4966f13fa60944650390f63af2a7e4fcf740052106693403fcc2ec6f8b126e9911cbba044fc227f0c663e19f68e0 WHIRLPOOL eb13974f1e0a837617fad8c49f45e73570b343071c0619cc8408b5b9812e135cd9eafffc35a761740a58875c3e5583c625300398346d5863a2fa468044f6dd5f
EBUILD open-vm-tools-kmod-2013.04.16.1098359.ebuild 1782 SHA256 37f5ed1a67c83ba8038cbd8708406d1d6731926093dc3474ebe37b48a8e2cf4c SHA512 2e8355328de5780b79815925a8c8e8ee94cc2ab920c048df73c6290efc259d6eebc442ab2152e67cc7fbb97f274ef0c50722e0a7a3ebdfbcd29da6f67f49ca0f WHIRLPOOL 165075dae08c2423359d66d0703e4b8a26471966b900aa652155f06529e9f99f996b4abdfbd051cd38616e709fa256fd142b453e2b8d2ea4d1e68e0ae543dc3c

View file

@ -0,0 +1,104 @@
diff --git a/modules/linux/vmxnet/vmxnet.c b/modules/linux/vmxnet/vmxnet.c
index a6f5740..3c75bb2 100644
--- a/modules/linux/vmxnet/vmxnet.c
+++ b/modules/linux/vmxnet/vmxnet.c
@@ -989,7 +989,7 @@ vmxnet_probe_device(struct pci_dev *pdev, // IN: vmxnet PCI device
.ndo_start_xmit = &vmxnet_start_tx,
.ndo_stop = &vmxnet_close,
.ndo_get_stats = &vmxnet_get_stats,
- .ndo_set_multicast_list = &vmxnet_set_multicast_list,
+ .ndo_set_rx_mode = &vmxnet_set_multicast_list,
.ndo_change_mtu = &vmxnet_change_mtu,
# ifdef VMW_HAVE_POLL_CONTROLLER
.ndo_poll_controller = vmxnet_netpoll,
@@ -2033,21 +2033,23 @@ vmxnet_map_pkt(struct sk_buff *skb,
offset -= skb_headlen(skb);
for ( ; nextFrag < skb_shinfo(skb)->nr_frags; nextFrag++){
+ int fragSize;
frag = &skb_shinfo(skb)->frags[nextFrag];
+ fragSize = skb_frag_size(frag);
// skip those frags that are completely copied
- if (offset >= frag->size){
- offset -= frag->size;
+ if (offset >= fragSize){
+ offset -= fragSize;
} else {
// map the part of the frag that is not copied
dma = pci_map_page(lp->pdev,
- frag->page,
+ frag->page.p,
frag->page_offset + offset,
- frag->size - offset,
+ fragSize - offset,
PCI_DMA_TODEVICE);
- VMXNET_FILL_SG(xre->sg.sg[nextSg], dma, frag->size - offset);
+ VMXNET_FILL_SG(xre->sg.sg[nextSg], dma, fragSize - offset);
VMXNET_LOG("vmxnet_map_tx: txRing[%u].sg[%d] -> frag[%d]+%u (%uB)\n",
- dd->txDriverNext, nextSg, nextFrag, offset, frag->size - offset);
+ dd->txDriverNext, nextSg, nextFrag, offset, fragSize - offset);
nextSg++;
nextFrag++;
@@ -2058,11 +2060,14 @@ vmxnet_map_pkt(struct sk_buff *skb,
// map the remaining frags, we might need to use additional tx entries
for ( ; nextFrag < skb_shinfo(skb)->nr_frags; nextFrag++) {
+ int fragSize;
frag = &skb_shinfo(skb)->frags[nextFrag];
+ fragSize = skb_frag_size(frag);
+
dma = pci_map_page(lp->pdev,
- frag->page,
+ frag->page.p,
frag->page_offset,
- frag->size,
+ fragSize,
PCI_DMA_TODEVICE);
if (nextSg == VMXNET2_SG_DEFAULT_LENGTH) {
@@ -2091,9 +2096,9 @@ vmxnet_map_pkt(struct sk_buff *skb,
nextSg = 0;
}
- VMXNET_FILL_SG(xre->sg.sg[nextSg], dma, frag->size);
+ VMXNET_FILL_SG(xre->sg.sg[nextSg], dma, fragSize);
VMXNET_LOG("vmxnet_map_tx: txRing[%u].sg[%d] -> frag[%d] (%uB)\n",
- dd->txDriverNext, nextSg, nextFrag, frag->size);
+ dd->txDriverNext, nextSg, nextFrag, fragSize);
nextSg++;
}
@@ -2548,7 +2553,7 @@ vmxnet_rx_frags(Vmxnet_Private *lp, struct sk_buff *skb)
if (UNLIKELY(newPage == NULL)) {
skb_shinfo(skb)->nr_frags = numFrags;
skb->len += skb->data_len;
- skb->truesize += skb->data_len;
+ skb->truesize += PAGE_SIZE;
compat_dev_kfree_skb(skb, FREE_WRITE);
@@ -2558,10 +2563,12 @@ vmxnet_rx_frags(Vmxnet_Private *lp, struct sk_buff *skb)
}
pci_unmap_page(pdev, rre2->paddr, PAGE_SIZE, PCI_DMA_FROMDEVICE);
- skb_shinfo(skb)->frags[numFrags].page = lp->rxPages[dd->rxDriverNext2];
+ __skb_frag_set_page(&skb_shinfo(skb)->frags[numFrags],
+ lp->rxPages[dd->rxDriverNext2]);
skb_shinfo(skb)->frags[numFrags].page_offset = 0;
skb_shinfo(skb)->frags[numFrags].size = rre2->actualLength;
skb->data_len += rre2->actualLength;
+ skb->truesize += PAGE_SIZE;
numFrags++;
/* refill the buffer */
@@ -2579,7 +2586,7 @@ vmxnet_rx_frags(Vmxnet_Private *lp, struct sk_buff *skb)
VMXNET_ASSERT(numFrags > 0);
skb_shinfo(skb)->nr_frags = numFrags;
skb->len += skb->data_len;
- skb->truesize += skb->data_len;
+ skb->truesize += PAGE_SIZE;
VMXNET_LOG("vmxnet_rx: %dB from rxRing[%d](%dB)+rxRing2[%d, %d)(%dB)\n",
skb->len, dd->rxDriverNext, skb_headlen(skb),
firstFrag, dd->rxDriverNext2, skb->data_len);

View file

@ -0,0 +1,28 @@
diff -urpN a/modules/linux/vmsync/sync.c b/modules/linux/vmsync/sync.c
--- a/modules/linux/vmsync/sync.c 2012-08-01 19:02:59.000000000 -0700
+++ b/modules/linux/vmsync/sync.c 2012-10-14 07:38:18.000000000 -0700
@@ -162,7 +162,11 @@ VmSyncThawDevices(void *_state) // IN
cancel_delayed_work(&state->thawTask);
list_for_each_safe(cur, tmp, &state->devices) {
dev = list_entry(cur, VmSyncBlockDevice, list);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)
+ if (dev->sb != NULL && dev->sb->s_writers.frozen != SB_UNFROZEN) {
+#else
if (dev->sb != NULL && dev->sb->s_frozen != SB_UNFROZEN) {
+#endif
thaw_bdev(dev->bdev, dev->sb);
atomic_dec(&gFreezeCount);
}
@@ -237,7 +241,11 @@ VmSyncAddPath(const VmSyncState *state,
* the superblock is already frozen.
*/
if (inode->i_sb->s_bdev == NULL ||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0)
+ inode->i_sb->s_writers.frozen != SB_UNFROZEN) {
+#else
inode->i_sb->s_frozen != SB_UNFROZEN) {
+#endif
result = (inode->i_sb->s_bdev == NULL) ? -EINVAL : -EALREADY;
compat_path_release(&nd);
goto exit;

View file

@ -0,0 +1,32 @@
--- modules/linux/vsock/linux/af_vsock.c.orig 2013-04-18 05:42:22.000000000 +0800
+++ modules/linux/vsock/linux/af_vsock.c 2013-06-01 08:12:53.669508310 +0800
@@ -3185,10 +3185,14 @@
* else in the future.
*/
for (i = NPROTO - 1; i >= 0; i--) {
- vsockVmciFamilyOps.family = i;
+ pax_open_kernel();
+ *(int *)&vsockVmciFamilyOps.family = i;
+ pax_close_kernel();
err = sock_register(&vsockVmciFamilyOps);
if (err) {
- vsockVmciFamilyOps.family = VSOCK_INVALID_FAMILY;
+ pax_open_kernel();
+ *(int *)&vsockVmciFamilyOps.family = VSOCK_INVALID_FAMILY;
+ pax_close_kernel();
} else {
vsockVmciDgramOps.family = i;
vsockVmciStreamOps.family = i;
@@ -3230,8 +3234,10 @@
sock_unregister(vsockVmciFamilyOps.family);
}
- vsockVmciDgramOps.family = vsockVmciFamilyOps.family = VSOCK_INVALID_FAMILY;
- vsockVmciStreamOps.family = vsockVmciFamilyOps.family;
+ pax_open_kernel();
+ *(int *)&vsockVmciDgramOps.family = *(int *)&vsockVmciFamilyOps.family = VSOCK_INVALID_FAMILY;
+ *(int *)&vsockVmciStreamOps.family = vsockVmciFamilyOps.family;
+ pax_close_kernel();
}

View file

@ -0,0 +1,79 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2012.12.26.958366.ebuild,v 1.2 2013/03/15 19:48:53 floppym Exp $
EAPI="4"
inherit eutils linux-info linux-mod versionator
MY_PN="${PN/-kmod}"
MY_PV="$(replace_version_separator 3 '-')"
MY_P="${MY_PN}-${MY_PV}"
DESCRIPTION="Opensourced tools for VMware guests"
HOMEPAGE="http://open-vm-tools.sourceforge.net/"
SRC_URI="mirror://sourceforge/${MY_PN}/${MY_P}.tar.gz"
LICENSE="LGPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="pax_kernel"
RDEPEND=""
DEPEND="${RDEPEND}
virtual/linux-sources
"
CONFIG_CHECK="
~DRM_VMWGFX
~VMWARE_BALLOON
~VMWARE_PVSCSI
~VMXNET3
"
S="${WORKDIR}/${MY_P}"
pkg_setup() {
linux-mod_pkg_setup
VMWARE_MOD_DIR="modules/linux"
VMWARE_MODULE_LIST="vmblock vmci vmhgfs vmsync vmxnet vsock"
MODULE_NAMES=""
BUILD_TARGETS="auto-build HEADER_DIR=${KERNEL_DIR}/include BUILD_DIR=${KV_OUT_DIR} OVT_SOURCE_DIR=${S}"
for mod in ${VMWARE_MODULE_LIST};
do
if [ "${mod}" == "vmxnet" ];
then
MODTARGET="net"
else
MODTARGET="openvmtools"
fi
MODULE_NAMES="${MODULE_NAMES} ${mod}(${MODTARGET}:${S}/${VMWARE_MOD_DIR}/${mod})"
done
}
src_prepare() {
sed -i.bak -e '/\smake\s/s/make/$(MAKE)/g' modules/linux/{vmblock,vmci,vmhgfs,vmsync,vmxnet,vsock}/Makefile\
|| die "Sed failed."
epatch "${FILESDIR}/frozen.patch"
epatch_user
use pax_kernel && epatch "${FILESDIR}/hardened.patch"
}
src_configure() {
: # do nothing at all
}
src_install() {
linux-mod_src_install
local udevrules="${T}/60-vmware.rules"
cat > "${udevrules}" <<-EOF
KERNEL=="vsock", GROUP="vmware", MODE=660
EOF
insinto /lib/udev/rules.d/
doins "${udevrules}"
}

View file

@ -0,0 +1,6 @@
AUX network 265 SHA256 5086ad67e1ad98877e2992ac4637f304028424177151606243e35bc8a021117a SHA512 dc51bd94cf16ac1f4d083bec59d7254f68d6ade37dce5d700cc6de120e4b86da649853669341538e33e67759afb2bb7c37c1d1f9ed8f5cad5a3250c7a38f5832 WHIRLPOOL a925caecc399ee26d8eb1f2aa9891e8fd199ea3860ba92ddf25a051f0786618815589ac505c75b08a9946639fda4aac82379c1eb2270d8241bd19b9f897f6d89
AUX open-vm-tools.confd 88 SHA256 180a2b6d9d18af319b79b2ca6ebf1020b63e5ebf2f601a63c1a9f9f7d2e0b95c SHA512 fca30a3be4dd3247e16115fe32b4d27ede8751f96b5a33b9f489b0ce57823c605b6249ff722d6f4ed82a98979f36d28821603b4a5a1d967d3048d23d983a19be WHIRLPOOL b2cbc98b5e0e125fc3ef6440006d4f6b75b8b020680a7184c4b7fa0651c2387c5d02baf8b61e196cfd560ccfc7be069fba19340dc6fc9ba6ea161f407ffd73e5
AUX open-vm-tools.desktop 140 SHA256 86363f5430d33afb2f9fcb004ca86813f14434f56986e427e296bd530724eeb0 SHA512 19472f03c9a14dd43a720cb9d6813d09534883236d55934577b2a2387c46a101ee02cf29ce784cd0b7c095af1f8267fa522646eba98a6026a0319c1ea19eaf5e WHIRLPOOL 17c57ee861da58986d868f493ab1979d3ebf5c9257dea2e09767c8dffb1be1ed40fc5423e378972fa719b7077af119cd5136903d08d661969737afd38b3e4e18
AUX open-vm-tools.initd 1878 SHA256 0cf2ee900a592be7526cebebb6b827db4804a905a28be1c50f9a26f771ad3b99 SHA512 b16d94c83a3906dabcbe01a1c0e8c82d8546a4bed08e16c946162365426bb6fe7e0c28e8286cc38e2d37fa64568b656013b1e1d94a14587fa4b1dd83363ce554 WHIRLPOOL efae90003534c504ee6112e065c9ff12704bd780e5c72528f49adf5724cb3b94d683cd48676764a6ba31137aa1ea9a7f9f560a89ddc3f69444094d685547f8ab
DIST open-vm-tools-2013.04.16-1098359.tar.gz 3737845 SHA256 fc939de4133d66c0cced8d0a7b5d87edcad3f598393b71c341e66bfec5087960 SHA512 682c25e315e3108617fd4d419f5bba8bf45f4966f13fa60944650390f63af2a7e4fcf740052106693403fcc2ec6f8b126e9911cbba044fc227f0c663e19f68e0 WHIRLPOOL eb13974f1e0a837617fad8c49f45e73570b343071c0619cc8408b5b9812e135cd9eafffc35a761740a58875c3e5583c625300398346d5863a2fa468044f6dd5f
EBUILD open-vm-tools-2013.04.16.1098359.ebuild 2968 SHA256 53d41acc494d2fa5d68e9dcf1cf8369074b6e8e0a54d99fb528f534c2041e57c SHA512 64cff15c36d7f40ac0d399e0888a61ee061278cd7bfe48af179584e87723204e5f34f293c8782d173ceb66ebd3a0bde4f7c273945bd05bc86b4a57e4659f464f WHIRLPOOL d286a9c15aec7bdcd090115c2021979eca79cb8548eba839aabc37c654dc9bed93f55328007fe1aac16661f3af68c7e8e94187eea7bedf328390d6bbffbb3f87

View file

@ -0,0 +1,22 @@
#!/bin/sh
#
# net.eth0, net.eth1, network, wicd, NetworkManager
service="net.eth0"
if ! rc-service -e ${service}
then
service="network"
fi
case "$1" in
suspend-vm)
rc-service ${service} stop
;;
resume-vm)
rc-service ${service} start
;;
*)
;;
esac

View file

@ -0,0 +1,2 @@
# Set this to no to disable drag and drop (and vmblock) loading.
VM_DRAG_AND_DROP="yes"

View file

@ -0,0 +1,7 @@
[Desktop Entry]
Encoding=UTF-8
Type=Application
Exec=vmware-user-suid-wrapper
Name=VMware User Agent
X-KDE-autostart-phase=1
NoDisplay=true

View file

@ -0,0 +1,76 @@
#!/sbin/runscript
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-emulation/open-vm-tools/files/open-vm-tools.initd,v 1.3 2011/07/17 13:23:00 vadimk Exp $
DND_TMPDIR="/tmp/VMwareDnD"
USER_GROUP="root:vmware"
DND_TMPDIR_PERMS="1777"
GUESTD_BIN="/usr/bin/vmtoolsd"
PIDFILE="/var/run/vmtoolsd.pid"
MOUNTPOINT="/proc/fs/vmblock/mountPoint"
depend() {
before checkfs fsck net X
}
start() {
if [ "${VM_DRAG_AND_DROP}" == "yes" ];
then
if ! grep -q -w vmblock /proc/modules;
then
ebegin "Loading vmblock module"
modprobe vmblock
eend $?
sleep 0.25
fi
if [[ ! -d "${DND_TMPDIR}" ]];
then
# einfo "Creating the VM drag and drop directory"
mkdir "${DND_TMPDIR}"
chown "${USER_GROUP}" "${DND_TMPDIR}"
chmod "${DND_TMPDIR_PERMS}" "${DND_TMPDIR}"
fi
# DnD_TMPDIR must exist before vmblock can be mounted
ebegin "Mounting vmblock device"
mount -t vmblock none ${MOUNTPOINT}
eend $?
fi
ebegin "Starting vmtoolsd"
start-stop-daemon --user "${USER_GROUP}" --start --quiet --background --make-pidfile --pidfile "${PIDFILE}" --exec ${GUESTD_BIN}
eend $?
}
stop() {
local ret
if [ "${VM_DRAG_AND_DROP}" == "yes" ];
then
ebegin "Cleaning the contents of ${DND_TMPDIR}"
# First check, whether ${DND_TMPDIR} isn valid... we shouldn't risk deleting the content of ""/*
if [[ ! -z "${DND_TMPDIR}" ]] && [[ "${DND_TMPDIR}" != "/" ]];
then
rm -rf ${DND_TMPDIR}/*
ret=0
else
eerror "Not cleaning up ${DND_TMPDIR}, please check definition of variable"
ret=1
fi
eend $ret
ebegin "Unmounting vmblock device"
if grep -q -w "${MOUNTPOINT}" /proc/mounts;
then
umount ${MOUNTPOINT} 1>&2 > /dev/null
fi
eend 0
fi
ebegin "Stopping vmtoolsd"
start-stop-daemon --stop --quiet --pidfile "${PIDFILE}"
eend $?
}

View file

@ -0,0 +1,114 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-emulation/open-vm-tools/open-vm-tools-2012.12.26.958366.ebuild,v 1.1 2013/01/20 12:09:54 vadimk Exp $
EAPI="4"
inherit eutils multilib pam user versionator flag-o-matic toolchain-funcs
MY_PV="$(replace_version_separator 3 '-')"
MY_P="${PN}-${MY_PV}"
DESCRIPTION="Opensourced tools for VMware guests"
HOMEPAGE="http://open-vm-tools.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.gz"
LICENSE="LGPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="X doc fuse icu +pic xinerama"
RDEPEND="app-emulation/open-vm-tools-kmod
dev-libs/glib:2
dev-libs/libdnet
sys-apps/ethtool
sys-process/procps
virtual/pam
X? (
dev-cpp/gtkmm:2.4
x11-base/xorg-server
x11-drivers/xf86-input-vmmouse
x11-drivers/xf86-video-vmware
x11-libs/gtk+:2
x11-libs/libnotify
x11-libs/libX11
x11-libs/libXtst
)
fuse? ( sys-fs/fuse )
icu? ( dev-libs/icu )
xinerama? ( x11-libs/libXinerama )
"
DEPEND="${RDEPEND}
doc? ( app-doc/doxygen )
virtual/pkgconfig
virtual/linux-sources
sys-apps/findutils
"
S="${WORKDIR}/${MY_P}"
pkg_setup() {
enewgroup vmware
}
src_prepare() {
# Do not filter out Werror
# Upstream Bug http://sourceforge.net/tracker/?func=detail&aid=2959749&group_id=204462&atid=989708
# sed -i -e 's/CFLAGS=.*Werror/#&/g' configure || die "sed comment out Werror failed"
sed -i -e 's:\(TEST_PLUGIN_INSTALLDIR=\).*:\1\$libdir/open-vm-tools/plugins/tests:g' configure || die "sed test_plugin_installdir failed"
}
src_configure() {
# http://bugs.gentoo.org/402279
if has_version '>=sys-process/procps-3.3.2'; then
export CUSTOM_PROCPS_NAME=procps
export CUSTOM_PROCPS_LIBS="$($(tc-getPKG_CONFIG) --libs libprocps)"
fi
econf \
--with-procps \
--with-dnet \
--without-kernel-modules \
$(use_enable doc docs) \
--docdir=/usr/share/doc/${PF} \
$(use_with X x) \
$(use_with X gtk2) \
$(use_with X gtkmm) \
$(use_with icu) \
$(use_with pic) \
$(use_enable xinerama multimon)
# Bugs 260878, 326761
find ./ -name Makefile | xargs sed -i -e 's/-Werror//g' || die "sed out Werror failed"
}
src_install() {
default
rm "${D}"/etc/pam.d/vmtoolsd
pamd_mimic_system vmtoolsd auth account
rm "${D}"/usr/$(get_libdir)/*.la
rm "${D}"/usr/$(get_libdir)/open-vm-tools/plugins/common/*.la
newinitd "${FILESDIR}/open-vm-tools.initd" vmware-tools
newconfd "${FILESDIR}/open-vm-tools.confd" vmware-tools
exeinto /etc/vmware-tools/scripts/vmware/
doexe "${FILESDIR}"/network
if use X;
then
fperms 4755 "/usr/bin/vmware-user-suid-wrapper"
dobin "${S}"/scripts/common/vmware-xdg-detect-de
insinto /etc/xdg/autostart
doins "${FILESDIR}/open-vm-tools.desktop"
elog "To be able to use the drag'n'drop feature of VMware for file"
elog "exchange, please add the users to the 'vmware' group."
fi
elog "Add 'vmware-tools' service to the default runlevel."
}