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 <naylor.b.da...@gmail.com>:
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-unsubscr...@freebsd.org"
--
Patrick Powell Astart Technologies
papow...@astart.com 1530 Jamacha Road, Suite X,
Network and System El Cajon, CA 92019
Consulting 858-874-6543
Web Site: www.astart.com
_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"