diff options
author | obrien <obrien@FreeBSD.org> | 1999-12-10 17:36:22 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 1999-12-10 17:36:22 +0000 |
commit | e1750e98d906e5108696a1134dfd37c627530e26 (patch) | |
tree | 9e13bdfe456f6cd915301872bf507420c7a8786a /emulators/wine | |
parent | 2d70794ebde1361fa332dcaa6fd842d136d04448 (diff) | |
download | FreeBSD-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/Makefile | 57 | ||||
-rw-r--r-- | emulators/wine/files/README.patch | 57 | ||||
-rw-r--r-- | emulators/wine/pkg-message | 15 | ||||
-rw-r--r-- | emulators/wine/pkg-plist | 28 |
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 |