Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Jun 2004 17:08:21 +0200 (SAST)
From:      Marc van Kempen <marc@bowtie.nl>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/68202: [patch] Make vmware2 compile on -current 
Message-ID:  <200406221508.i5MF8LbB022280@host10.meck.bowtie.nl>
Resent-Message-ID: <200406221520.i5MFKGuZ070600@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         68202
>Category:       ports
>Synopsis:       [patch] Make vmware2 compile on -current
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jun 22 15:20:16 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator:     Marc van Kempen
>Release:        FreeBSD 5.2-CURRENT i386
>Organization:
>Environment:
System: FreeBSD host10.meck.bowtie.nl 5.2-CURRENT FreeBSD 5.2-CURRENT #1: Wed Jun 16 16:35:48 SAST 2004 marc@host10.meck.bowtie.nl:/usr/obj/usr/ncvs/src/sys/THINKPAD i386


Thinkpad R40
FreeBSD -current from 16 June 2004
	
>Description:
Vmware fails to compile on -current, this patch makes it compile again 
with the patch to rtc (in a separate send-pr)

	
>How-To-Repeat:
try to compile vmware2 on -current
	
>Fix:

see attached files for patches

	

--- vmware2.patch begins here ---
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/emulators/vmware2/Makefile,v
retrieving revision 1.60
diff -u -r1.60 Makefile
--- Makefile	10 Jan 2004 07:18:54 -0000	1.60
+++ Makefile	22 Jun 2004 14:58:12 -0000
@@ -88,6 +88,12 @@
 PLIST_SUB+=	FREEBSD5=""
 .endif
 
+.if ${OSVERSION} >= 500104
+LINUXBASE_MAYBE=
+.else
+LINUXBASE_MAYBE= ${LINUXBASE}
+.endif 
+
 post-extract:
 .for m in ${MODULES}
 	${TAR} -xf ${WRKSRC}/lib/modules/source/${m}.tar -C ${WRKSRC}
@@ -122,10 +128,11 @@
 	cd ${WRKSRC}/vmmon-only/freebsd && ${TOUCH} bus_if.h device_if.h
 .if ${OSVERSION} >= 500019
 	${PERL} -i -pe 's,<machine/ioctl_fd\.h>,<sys/fdcio.h>,' \
-		${WRKSRC}/vmmon-only/freebsd/*.c \
-		${WRKSRC}/vmware-distrib/vmmon-only/freebsd/*.c
+		${WRKDIR}/vmmon-only/freebsd/*.c \
+		${WRKDIR}/vmware-distrib/vmmon-only/freebsd/*.c
 .endif
 	${CAT} ${FILESDIR}/kmoddeps.patch | (cd ${WRKSRC} && patch) > /dev/null 2>&1
+	${CAT} ${FILESDIR}/Makefile_FreeBSD.patch | (cd ${WRKSRC} && patch) > /dev/null 2>&1
 .if ${OSVERSION} >= 500038
 	${CAT} ${FILESDIR}/fo_ioctl.patch | (cd ${WRKSRC} && patch) > /dev/null 2>&1
 .endif
@@ -135,6 +142,7 @@
 .endif
 .if ${OSVERSION} >= 500104
 	${CAT} ${FILESDIR}/cdevsw.patch | (cd ${WRKSRC} && patch) > /dev/null 2>&1
+	${CAT} ${FILESDIR}/driver_c.patch | (cd ${WRKSRC} && patch) > /dev/null 2>&1
 .endif
 .if ${OSVERSION} >= 500109 || ${OSVERSION} < 500000 && ${OSVERSION} >= 480102
 	${CAT} ${FILESDIR}/hostif_c.patch | (cd ${WRKSRC} && patch) > /dev/null 2>&1
@@ -151,7 +159,7 @@
 		${FILESDIR}/config > ${WRKDIR}/config
 
 	${SED} 	-e 's;@@PREFIX@@;${PREFIX};' \
-		-e 's;@@LINUXBASE@@;${LINUXBASE};' \
+		-e 's;@@LINUXBASE@@;$(LINUXBASE_MAYBE);' \
 		-e 's;@@NETWORKING@@;${VMNET_NETWORKING};' \
 		-e 's;@@BRIDGED@@;${VMNET_BRIDGED};' \
 		-e 's;@@BRIDGE_INTF@@;${VMNET_BRIDGED_INTERFACE};' \
Index: files/cdevsw.patch
===================================================================
RCS file: /home/ncvs/ports/emulators/vmware2/files/cdevsw.patch,v
retrieving revision 1.1
diff -u -r1.1 cdevsw.patch
--- files/cdevsw.patch	10 Apr 2003 12:29:07 -0000	1.1
+++ files/cdevsw.patch	22 Jun 2004 14:58:12 -0000
@@ -1,10 +1,14 @@
 --- vmmon-only/freebsd/driver.c_original	Wed Mar  5 19:22:35 2003
 +++ vmmon-only/freebsd/driver.c	Wed Mar  5 19:22:44 2003
-@@ -155,6 +155,14 @@
+@@ -155,6 +155,18 @@
  
  /* static struct cdevsw vmmon_cdevsw = { */
  static struct cdevsw vmmon_cdevsw = {
 +#if __FreeBSD_version >= 500104
++#if __FreeBSD_version >= 502103
++	.d_version = D_VERSION,
++	.d_flags = D_NEEDGIANT,
++#endif
 +	.d_open =	FreeBSD_Driver_Open,
 +	.d_close =	FreeBSD_Driver_Close,
 +	.d_ioctl =	FreeBSD_Driver_Ioctl,
@@ -54,11 +58,15 @@
  }
 --- vmnet-only/freebsd/vmnet.c_original	Wed Mar  5 19:21:51 2003
 +++ vmnet-only/freebsd/vmnet.c	Wed Mar  5 19:22:00 2003
