From owner-freebsd-ports@FreeBSD.ORG Wed Nov 7 14:16:01 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 DA71B797 for ; Wed, 7 Nov 2012 14:16:01 +0000 (UTC) (envelope-from papowell@astart.com) Received: from astart2.astart.com (99-111-96-109.uvs.sndgca.sbcglobal.net [99.111.96.109]) by mx1.freebsd.org (Postfix) with ESMTP id B19368FC14 for ; Wed, 7 Nov 2012 14:16:01 +0000 (UTC) Received: from laptop_83.private (localhost [127.0.0.1]) by astart2.astart.com (8.14.4/8.14.4) with ESMTP id qA7DvCLF084164 for ; Wed, 7 Nov 2012 05:57:12 -0800 (PST) (envelope-from papowell@astart.com) Message-ID: <509A68B8.2070700@astart.com> Date: Wed, 07 Nov 2012 05:57:12 -0800 From: Patrick Powell Organization: Astart Technologies User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:14.0) Gecko/20120807 Thunderbird/14.0 MIME-Version: 1.0 To: freebsd-ports@freebsd.org Subject: Re: wine/i386 for FreeBSD/amd64 port (aka wine-fbsd64) References: <58.E1.17144.7AD2A905@smtp01.insight.synacor.com> In-Reply-To: <58.E1.17144.7AD2A905@smtp01.insight.synacor.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: papowell@astart.com List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Nov 2012 14:16:01 -0000 First, I want to thank the Wine developers for a job/life/sanity saving piece of code. I need both 32 and 64 versions. It would be nice if the ports had a wine-32 and wine-64 just to make life simple for us non-intensive Ports users. Just a comment. On 11/07/12 01:45, Thomas Mueller wrote: > 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 > _______________________________________________ > freebsd-ports@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-ports > To unsubscribe, send any mail to "freebsd-ports-unsubscribe@freebsd.org" > -- Patrick Powell Astart Technologies papowell@astart.com 1530 Jamacha Road, Suite X, Network and System El Cajon, CA 92019 Consulting 858-874-6543 Web Site: www.astart.com