Bug 180499 - [PATCH] fix emulators/open-vm-tools after r248084
Summary: [PATCH] fix emulators/open-vm-tools after r248084
Status: Closed FIXED
Alias: None
Product: Ports & Packages
Classification: Unclassified
Component: Individual Port(s) (show other bugs)
Version: Latest
Hardware: Any Any
: Normal Affects Only Me
Assignee: Steve Wills
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-07-12 18:10 UTC by Enji Cooper
Modified: 2013-10-19 15:50 UTC (History)
0 users

See Also:


Attachments
file.diff (1.87 KB, patch)
2013-07-12 18:10 UTC, Enji Cooper
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Enji Cooper freebsd_committer freebsd_triage 2013-07-12 18:10:00 UTC
open-vm-tools doesn't compile post-r248084 See http://lists.freebsd.org/pipermail/freebsd-emulation/2013-July/010671.html for more details.

Fix: https://github.com/yaneurabeya/freebsd-ports/blob/master/emulators/open-vm-tools/files/patch-vmmemctl-os.c

Patch attached with submission follows:
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2013-07-12 18:10:09 UTC
Responsible Changed
From-To: freebsd-ports-bugs->swills

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 dfilter service freebsd_committer freebsd_triage 2013-10-19 15:40:11 UTC
Author: tijl
Date: Sat Oct 19 14:39:55 2013
New Revision: 330878
URL: http://svnweb.freebsd.org/changeset/ports/330878

Log:
  - Fix build with clang and recent kernel API changes.
  - Use new style LIB_DEPENDS.
  
  PR:		173038, 174290, 180499
  Submitted by:	Garrett Cooper <yaneurabeya@gmail.com>
  Approved by:	swills (maintainer)

Added:
  head/emulators/open-vm-tools/files/patch-checkvm.c   (contents, props changed)
  head/emulators/open-vm-tools/files/patch-dndLinux.c   (contents, props changed)
  head/emulators/open-vm-tools/files/patch-hgfsProto.h   (contents, props changed)
  head/emulators/open-vm-tools/files/patch-hgfsserver.c   (contents, props changed)
  head/emulators/open-vm-tools/files/patch-hgfsserverlinux.c   (contents, props changed)
  head/emulators/open-vm-tools/files/patch-vmblock-vfsops.c   (contents, props changed)
  head/emulators/open-vm-tools/files/patch-vmhgfs-os.c   (contents, props changed)
  head/emulators/open-vm-tools/files/patch-vmhgfs-vfsops.c   (contents, props changed)
Modified:
  head/emulators/open-vm-tools/Makefile
  head/emulators/open-vm-tools/files/patch-vmmemctl-os.c   (contents, props changed)
Directory Properties:
  head/emulators/open-vm-tools/distinfo   (props changed)
  head/emulators/open-vm-tools/files/patch-appUtilX11.c   (props changed)
  head/emulators/open-vm-tools/files/patch-arch   (props changed)
  head/emulators/open-vm-tools/files/patch-freebsd-8   (props changed)
  head/emulators/open-vm-tools/files/patch-freebsd-9   (props changed)
  head/emulators/open-vm-tools/files/patch-getpwnam   (props changed)
  head/emulators/open-vm-tools/files/patch-guestApp.c   (props changed)
  head/emulators/open-vm-tools/files/patch-hgfsmounter-Makefile.in   (props changed)
  head/emulators/open-vm-tools/files/patch-hostinfoPosix.c   (props changed)
  head/emulators/open-vm-tools/files/patch-libguestlib-Makefile   (props changed)
  head/emulators/open-vm-tools/files/patch-modules-Makefile.in   (props changed)
  head/emulators/open-vm-tools/files/patch-net_compat.h   (props changed)
  head/emulators/open-vm-tools/files/patch-scripts-Makefile   (props changed)
  head/emulators/open-vm-tools/files/patch-scripts-network   (props changed)
  head/emulators/open-vm-tools/files/patch-services-Makefile   (props changed)
  head/emulators/open-vm-tools/files/patch-util_misc.c   (props changed)
  head/emulators/open-vm-tools/files/patch-vm_basic_types.h   (props changed)
  head/emulators/open-vm-tools/files/patch-vmblock-vnops.c   (props changed)
  head/emulators/open-vm-tools/files/patch-vmhgfs-Makefile   (props changed)
  head/emulators/open-vm-tools/files/patch-vmhgfs-kernelStubs.h   (props changed)
  head/emulators/open-vm-tools/files/patch-vmhgfs-state.c   (props changed)
  head/emulators/open-vm-tools/files/patch-vmhgfs-vnopscommon.c   (props changed)
  head/emulators/open-vm-tools/files/patch-vmtoolsd-Makefile.in   (props changed)
  head/emulators/open-vm-tools/files/patch-wrapper-Makefile.am   (props changed)
  head/emulators/open-vm-tools/files/pkg-message.in   (props changed)
  head/emulators/open-vm-tools/files/vmware-guestd.in   (props changed)
  head/emulators/open-vm-tools/files/vmware-kmod.in   (props changed)
  head/emulators/open-vm-tools/pkg-descr   (props changed)
  head/emulators/open-vm-tools/pkg-plist   (props changed)