-@@ -103,6 +103,16 @@
+@@ -103,6 +103,20 @@
  static int vmnet_modeevent(module_t mod, int cmd, void *arg);
  
  static struct cdevsw vmnet_cdevsw = {
 +#if __FreeBSD_version >= 500104
++#if __FreeBSD_version >= 502103
++ 	.d_version = D_VERSION,
++	.d_flags = D_NEEDGIANT,
++#endif
 +	.d_open = 	vmnet_open,
 +	.d_close = 	vmnet_close,
 +	.d_read = 	vmnet_read,
Index: files/patch-bd
===================================================================
RCS file: /home/ncvs/ports/emulators/vmware2/files/patch-bd,v
retrieving revision 1.2
diff -u -r1.2 patch-bd
--- files/patch-bd	22 Sep 2000 16:55:01 -0000	1.2
+++ files/patch-bd	22 Jun 2004 14:58:12 -0000
@@ -1,5 +1,5 @@
---- vmmon-only/freebsd/driver.c.orig	Thu Jun 29 21:06:18 2000
-+++ vmmon-only/freebsd/driver.c	Sat Sep 23 01:41:34 2000
+--- vmmon-only/freebsd/driver.c.orig Sat Apr 10 16:52:28 2004
++++ vmmon-only/freebsd/driver.c Sat Apr 10 16:54:39 2004
 @@ -73,6 +73,24 @@
  #include "private.h"
  #endif
@@ -25,3 +25,13 @@
  #ifdef SUPPORT_PASSTHROUGH
  #include "passthrough.h"	// _driver_ version of passthrough.h 
  #endif
+@@ -256,7 +274,9 @@
+ 
+ #include <machine/md_var.h>
+ #include <machine/segments.h>
++#if __FreeBSD_version < 501114
+ #include <i386/isa/intr_machdep.h>
++#endif
+ 
+ static int
+ vmmon_modeevent(module_t mod, int cmd, void *arg)
Index: files/patch-be
===================================================================
RCS file: /home/ncvs/ports/emulators/vmware2/files/patch-be,v
retrieving revision 1.3
diff -u -r1.3 patch-be
--- files/patch-be	18 Oct 2002 16:33:02 -0000	1.3
+++ files/patch-be	22 Jun 2004 14:58:12 -0000
@@ -1,5 +1,5 @@
---- vmmon-only/freebsd/hostif.c.orig	Mon Sep  2 19:19:50 2002
-+++ vmmon-only/freebsd/hostif.c	Mon Sep  2 19:30:03 2002
+--- vmmon-only/freebsd/hostif.c.orig Sat Apr 10 16:52:23 2004
++++ vmmon-only/freebsd/hostif.c Sat Apr 10 16:54:17 2004
 @@ -55,7 +55,11 @@
  
  #include <vm/vm.h>
@@ -57,7 +57,33 @@
    	return 0;
  }
   
-@@ -1066,10 +1098,33 @@
+@@ -1006,8 +1038,12 @@
+ HostIF_APIC_Base(VMDriver *vm, Bool setVMPtr)
+ {
+ #if defined(SMP)
++#if __FreeBSD_version < 501114
+    return cpu_apic_address;
++#else
++   return 0; /* XXX */
++#endif
+ #else
+    return 0;
+ #endif
+ }
+@@ -1035,8 +1070,12 @@
+ HostIF_IOAPIC_Base(VMDriver *vm)
+ {
+ #if defined(SMP)
++#if __FreeBSD_version < 501114
+    return io_apic_address[0]; /* XXX How about another APIC's */
+ #else
++   return 0; /* XXX */
++#endif
++#else
+    return 0;
+ #endif
+ }
+@@ -1066,10 +1105,33 @@
          return NULL;
    }
    paddr = vtophys(addr);
