aboutsummaryrefslogtreecommitdiff
path: root/emulators/wine
diff options
context:
space:
mode:
authorStefan Eßer <se@FreeBSD.org>1999-11-14 20:49:34 +0000
committerStefan Eßer <se@FreeBSD.org>1999-11-14 20:49:34 +0000
commitb0f8db3b556afaa63b3a5cddb46cb530934f4346 (patch)
treeebf1255ed0fdbdfe83d2470b5fa3f14fb3413c1f /emulators/wine
parent5d479405d6d201cc90da3fa49f66d918b5ea4eda (diff)
downloadports-b0f8db3b556afaa63b3a5cddb46cb530934f4346.tar.gz
ports-b0f8db3b556afaa63b3a5cddb46cb530934f4346.zip
Notes
Diffstat (limited to 'emulators/wine')
-rw-r--r--emulators/wine/Makefile31
-rw-r--r--emulators/wine/distinfo2
-rw-r--r--emulators/wine/files/README.patch40
-rw-r--r--emulators/wine/files/install-patch-3.3-sys-sigtrap30
-rw-r--r--emulators/wine/files/patch-ad24
-rw-r--r--emulators/wine/files/patch-ba25
-rw-r--r--emulators/wine/pkg-message4
-rw-r--r--emulators/wine/pkg-plist9
8 files changed, 141 insertions, 24 deletions
diff --git a/emulators/wine/Makefile b/emulators/wine/Makefile
index 1c459095f436..7c6db2e5e50e 100644
--- a/emulators/wine/Makefile
+++ b/emulators/wine/Makefile
@@ -6,9 +6,9 @@
# $FreeBSD$
#
-DATE= 990426
+DATE= 991031
DISTNAME= Wine-${DATE}
-PKGNAME= wine-99.04.26
+PKGNAME= wine-99.10.31
CATEGORIES= emulators
MASTER_SITES= ${MASTER_SITE_SUNSITE}
MASTER_SITE_SUBDIR= ALPHA/wine/development
@@ -20,21 +20,32 @@ LIB_DEPENDS= Xpm.4:${PORTSDIR}/graphics/xpm
WRKSRC= ${WRKDIR}/wine-${DATE}
GNU_CONFIGURE= yes
MAN1= wine.1
+MAN1= wine.conf.5
ONLY_FOR_ARCHS= i386
-pre-configure:
- @${ECHO} "WINE_INI_GLOBAL \"${PREFIX}/etc/wine.conf\"" \
- >> ${WRKSRC}/autoconf.h
+STRIP=
+CFLAGS+= -g
post-configure:
cd ${WRKSRC} && make depend
do-install:
- ${INSTALL} -c ${WRKSRC}/wine ${PREFIX}/bin
- -@${MKDIR} ${PREFIX}/etc 2>/dev/null
+ ${INSTALL_PROGRAM} ${WRKSRC}/wine ${PREFIX}/bin
+ ${INSTALL_PROGRAM} ${WRKSRC}/tools/fnt2bdf ${PREFIX}/bin
+ ${INSTALL_PROGRAM} ${WRKSRC}/windows/x11drv/wineclipsrv ${PREFIX}/bin
+ ${INSTALL_DATA} ${WRKSRC}/wine.ini ${PREFIX}/etc/wine.conf.sample
[ -f ${PREFIX}/etc/wine.conf ] \
- || ${CP} ${WRKSRC}/wine.ini ${PREFIX}/etc/wine.conf
- ${CP} ${WRKSRC}/wine.sym ${PREFIX}/etc
- ${CP} ${WRKSRC}/documentation/wine.man ${PREFIX}/man/man1/wine.1
+ || ${INSTALL_DATA} ${WRKSRC}/wine.ini ${PREFIX}/etc/wine.conf
+ ${INSTALL_DATA} ${WRKSRC}/wine.sym ${PREFIX}/etc
+ ${INSTALL_DATA} ${WRKSRC}/documentation/wine.man ${PREFIX}/man/man1/wine.1
+ ${INSTALL_DATA} ${WRKSRC}/documentation/wine.conf.man ${PREFIX}/man/man5/wine.conf.5
+ -@${MKDIR} ${PREFIX}/lib/wine 2>/dev/null
+ ${INSTALL_DATA} ${FILESDIR}/README.patch \
+ ${FILESDIR}/patch-3.3-sys-ldtshare \
+ ${FILESDIR}/patch-3.3-sys-sigtrap \
+ ${PREFIX}/lib/wine
+ ${INSTALL_DATA} ${WRKSRC}/winedefault.reg ${PREFIX}/lib/wine/
+ ${ECHO}
+ @${SED} s+%%PREFIX%%+${PREFIX}+g <${PKGMESSAGE}
.include <bsd.port.mk>
diff --git a/emulators/wine/distinfo b/emulators/wine/distinfo
index 321880cea3c6..c54ccdcd7eb5 100644
--- a/emulators/wine/distinfo
+++ b/emulators/wine/distinfo
@@ -1 +1 @@
-MD5 (Wine-990426.tar.gz) = ddc5561393b7fedb02b933889658eb7f
+MD5 (Wine-991031.tar.gz) = 80904e8933ac1a72fdf4c0a05f36d6be
diff --git a/emulators/wine/files/README.patch b/emulators/wine/files/README.patch
new file mode 100644
index 000000000000..1b9184b82c46
--- /dev/null
+++ b/emulators/wine/files/README.patch
@@ -0,0 +1,40 @@
+Here are two patches for FreeBSD's kernel that are necessary for wine
+(well not strictly _necessary_ but without them parts of it won't work.)
+They unfortunately didn't make it into the base distribution in time
+for the 3.3 release code freeze...
+
+patch-3.3-sys-ldtshare:
+make kernel threads (rfork(), which wine uses) share one LDT instead of
+each having its own. this fixes the same problem that wine also had on
+linux kernels before 2.2.
+
+patch-3.3-sys-sigtrap:
+stop wine's SIGTRAP handler from being called in the sigreturn syscall,
+causing problems for wine's internal debugger. (it would still
+correctly show a crash backtrace but all commands that use single-
+stepping failed.)
+
+Apply as follows:
+
+ (cd /usr/src/sys && patch ) <patch-3.3-sys-ldtshare
+ (cd /usr/src/sys && patch ) <patch-3.3-sys-sigtrap
+
+then build a new kernel. (don't forget to include the options USER_LDT,
+SYSVSHM, SYSVSEM, and SYSVMSG, wine needs these.)
+
+-current users:
+someone of you :) needs to implement a runtime check in wine for the
+FreeBSD version and based on that use/set the sc_gs and sc_fs values
+in the sigcontext struct in signal handlers for versions >= 4.0.
+(see the `wine signal handlers lose %fs on FreeBSD' thread on the
+wine-devel list for details, can be read at
+http://www.integrita.com/cgi-local/lwgate.pl/WINE-DEVEL/archives/1999-09/Subject/article-15.html
+at least i ended up there when i searched it today. yes you could also
+simply define FS_sig and GS_sig in wine's include/sig_context.h and be
+done with it but the resulting wine would only work on 4.0 and
+Alexandre (wine maintainer) didn't like that idea...)
+
+A LDT patch for -current is at http://www.freebsd.org/~luoqi
+(not included since i don't know if it still applies), the sigtrap
+patch looks like it could also apply to -current but i haven't tried.
+(and if not, i guess a similar fix will be committed soon anyway.)
diff --git a/emulators/wine/files/install-patch-3.3-sys-sigtrap b/emulators/wine/files/install-patch-3.3-sys-sigtrap
new file mode 100644
index 000000000000..e3004884fd29
--- /dev/null
+++ b/emulators/wine/files/install-patch-3.3-sys-sigtrap
@@ -0,0 +1,30 @@
+Index: i386/i386/trap.c
+===================================================================
+RCS file: /home/cvs/cvs/src/sys/i386/i386/trap.c,v
+retrieving revision 1.133.2.1
+diff -u -u -r1.133.2.1 trap.c
+--- trap.c 1999/08/29 16:05:56 1.133.2.1
++++ trap.c 1999/09/10 14:42:21
+@@ -1041,6 +1084,7 @@
+ int error;
+ int args[8];
+ u_int code;
++ int tracedsyscall = ((frame.tf_eflags & PSL_T) && !(frame.tf_eflags & PSL_VM));
+
+ #ifdef DIAGNOSTIC
+ if (ISPL(frame.tf_cs) != SEL_UPL)
+@@ -1135,10 +1179,12 @@
+ break;
+ }
+
+- if ((frame.tf_eflags & PSL_T) && !(frame.tf_eflags & PSL_VM)) {
++ if (tracedsyscall) {
+ /* Traced syscall. */
+ frame.tf_eflags &= ~PSL_T;
+- trapsignal(p, SIGTRAP, 0);
++ /* tell the signal handler this is a trace trap */
++ frame.tf_trapno = T_TRCTRAP;
++ trapsignal(p, SIGTRAP, T_TRCTRAP);
+ }
+
+ userret(p, &frame, sticks);
diff --git a/emulators/wine/files/patch-ad b/emulators/wine/files/patch-ad
index 4dd01c257b50..a66a526cfef1 100644
--- a/emulators/wine/files/patch-ad
+++ b/emulators/wine/files/patch-ad
@@ -1,32 +1,32 @@
-*** wine.ini.orig Wed Jul 17 22:00:24 1996
---- wine.ini Mon Aug 12 19:51:38 1996
+*** wine.ini.orig Sun Oct 31 03:23:49 1999
+--- wine.ini Sat Nov 13 13:36:18 1999
***************
-*** 35,39 ****
+*** 53,57 ****
Temp=e:\
Path=c:\windows;c:\windows\system;e:\;e:\test;f:\
! SymbolTableFile=./wine.sym
- [options]
---- 35,39 ----
+ # <wineconf>
+--- 53,57 ----
Temp=e:\
Path=c:\windows;c:\windows\system;e:\;e:\test;f:\
! SymbolTableFile=/usr/local/etc/wine.sym
- [options]
+ # <wineconf>
***************
-*** 54,64 ****
+*** 107,117 ****
[serialports]
-! Com1=/dev/cua0
-! Com2=/dev/cua1
+! Com1=/dev/ttyS0
+! Com2=/dev/ttyS1
Com3=/dev/modem,38400
Com4=/dev/modem
[parallelports]
! Lpt1=/dev/lp0
- [spy]
---- 54,64 ----
+ [spooler]
+--- 107,117 ----
[serialports]
! Com1=/dev/ttyd0
@@ -37,4 +37,4 @@
[parallelports]
! Lpt1=/dev/lpt0
- [spy]
+ [spooler]
diff --git a/emulators/wine/files/patch-ba b/emulators/wine/files/patch-ba
new file mode 100644
index 000000000000..aa646a301660
--- /dev/null
+++ b/emulators/wine/files/patch-ba
@@ -0,0 +1,25 @@
+Index: Make.rules.in
+===================================================================
+RCS file: /home/wine/wine/Make.rules.in,v
+retrieving revision 1.17
+diff -u -u -r1.17 Make.rules.in
+--- Make.rules.in 1999/08/15 12:45:53 1.17
++++ Make.rules.in 1999/09/24 23:39:10
+@@ -21,7 +21,7 @@
+ CC = @CC@
+ CPP = @CPP@
+ CFLAGS = @CFLAGS@
+-OPTIONS = @OPTIONS@ -D_REENTRANT
++OPTIONS = @OPTIONS@ -D_REENTRANT -D_THREAD_SAFE
+ X_CFLAGS = @X_CFLAGS@
+ X_LIBS = @X_LIBS@
+ XLIB = @X_PRE_LIBS@ @XLIB@ @X_EXTRA_LIBS@
+@@ -81,7 +81,7 @@
+
+ # Implicit rules
+
+-.SUFFIXES:
++#.SUFFIXES:
+ .SUFFIXES: .rc .res .spec .spec.c .spec.o .glue.c $(SUFFIXES)
+
+ .c.o:
diff --git a/emulators/wine/pkg-message b/emulators/wine/pkg-message
new file mode 100644
index 000000000000..e0bfeba20b92
--- /dev/null
+++ b/emulators/wine/pkg-message
@@ -0,0 +1,4 @@
+In order to use wine you need to build and install a new kernel with
+options USER_LDT, SYSVSHM, SYSVSEM, and SYSVMSG. Before you do that,
+you may want to apply the patches in %%PREFIX%%/lib/wine to your
+kernel sources, see the README.patch there.
diff --git a/emulators/wine/pkg-plist b/emulators/wine/pkg-plist
index 8489a54c41a8..3658135db9cd 100644
--- a/emulators/wine/pkg-plist
+++ b/emulators/wine/pkg-plist
@@ -1,3 +1,10 @@
bin/wine
-etc/wine.conf
+bin/fnt2bdf
+bin/wineclipsrv
+etc/wine.conf.sample
etc/wine.sym
+lib/wine/README.patch
+lib/wine/patch-3.3-sys-ldtshare
+lib/wine/patch-3.3-sys-sigtrap
+lib/wine/winedefault.reg
+@dirrm lib/wine