diff --git a/app-emulation/open-vm-tools-kmod/Manifest b/app-emulation/open-vm-tools-kmod/Manifest new file mode 100644 index 000000000..460ebe243 --- /dev/null +++ b/app-emulation/open-vm-tools-kmod/Manifest @@ -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 diff --git a/app-emulation/open-vm-tools-kmod/files/fragsize.patch b/app-emulation/open-vm-tools-kmod/files/fragsize.patch new file mode 100644 index 000000000..1f85df500 --- /dev/null +++ b/app-emulation/open-vm-tools-kmod/files/fragsize.patch @@ -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); diff --git a/app-emulation/open-vm-tools-kmod/files/frozen.patch b/app-emulation/open-vm-tools-kmod/files/frozen.patch new file mode 100644 index 000000000..8b3fd7f37 --- /dev/null +++ b/app-emulation/open-vm-tools-kmod/files/frozen.patch @@ -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; + diff --git a/app-emulation/open-vm-tools-kmod/files/hardened.patch b/app-emulation/open-vm-tools-kmod/files/hardened.patch new file mode 100644 index 000000000..077633140 --- /dev/null +++ b/app-emulation/open-vm-tools-kmod/files/hardened.patch @@ -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(); + } + + diff --git a/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2013.04.16.1098359.ebuild b/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2013.04.16.1098359.ebuild new file mode 100644 index 000000000..77477477a --- /dev/null +++ b/app-emulation/open-vm-tools-kmod/open-vm-tools-kmod-2013.04.16.1098359.ebuild @@ -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}" +} diff --git a/app-emulation/open-vm-tools/Manifest b/app-emulation/open-vm-tools/Manifest new file mode 100644 index 000000000..c6c4bfddd --- /dev/null +++ b/app-emulation/open-vm-tools/Manifest @@ -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 diff --git a/app-emulation/open-vm-tools/files/network b/app-emulation/open-vm-tools/files/network new file mode 100644 index 000000000..3608455a9 --- /dev/null +++ b/app-emulation/open-vm-tools/files/network @@ -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 + diff --git a/app-emulation/open-vm-tools/files/open-vm-tools.confd b/app-emulation/open-vm-tools/files/open-vm-tools.confd new file mode 100644 index 000000000..4414fabdb --- /dev/null +++ b/app-emulation/open-vm-tools/files/open-vm-tools.confd @@ -0,0 +1,2 @@ +# Set this to no to disable drag and drop (and vmblock) loading. +VM_DRAG_AND_DROP="yes" diff --git a/app-emulation/open-vm-tools/files/open-vm-tools.desktop b/app-emulation/open-vm-tools/files/open-vm-tools.desktop new file mode 100644 index 000000000..ba87c250f --- /dev/null +++ b/app-emulation/open-vm-tools/files/open-vm-tools.desktop @@ -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 diff --git a/app-emulation/open-vm-tools/files/open-vm-tools.initd b/app-emulation/open-vm-tools/files/open-vm-tools.initd new file mode 100644 index 000000000..09c38963f --- /dev/null +++ b/app-emulation/open-vm-tools/files/open-vm-tools.initd @@ -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 $? +} diff --git a/app-emulation/open-vm-tools/open-vm-tools-2013.04.16.1098359.ebuild b/app-emulation/open-vm-tools/open-vm-tools-2013.04.16.1098359.ebuild new file mode 100644 index 000000000..406a626b5 --- /dev/null +++ b/app-emulation/open-vm-tools/open-vm-tools-2013.04.16.1098359.ebuild @@ -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." +}