summaryrefslogtreecommitdiffstats
path: root/emulators/wine
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>1999-12-10 17:36:22 +0000
committerobrien <obrien@FreeBSD.org>1999-12-10 17:36:22 +0000
commite1750e98d906e5108696a1134dfd37c627530e26 (patch)
tree9e13bdfe456f6cd915301872bf507420c7a8786a /emulators/wine
parent2d70794ebde1361fa332dcaa6fd842d136d04448 (diff)
downloadFreeBSD-ports-e1750e98d906e5108696a1134dfd37c627530e26.zip
FreeBSD-ports-e1750e98d906e5108696a1134dfd37c627530e26.tar.gz
* Use/set fs/gs from the sigcontext struct so that it correctly runs on
recent -stable (the fs/gs handling has just been MFC'd.) * Fix a ptrace bug, the debugger now actually seems to work again. * Also install regapi, and some doc files. Maintainer is reported to not have time to commit this before the 3.4 freeze point, and from what I can tell, has implied permission for this commit. PR: 15118 Submitted by: Juergen Lock <nox@jelal.kn-bremen.de>
Diffstat (limited to 'emulators/wine')
-rw-r--r--emulators/wine/Makefile57
-rw-r--r--emulators/wine/files/README.patch57
-rw-r--r--emulators/wine/pkg-message15
-rw-r--r--emulators/wine/pkg-plist28
4 files changed, 137 insertions, 20 deletions
diff --git a/emulators/wine/Makefile b/emulators/wine/Makefile
index 28df2d5..030d804 100644
--- a/emulators/wine/Makefile
+++ b/emulators/wine/Makefile
@@ -14,7 +14,8 @@ MASTER_SITE_SUBDIR= ALPHA/wine/development
MAINTAINER= se@FreeBSD.org
-LIB_DEPENDS= Xpm.4:${PORTSDIR}/graphics/xpm
+LIB_DEPENDS= Xpm.4:${PORTSDIR}/graphics/xpm \
+ GL.14:${PORTSDIR}/graphics/Mesa3
DATE= 991114
WRKSRC= ${WRKDIR}/wine-${DATE}
@@ -26,27 +27,75 @@ ONLY_FOR_ARCHS= i386
.if !defined(NDEBUG)
STRIP=
CFLAGS+= -g
+.else
+pre-extract:
+ @${ECHO} "NDEBUG has been set, building without debug info..."
+ @${ECHO} "This will save diskspace but it makes debugging harder."
+ @${ECHO} "If for example wine crashes and you would like to send"
+ @${ECHO} "the backtrace it then dumps to the developers (or"
+ @${ECHO} "comp.emulators.ms-windows.wine) it will be much more useful"
+ @${ECHO} "to them if you first rebuild without this and generate it again."
+ @${ECHO} "(If you're _not_ low on diskspace there is not really a reason to"
+ @${ECHO} "use this flag, the resulting wine won't use more VM or anything like"
+ @${ECHO} "that when running, only when it has to enter the debugger...)"
.endif
post-configure:
- cd ${WRKSRC} && make depend
+ cd ${WRKSRC} && make depend
+
+post-build:
+ cd ${WRKSRC}/programs/regapi && ${MAKE}
+ ${SED} '1s/bash/sh/;s-\./\(reg.*\.pl\)-'${PREFIX}/lib/wine/reg/'\1-' <${WRKSRC}/programs/regapi/regSet.sh >${WRKDIR}/regSet.sh
+ ${SED} 's-\(Change directory to \)<dirs to wine>/tools$$-\1your program'"'"'s dir (or wherever you need to be to run it)-;s-\./\(bug_report\.pl\)-'${PREFIX}/lib/wine/'\1-' <${WRKSRC}/documentation/bugreports >${WRKDIR}/bugreports
+ ${SED} 's-\(look at the file \)<dirs to wine>/wine.ini-\1'${PREFIX}/etc/wine.conf.sample- <${WRKSRC}/documentation/config >${WRKDIR}/config
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/wine ${PREFIX}/bin
${INSTALL_PROGRAM} ${WRKSRC}/tools/fnt2bdf ${PREFIX}/bin
${INSTALL_PROGRAM} ${WRKSRC}/windows/x11drv/wineclipsrv ${PREFIX}/bin
+ ${INSTALL_PROGRAM} ${WRKSRC}/programs/regapi/regapi ${PREFIX}/bin
+ ${INSTALL_SCRIPT} ${WRKDIR}/regSet.sh ${PREFIX}/bin
${INSTALL_DATA} ${WRKSRC}/wine.ini ${PREFIX}/etc/wine.conf.sample
[ -f ${PREFIX}/etc/wine.conf ] \
|| ${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
+ -@${MKDIR} ${PREFIX}/lib/wine/documentation ${PREFIX}/lib/wine/reg 2>/dev/null
+ ${INSTALL_DATA} ${WRKDIR}/bugreports ${WRKDIR}/config \
+ ${WRKSRC}/README \
+ ${WRKSRC}/ANNOUNCE \
+ ${WRKSRC}/AUTHORS \
+ ${WRKSRC}/LICENSE \
+ ${WRKSRC}/WARRANTY \
+ ${WRKSRC}/documentation/cdrom-labels \
+ ${WRKSRC}/documentation/debugging \
+ ${WRKSRC}/documentation/dlls \
+ ${WRKSRC}/documentation/fonts \
+ ${WRKSRC}/documentation/ioport-trace-hints \
+ ${WRKSRC}/documentation/lables-and-serial-nubers \
+ ${WRKSRC}/documentation/no-windows \
+ ${WRKSRC}/documentation/printing \
+ ${WRKSRC}/documentation/psdriver \
+ ${WRKSRC}/documentation/psdrv.reg \
+ ${WRKSRC}/documentation/ttfserver \
+ ${PREFIX}/lib/wine/documentation
+ ${INSTALL_DATA} ${WRKSRC}/debugger/README \
+ ${PREFIX}/lib/wine/documentation/README.debugger
+ ${INSTALL_DATA} ${WRKSRC}/programs/regapi/README \
+ ${PREFIX}/lib/wine/documentation/README.regapi
+ ${INSTALL_SCRIPT} ${WRKSRC}/tools/bug_report.pl \
+ ${PREFIX}/lib/wine
+ ${INSTALL_SCRIPT} \
+ ${WRKSRC}/programs/regapi/regFixer.pl \
+ ${WRKSRC}/programs/regapi/regRestorer.pl \
+ ${PREFIX}/lib/wine/reg
${INSTALL_DATA} ${FILESDIR}/README.patch \
${FILESDIR}/patch-3.3-sys-ldtshare \
${FILESDIR}/patch-3.3-sys-sigtrap \
+ ${FILESDIR}/patch-3.3-sys-fsgs \
${PREFIX}/lib/wine
- ${INSTALL_DATA} ${WRKSRC}/winedefault.reg ${PREFIX}/lib/wine/
+ ${INSTALL_DATA} ${WRKSRC}/winedefault.reg ${PREFIX}/lib/wine
${ECHO}
@${SED} s+%%PREFIX%%+${PREFIX}+g <${PKGMESSAGE}
diff --git a/emulators/wine/files/README.patch b/emulators/wine/files/README.patch
index 1b9184b..c3f757c 100644
--- a/emulators/wine/files/README.patch
+++ b/emulators/wine/files/README.patch
@@ -1,4 +1,4 @@
-Here are two patches for FreeBSD's kernel that are necessary for wine
+Here are some 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...
@@ -14,27 +14,52 @@ causing problems for wine's internal debugger. (it would still
correctly show a crash backtrace but all commands that use single-
stepping failed.)
+patch-3.3-sys-fsgs:
+always set/use the sc_fs and sc_gs entries in the sigcontext struct,
+making -stable behave the same as -current there. this should finally
+allow signal handling of a wine that was built on -stable to correctly
+run on -current too. The corresponding wine change is in the port in
+patches/patch-af, it is also in wine's CVS tree now, so that file will
+disappear when the port is updated after the next wine release.
+(this one was MFC'd Nov 15 1999, so you only need it if you're running a
+system from the -stable branch older than that, like a 3.3-RELEASE. If you
+happen to try to apply it when its already there patch(1) should complain
+`Reversed (or previously applied) patch detected! Assume -R? [y]',
+just hit ^C then...)
+
Apply as follows:
(cd /usr/src/sys && patch ) <patch-3.3-sys-ldtshare
(cd /usr/src/sys && patch ) <patch-3.3-sys-sigtrap
+And if you don't already have it:
+
+ (cd /usr/src/sys && patch ) <patch-3.3-sys-fsgs
+
then build a new kernel. (don't forget to include the options USER_LDT,
SYSVSHM, SYSVSEM, and SYSVMSG, wine needs these.)
+A note about local patches and ctm, cvsup and friends...
+(if you don't know what those are good for see for example
+http://www.freebsd.org/handbook/stable.html)
+ctm cannot deal with local patches (unless you use it to mirror
+the cvs tree of course, instead of the sources directly), with
+cvsup i'm not sure but in any case the workaround is simple: use
+patch -R to un-apply any local patches before the update (feeding
+it the patches again as above on stdin), then when the update is
+finished apply them again. Should they fail on the updated sources
+(and you cannot fix it yourself), look for new versions of the
+patches at the place where you got them, or in this case you
+can also look in my current wine port tree at
+http://www.jelal.kn-bremen.de/freebsd/ports/emulators/wine/files/
+
-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.)
+A LDT patch for -current is at http://www.freebsd.org/~luoqi/
+(well in a recent posting on the -current list,
+http://www.freebsd.org/cgi/mid.cgi?db=&id=199911150745.CAA27884@lor.watermarkgroup.com
+he said that version is outdated, seems you have to mail him to
+get a current one), the sigtrap patch looks like it could also
+apply to -current but i haven't tried. And the fs/gs patch of course
+already is in -current.
+Late note: the LDT sharing fix just seems to have been committed now...
+(to -current that is.)
diff --git a/emulators/wine/pkg-message b/emulators/wine/pkg-message
index e0bfeba..974b666 100644
--- a/emulators/wine/pkg-message
+++ b/emulators/wine/pkg-message
@@ -2,3 +2,18 @@ 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.
+
+(Note: if you already installed the patches from the 991031 version of
+this port and you're not tracking -stable or your -stable is older than
+Nov 15 1999: there is a new patch you need, patch-3.3-sys-fsgs)
+
+And the port now also installs some of wine's doc files which
+describe additional things that are not in the manual pages, see
+%%PREFIX%%/lib/wine/documentation. There are more in the source tree
+but the others are only useful in conjunction with the rest of the
+source tree, and then you can as well look at them there. (If you
+just installed this as a package and don't know how to use the ports
+system to have it fetch and extract the source for you have a look at
+http://www.freebsd.org/handbook/ports.html . In short:
+cd /usr/ports/emulators/wine && make configure )
+
diff --git a/emulators/wine/pkg-plist b/emulators/wine/pkg-plist
index 3658135..b269545 100644
--- a/emulators/wine/pkg-plist
+++ b/emulators/wine/pkg-plist
@@ -1,10 +1,38 @@
bin/wine
bin/fnt2bdf
bin/wineclipsrv
+bin/regapi
+bin/regSet.sh
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/patch-3.3-sys-fsgs
lib/wine/winedefault.reg
+lib/wine/bug_report.pl
+lib/wine/reg/regFixer.pl
+lib/wine/reg/regRestorer.pl
+lib/wine/documentation/ANNOUNCE
+lib/wine/documentation/AUTHORS
+lib/wine/documentation/LICENSE
+lib/wine/documentation/WARRANTY
+lib/wine/documentation/README
+lib/wine/documentation/bugreports
+lib/wine/documentation/cdrom-labels
+lib/wine/documentation/config
+lib/wine/documentation/debugging
+lib/wine/documentation/dlls
+lib/wine/documentation/fonts
+lib/wine/documentation/ioport-trace-hints
+lib/wine/documentation/lables-and-serial-nubers
+lib/wine/documentation/no-windows
+lib/wine/documentation/printing
+lib/wine/documentation/psdriver
+lib/wine/documentation/psdrv.reg
+lib/wine/documentation/ttfserver
+lib/wine/documentation/README.debugger
+lib/wine/documentation/README.regapi
+@dirrm lib/wine/reg
+@dirrm lib/wine/documentation
@dirrm lib/wine
OpenPOWER on IntegriCloud