From owner-freebsd-ports@FreeBSD.ORG Wed Nov 7 09:52:54 2012 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6A0687AB for ; Wed, 7 Nov 2012 09:52:54 +0000 (UTC) (envelope-from mueller23@insightbb.com) Received: from mail.insightbb.com (smtp1.insight.synacor.com [208.47.185.23]) by mx1.freebsd.org (Postfix) with ESMTP id 24AD58FC08 for ; Wed, 7 Nov 2012 09:52:53 +0000 (UTC) X_CMAE_Category: 0,0 Undefined,Undefined X-CNFS-Analysis: v=2.0 cv=f43K9ZOM c=1 sm=0 a=Dm9TOXL4taQ+Gy1KovpL+A==:17 a=EWoEbSmgkUYA:10 a=jLN7EqiLvroA:10 a=9YQ-1ebCAAAA:8 a=jMEDDUxgNLsA:10 a=pGLkceISAAAA:8 a=GEfn47E5AAAA:20 a=6I5d2MoRAAAA:8 a=JrB8O1un1a29LDRqMb8A:9 a=MSl-tDqOz04A:10 a=Dm9TOXL4taQ+Gy1KovpL+A==:117 X-CM-Score: 0 X-Scanned-by: Cloudmark Authority Engine Authentication-Results: smtp01.insight.synacor.com header.from=mueller23@insightbb.com; sender-id=softfail Authentication-Results: smtp01.insight.synacor.com smtp.mail=mueller23@insightbb.com; spf=softfail; sender-id=softfail Received-SPF: softfail (smtp01.insight.synacor.com: transitional domain insightbb.com does not designate 74.130.198.7 as permitted sender) Received: from [74.130.198.7] ([74.130.198.7:48477] helo=localhost) by mail.insightbb.com (envelope-from ) (ecelerity 2.2.3.49 r(42060/42061)) with ESMTP id 58/E1-17144-7AD2A905; Wed, 07 Nov 2012 04:45:11 -0500 Date: Wed, 07 Nov 2012 04:45:11 -0500 Message-ID: <58.E1.17144.7AD2A905@smtp01.insight.synacor.com> From: "Thomas Mueller" To: freebsd-ports@freebsd.org Subject: Re: wine/i386 for FreeBSD/amd64 port (aka wine-fbsd64) Cc: David Naylor X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Nov 2012 09:52:54 -0000 from David Naylor : > Hi List, > # Executive Summary > Over the past years I have been maintaining the wine-fbsd64 port (see > http://mediafire.com/wine_fbsd64 for more). The port itself effectively does > static linking (it bundles all the libraries wine needs) with scripts to > bootstrap the environment to easily use wine from FreeBSD/amd64. There is > also a script to install the i386 nVidia graphic drivers so that wine has > access to nVidia accelerated graphics from FreeBSD/amd64. > I would like to propose this port gets included in the port's collection and > would like to get feedback, your comments please :-). > P.S. I'm not subscribed to the list, so please ensure I'm cc'ed in the > discussion. > # Details of the Port > Please see attached for the actual port. > ## Port Preamble > This port is a slave port to emulators/wine(-devel). The master port needed > to be modified (already done): > - to conditionally set USE_LDCONFIG (if USE_LDCONFIG32 was not set) > - to allow the library directory to be changed (see WINELIBDIR) > - to allow configure arguments to be appended > ## Port Targets > The port itself does the following in the preamble: > - specifies the pkg(de)install script to handle nVidia driver patching > - overrides ACTUAL-PACKAGE-DEPENDS (all depends are bundled with the port) > - defined the library directory to ${PREFIX}/lib32 > - defined the binary directory to ${PREFIX}/bin32 > - patches the PLIST to refer to lib32 (not lib) > - defined USE_LDCONFIG32 appropriately > The post-install-script target: > - Installs the files/binbounce file in ${PREFIX}/bin for each ${PREFIX}/bin32 > file (hard linked) > - Finds all linked library, copies them to ${PREFIX}/lib32, and added them to > the plist > - Finds all dlopen'ed libraries, copies them to ${PREFIX}/lib32, and added > them to the plist > - Installs the nVidia patch file > - Run the (PRE-|POST-)INSTALL script > The post-package-script (run only if WITH_PKGNG is defined): > - Amends the package so the arch label to 64bit > ## Port scripts (in files/) > The binbounce file does the following to transparently fix the environment to > allow seamless running of the wine programs: > - determines the location of the TARGET (follows symbolic links to itself) > - fixes LD_LIBRARY_PATH if in an i386 environment (so lib32, lib32/wine is > found) > - fixes LD_32_LIBRARY_PATH if in an amd64 environment (so lib32, lib32/wine, > /usr/lib32) > - fixes PATH (so bin32 is found) > - passes execution to the counterpart in bin32 > The patch-nvidia.sh file does the following: > - Downloads the nVidia distfile for i386 (iff nVidia amd64 driver is > installed) > - Installs the required libraries into ${PREFIX}/lib32 > - When run from the install script it does _not_ download the distfile, only > installs the libraries iff the distfiles are already downloaded. > # Shortcomings of the port > The following are shortcomings that I am aware of: > - Can only be compiled in an i386 environment, but the resulting package is > *intended* for amd64 (although works fine in an i386 environment) > - If, somehow, there is a recursive calling of wine programs then > LD_(32_)LIBRARY_PATH and PATH will continue to grow with every iteration. > - The pkgng ports cannot be installed in an i386 environment as they are > labelled for amd64. > # Testing > The ports published on mediafire have been tested by many users. The port > itself works flawlessly however there have been some reports about some flaws > in the 32-bit compatibility layer of the kernel (although I cannot remember > the specifics now). > To produce the package on an amd64 system do the following: > # (cd /usr/ports/emulators/; patch -p0 < /path/to/diff) > # make -C /usr/src world DESTDIR=/i386 TARGET=i386 > # mount -t devfs devfs /i386/dev > # mkdir /i386/usr/ports > # mount -t nullfs /usr/ports /i386/usr/ports > # chroot make -C /usr/ports/emulators/wine-fbsd64 package WITH_PKGNG=yes > The package wine-fbsd64-1.5.16,1.txz (in pkgng format) will be available from > /usr/ports/packages/All/ > # Conclusion > "It is based completely off the main port and uses the hack to, > effectively, use static linking (or bundling of libraries). In a > sense it is a complete, yet quite stable and encompassing, hack. " > - David ;-) It would be nice to have wine-fbsd64 as a port, but that might unfortunately deprive the user of certain flexibility. Also, nVidia support should be an option, since users with other graphics cards might have no use for it. I would really prefer to build the i386 FreeBSD system as a separate part, including kernel, since some users, myself included, might want to run an actual FreeBSD i386, especially on an older computer. So one could build this FreeBSD i386 on a USB stick or USB hard drive, and then be able to run wine on an i386 system. Would wine-fbsd64 be a separate port, or would it be wine built on i386, as the page http://wiki.freebsd.org/Wine suggests? It would be nice to be able to run Wine on i386 as well as amd64. Tom