Modified: head/emulators/open-vm-tools/Makefile
==============================================================================
--- head/emulators/open-vm-tools/Makefile	Sat Oct 19 14:39:12 2013	(r330877)
+++ head/emulators/open-vm-tools/Makefile	Sat Oct 19 14:39:55 2013	(r330878)
@@ -3,7 +3,7 @@
 
 PORTNAME=		open-vm-tools
 PORTVERSION=		${BUILD_VER}
-PORTREVISION=		3
+PORTREVISION=		4
 PORTEPOCH=		1
 CATEGORIES=		emulators kld
 MASTER_SITES=		SF/${PORTNAME}/${PORTNAME}/stable-8.6.x
@@ -21,6 +21,7 @@ BUILD_VER=		425873
 WRKSRC=			${WRKDIR}/open-vm-tools-${RELEASE_VER}-${BUILD_VER}
 GNU_CONFIGURE=		yes
 USES=			pkgconfig
+USE_GNOME=		glib20
 USE_LDCONFIG=		yes
 CPPFLAGS+=		-Wno-deprecated-declarations
 
@@ -28,26 +29,24 @@ SSP_UNSAFE=		kernel module does not supp
 
 CONFIGURE_ARGS+=	--without-procps --sysconfdir=${LOCALBASE}/etc
 .if defined(WITHOUT_X11)
-LIB_DEPENDS+=		glib-2.0:${PORTSDIR}/devel/glib20
 CONFIGURE_ARGS+=	--without-x --without-gtk2 --without-gtkmm
 PLIST_SUB+=		X11="@comment "
 CONFLICTS=		open-vm-tools-[0-9]*
 .else
 .if !defined(WITHOUT_LIBNOTIFY)
-LIB_DEPENDS+=		notify.4:${PORTSDIR}/devel/libnotify
+LIB_DEPENDS+=		libnotify.so:${PORTSDIR}/devel/libnotify
 .endif
 .if defined(WITH_UNITY)
 CONFIGURE_ENV+=		CUSTOM_URIPARSER_CPPFLAGS="-I${LOCALBASE}/include/uriparser"
-LIB_DEPENDS+=		uriparser.1:${PORTSDIR}/net/uriparser
+LIB_DEPENDS+=		liburiparser.so:${PORTSDIR}/net/uriparser
 .else
 CONFIGURE_ARGS+=	--disable-unity
 .endif
-LIB_DEPENDS+=		gtkmm-2.4:${PORTSDIR}/x11-toolkits/gtkmm24
 CONFIGURE_ARGS+=	--with-x
 LDFLAGS+=		-L${LOCALBASE}/lib
 USE_XORG=		x11 ice sm xext xineramaproto xinerama xrandr xrender \
 			xtst
-USE_GNOME=		gtk20 glib20
+USE_GNOME+=		gtk20 gtkmm24
 PLIST_SUB+=		X11=""
 CONFLICTS=		open-vm-tools-nox11-[0-9]*
 .endif
@@ -65,13 +64,13 @@ SUB_FILES=		pkg-message
 .if defined(WITHOUT_DNET)
 CONFIGURE_ARGS+=	--without-dnet
 .else
-LIB_DEPENDS+=		dnet:${PORTSDIR}/net/libdnet
+LIB_DEPENDS+=		libdnet.so:${PORTSDIR}/net/libdnet
 .endif
 
 .if defined(WITHOUT_ICU)
 CONFIGURE_ARGS+=	--without-icu
 .else
-LIB_DEPENDS+=		icuuc:${PORTSDIR}/devel/icu
+LIB_DEPENDS+=		libicuuc.so:${PORTSDIR}/devel/icu
 .endif
 
 USE_RC_SUBR=		vmware-guestd vmware-kmod