@@ -91,7 +117,7 @@
    return ka->kaddr;
  }
  
-@@ -1079,9 +1134,29 @@
+@@ -1079,9 +1141,29 @@
    if (ka->map==NULL)
  	  return 0;
  
Index: scripts/pre-install
===================================================================
RCS file: /home/ncvs/ports/emulators/vmware2/scripts/pre-install,v
retrieving revision 1.6
diff -u -r1.6 pre-install
--- scripts/pre-install	13 Apr 2003 09:55:44 -0000	1.6
+++ scripts/pre-install	22 Jun 2004 14:58:13 -0000
@@ -17,8 +17,11 @@
 ln -s ${linux_dev}/tty1 ${linux_dev}/tty0
 mknod ${linux_dev}/null c 2 2
 chmod 666 ${linux_dev}/null
-echo Creating vmnet1 node
-mknod /compat/linux/dev/vmnet1 c 149 ${VMNET1_MINOR}
+rm -f /compat/linux/dev/vmnet1
+if [ "$OSVERSION" -lt "500104" ]; then
+	echo Creating vmnet1 node
+	mknod /compat/linux/dev/vmnet1 c 149 ${VMNET1_MINOR}
+fi
 echo Creating $linux_dev/hd\?
 mknod ${linux_dev}/hda b 0 0x00010002
 mknod ${linux_dev}/hdb b 0 0x0001000a
--- vmware2.patch ends here ---

--- Makefile_FreeBSD.patch begins here ---
--- vmmon-only/Makefile.FreeBSD.orig	Tue Jun 22 16:52:23 2004
+++ vmmon-only/Makefile.FreeBSD	Tue Jun 22 16:51:58 2004
@@ -57,7 +59,9 @@
 
 device:
 	rm -f /compat/linux/dev/${DEVNAME}
+.if ${OSVERSION} > 500104
 	mknod /compat/linux/dev/${DEVNAME} c ${CDEV_MAJOR} 0
+.endif
 
 
 .include <bsd.kmod.mk>
--- Makefile_FreeBSD.patch ends here ---

--- driver_c.patch begins here ---
--- vmmon-only/freebsd/driver.c.original Tue Jun 22 15:24:52 2004
+++ vmmon-only/freebsd/driver.c	Tue Jun 22 10:01:30 2004
@@ -157,8 +157,8 @@
 static struct cdevsw vmmon_cdevsw = {
 #if __FreeBSD_version >= 500104
 #if __FreeBSD_version >= 502103
-	.d_version = D_VERSION,
-	.d_flags = D_NEEDGIANT,
+ 	.d_version = D_VERSION,
+ 	.d_flags = D_NEEDGIANT,
 #endif
 	.d_open =	FreeBSD_Driver_Open,
 	.d_close =	FreeBSD_Driver_Close,
@@ -233,7 +233,7 @@
  *
  *----------------------------------------------------------------------
  */
-static dev_t vmmon_dev;
+static struct cdev * vmmon_dev;
 static int 
 init_module(void)
 {
@@ -359,7 +359,7 @@
  *----------------------------------------------------------------------
  */
 static int 
-FreeBSD_Driver_Open(dev_t dev, int oflag, int devtype, struct thread *td)
+FreeBSD_Driver_Open(struct cdev * dev, int oflag, int devtype, struct thread *td)
 {
    VMFreeBSD *vmFreeBSD;
    VMDriver *vm;
@@ -439,7 +439,7 @@
  */
 
 static int
-FreeBSD_Driver_Close(dev_t dev, int fflag, int devtype, struct thread *td)
+FreeBSD_Driver_Close(struct cdev * dev, int fflag, int devtype, struct thread *td)
 {
    VMFreeBSD *vmFreeBSD = (VMFreeBSD *) dev->si_drv1;
 
@@ -491,7 +491,7 @@
  */
 
 static int 
-FreeBSD_Driver_Poll(dev_t dev, int events, struct thread *td)
+FreeBSD_Driver_Poll(struct cdev * dev, int events, struct thread *td)
 {
    int revents = 0;
 
@@ -573,7 +573,7 @@
  *----------------------------------------------------------------------
  */
 static int 
-FreeBSD_Driver_Ioctl( dev_t dev, u_long cmd, caddr_t parg, int mode, 
+FreeBSD_Driver_Ioctl( struct cdev * dev, u_long cmd, caddr_t parg, int mode, 
 		      struct thread *td)
 {
    VMFreeBSD *vmFreeBSD = (VMFreeBSD *) dev->si_drv1;
--- driver_c.patch ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200406221508.i5MF8LbB022280>