wine/i386 for FreeBSD/amd64 port (aka wine-fbsd64)

Chris Rees crees at
Wed Nov 7 17:48:10 UTC 2012

On 7 November 2012 13:57, Patrick Powell <papowell at> wrote:
> 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.

Ports does have a wine-32 port-- it's called emulators/wine.  This
will be an *additional* port for amd64.


> On 11/07/12 01:45, Thomas Mueller wrote:
>> from David Naylor <naylor.b.david at>:
>>> Hi List,
>>> # Executive Summary
>>> Over the past years I have been maintaining the wine-fbsd64 port (see
>>> 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 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 suggests?  It would be nice to be
>> able
>> to run Wine on i386 as well as amd64.
>> Tom
>> _______________________________________________
>> freebsd-ports at mailing list
>> To unsubscribe, send any mail to "freebsd-ports-unsubscribe at"
> --
> Patrick Powell                 Astart Technologies
> papowell at            1530 Jamacha Road, Suite X,
> Network and System             El Cajon, CA 92019
>   Consulting                   858-874-6543
> Web Site:
> _______________________________________________
> freebsd-ports at mailing list
> To unsubscribe, send any mail to "freebsd-ports-unsubscribe at"

More information about the freebsd-ports mailing list