Added: head/emulators/open-vm-tools/files/patch-checkvm.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/open-vm-tools/files/patch-checkvm.c	Sat Oct 19 14:39:55 2013	(r330878)
@@ -0,0 +1,47 @@
+--- checkvm/checkvm.c.orig
++++ checkvm/checkvm.c
+@@ -56,7 +56,7 @@
+     uint32       val
+ )
+ {
+-  __asm__ volatile("out%L0 (%%dx)" : :"a" (val), "d" (port));
++  __asm__ volatile("outl %%eax, %%dx" : :"a" (val), "d" (port));
+ }
+ 
+ static __inline__ uint32
+@@ -66,7 +66,7 @@
+ {
+   uint32 ret;
+ 
+-  __asm__ volatile("in%L0 (%%dx)" : "=a" (ret) : "d" (port));
++  __asm__ volatile("inl %%dx, %%eax" : "=a" (ret) : "d" (port));
+   return ret;
+ }
+ 
+@@ -79,7 +79,7 @@
+ {
+    uint32 eax, ebx, ecx, edx;
+    
+-   __asm__ volatile("inl (%%dx)" :
++   __asm__ volatile("inl %%dx, %%eax" :
+    	            "=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) :
+ 		    "0"(BDOOR_MAGIC), "1"(BDOOR_CMD_GETVERSION),
+ 		    "2"(BDOOR_PORT) : "memory");
+@@ -96,7 +96,7 @@
+ {
+    uint32 eax, ebx, ecx, edx;
+    
+-   __asm__ volatile("inl (%%dx)" :
++   __asm__ volatile("inl %%dx, %%eax" :
+    	            "=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) :
+ 		    "0"(BDOOR_MAGIC), "1"(BDOOR_CMD_GETHWVERSION),
+ 		    "2"(BDOOR_PORT) : "memory");
+@@ -112,7 +112,7 @@
+ {
+    uint32 eax, ebx, ecx, edx;
+    
+-   __asm__ volatile("inl (%%dx)" :
++   __asm__ volatile("inl %%dx, %%eax" :
+    		    "=a"(eax), "=c"(ecx), "=d"(edx), "=b"(ebx) :
+ 		    "0"(BDOOR_MAGIC), "1"(BDOOR_CMD_GETSCREENSIZE),
+ 		    "2"(BDOOR_PORT) : "memory");

Added: head/emulators/open-vm-tools/files/patch-dndLinux.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/open-vm-tools/files/patch-dndLinux.c	Sat Oct 19 14:39:55 2013	(r330878)
@@ -0,0 +1,11 @@
+--- services/plugins/dndcp/dnd/dndLinux.c.orig
++++ services/plugins/dndcp/dnd/dndLinux.c
+@@ -455,7 +455,7 @@
+ DnD_CheckBlockFuse(int blockFd)                    // IN
+ {
+    char buf[sizeof(VMBLOCK_FUSE_READ_RESPONSE)];
+-   size_t size;
++   ssize_t size;
+ 
+    size = read(blockFd, buf, sizeof(VMBLOCK_FUSE_READ_RESPONSE));
+    if (size < 0) {

Added: head/emulators/open-vm-tools/files/patch-hgfsProto.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/open-vm-tools/files/patch-hgfsProto.h	Sat Oct 19 14:39:55 2013	(r330878)
@@ -0,0 +1,22 @@
+--- lib/include/hgfsProto.h.orig
++++ lib/include/hgfsProto.h
+@@ -148,6 +148,9 @@
+    HGFS_OP_SET_EAS_V4,            /* Add or modify extended attributes. */
+ 
+    HGFS_OP_MAX,                   /* Dummy op, must be last in enum */
++
++/* If a V4 packet is being processed as a legacy packet it will have this opcode. */
++   HGFS_V4_LEGACY_OPCODE = 0xff,
+ } HgfsOp;
+ 
+ 
+@@ -155,9 +158,6 @@
+ #define HGFS_VERSION_OLD           (1 << 0)
+ #define HGFS_VERSION_3             (1 << 1)
+ 
+-/* If a V4 packet is being processed as a legacy packet it will have this opcode. */
+-#define HGFS_V4_LEGACY_OPCODE      0xff
+-
+ /* XXX: Needs change when VMCI is supported. */
+ #define HGFS_REQ_PAYLOAD_SIZE_V3(hgfsReq) (sizeof *hgfsReq + sizeof(HgfsRequest))
+ #define HGFS_REP_PAYLOAD_SIZE_V3(hgfsRep) (sizeof *hgfsRep + sizeof(HgfsReply))

Added: head/emulators/open-vm-tools/files/patch-hgfsserver.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/open-vm-tools/files/patch-hgfsserver.c	Sat Oct 19 14:39:55 2013	(r330878)
@@ -0,0 +1,11 @@
+--- lib/hgfsServer/hgfsServer.c.orig
++++ lib/hgfsServer/hgfsServer.c
+@@ -3557,7 +3557,7 @@
+     * delimiter on copy. Allow 0 length drives so that hidden feature "" can
+     * work.
+     */
+-   if (pathLength < 0 || pathLength >= sizeof p.mountPoint) {
++   if (pathLength >= sizeof p.mountPoint) {
+       LOG(4, ("%s: could not get the volume name\n", __FUNCTION__));
+ 
+       return FALSE;

Added: head/emulators/open-vm-tools/files/patch-hgfsserverlinux.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/open-vm-tools/files/patch-hgfsserverlinux.c	Sat Oct 19 14:39:55 2013	(r330878)
@@ -0,0 +1,11 @@
+--- lib/hgfsServer/hgfsServerLinux.c.orig
++++ lib/hgfsServer/hgfsServerLinux.c
+@@ -551,7 +551,7 @@
+ 
+    arraySize = ARRAYSIZE(HgfsServerOpenFlags);
+ 
+-   if (flagsIn < 0 || flagsIn >= arraySize) {
++   if (flagsIn >= arraySize) {
+       Log("%s: Invalid HgfsOpenFlags %d\n", __FUNCTION__, flagsIn);
+ 
+       return FALSE;

Added: head/emulators/open-vm-tools/files/patch-vmblock-vfsops.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/open-vm-tools/files/patch-vmblock-vfsops.c	Sat Oct 19 14:39:55 2013	(r330878)
@@ -0,0 +1,11 @@
+--- modules/freebsd/vmblock/vfsops.c.orig
++++ modules/freebsd/vmblock/vfsops.c
+@@ -236,7 +236,7 @@
+     */
+    MNT_ILOCK(mp);
+    mp->mnt_flag |= lowerrootvp->v_mount->mnt_flag & MNT_LOCAL;
+-#if __FreeBSD_version >= 600000
++#if __FreeBSD_version >= 600000 && __FreeBSD_version < 1000021
+    mp->mnt_kern_flag |= lowerrootvp->v_mount->mnt_kern_flag & MNTK_MPSAFE;
+ #endif
+    MNT_IUNLOCK(mp);

Added: head/emulators/open-vm-tools/files/patch-vmhgfs-os.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/open-vm-tools/files/patch-vmhgfs-os.c	Sat Oct 19 14:39:55 2013	(r330878)
@@ -0,0 +1,11 @@
+--- modules/freebsd/vmhgfs/os.c.orig
++++ modules/freebsd/vmhgfs/os.c
+@@ -647,7 +647,7 @@
+ 		 OS_THREAD_T *newThread)   // OUT
+ {
+    return compat_kthread_create(function, parameter,
+-                                newThread, 0, 0, threadName);
++                                newThread, 0, 0, "%s", threadName);
+ }
+ 
+ 

Added: head/emulators/open-vm-tools/files/patch-vmhgfs-vfsops.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/open-vm-tools/files/patch-vmhgfs-vfsops.c	Sat Oct 19 14:39:55 2013	(r330878)
@@ -0,0 +1,12 @@
+--- modules/freebsd/vmhgfs/vfsops.c.orig
++++ modules/freebsd/vmhgfs/vfsops.c
+@@ -201,7 +201,9 @@
+     * structures, not oplocks/leases with the VM's host.)
+     */
++#if __FreeBSD_version < 1000021
+    MNT_ILOCK(mp);
+    mp->mnt_kern_flag |= MNTK_MPSAFE;
+    MNT_IUNLOCK(mp);
++#endif
+ 
+    /* Get a new unique filesystem ID */

Modified: head/emulators/open-vm-tools/files/patch-vmmemctl-os.c
==============================================================================
--- head/emulators/open-vm-tools/files/patch-vmmemctl-os.c	Sat Oct 19 14:39:12 2013	(r330877)
+++ head/emulators/open-vm-tools/files/patch-vmmemctl-os.c	Sat Oct 19 14:39:55 2013	(r330878)
@@ -1,12 +1,56 @@
---- modules/freebsd/vmmemctl/os.c.orig	2011-09-21 14:25:15.000000000 -0400
-+++ modules/freebsd/vmmemctl/os.c	2012-06-20 09:44:40.434083000 -0400
-@@ -344,12 +344,22 @@
+--- modules/freebsd/vmmemctl/os.c.orig	2011-09-21 20:25:15.000000000 +0200
++++ modules/freebsd/vmmemctl/os.c	2013-10-19 11:01:27.000000000 +0200
+@@ -37,9 +37,11 @@
+ #include <sys/param.h>
+ #include <sys/systm.h>
+ #include <sys/kernel.h>
++#include <sys/lock.h>
+ #include <sys/malloc.h>
+ #include <sys/module.h>
+ #include <sys/conf.h>
++#include <sys/rwlock.h>
+ #include <sys/sysctl.h>
+ 
+ #include <vm/vm.h>
+@@ -264,14 +266,23 @@
+    p->size = (p->size + sizeof(unsigned long) - 1) & 
+                          ~(sizeof(unsigned long) - 1);
+ 
++#if __FreeBSD_version >= 1000042
++   p->bitmap = (unsigned long *)kmem_malloc(kernel_arena, p->size,
++                         M_WAITOK | M_ZERO);
++#else
+    p->bitmap = (unsigned long *)kmem_alloc(kernel_map, p->size);
++#endif
+ }
+ 
+ 
+ static void
+ os_pmap_free(os_pmap *p) // IN
+ {
++#if __FreeBSD_version >= 1000042
++   kmem_free(kernel_arena, (vm_offset_t)p->bitmap, p->size);
++#else
+    kmem_free(kernel_map, (vm_offset_t)p->bitmap, p->size);
++#endif
+    p->size = 0;
+    p->bitmap = NULL;
+ }
+@@ -344,12 +355,31 @@
     os_state *state = &global_state;
     os_pmap *pmap = &state->pmap;
  
 -   if ( !vm_page_lookup(state->vmobject, page->pindex) ) {
 -      return;
+-   }
+ 
+-   os_pmap_putindex(pmap, page->pindex);
+-   vm_page_free(page);
++#if __FreeBSD_version > 1000029
++   VM_OBJECT_WLOCK(state->vmobject);
++#else
 +   VM_OBJECT_LOCK(state->vmobject);
++#endif
 +   if ( vm_page_lookup(state->vmobject, page->pindex) ) {
 +   	os_pmap_putindex(pmap, page->pindex);
 +#if __FreeBSD_version >= 900000
@@ -20,31 +64,44 @@
 +#else
 +	vm_page_unlock_queues();
 +#endif
-    }
--
--   os_pmap_putindex(pmap, page->pindex);
--   vm_page_free(page);
++   }
++#if __FreeBSD_version > 1000029
++   VM_OBJECT_WUNLOCK(state->vmobject);
++#else
 +   VM_OBJECT_UNLOCK(state->vmobject);
++#endif
  }
  
  
-@@ -361,8 +371,11 @@
+@@ -361,8 +391,19 @@
     os_state *state = &global_state;
     os_pmap *pmap = &state->pmap;
  
++#if __FreeBSD_version > 1000029
++   VM_OBJECT_WLOCK(state->vmobject);
++#else
 +   VM_OBJECT_LOCK(state->vmobject);
++#endif
 +
     pindex = os_pmap_getindex(pmap);
     if (pindex == (vm_pindex_t)-1) {
++#if __FreeBSD_version > 1000029
++      VM_OBJECT_WUNLOCK(state->vmobject);
++#else
 +      VM_OBJECT_UNLOCK(state->vmobject);
++#endif
        return NULL;
     }
  
-@@ -383,6 +396,7 @@
+@@ -383,6 +424,11 @@
     if (!page) {
        os_pmap_putindex(pmap, pindex);
     }
++#if __FreeBSD_version > 1000029
++   VM_OBJECT_WUNLOCK(state->vmobject);
++#else
 +   VM_OBJECT_UNLOCK(state->vmobject);
++#endif
  
     return page;
  }
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 3 Tijl Coosemans freebsd_committer freebsd_triage 2013-10-19 15:42:52 UTC
State Changed
From-To: open->closed

Committed in r330878.