Date: Tue, 8 Dec 2009 15:24:00 +0200 From: David Naylor <naylor.b.david@gmail.com> To: freebsd-emulation@freebsd.org Subject: [WIP] wine/i386 on FreeBSD/amd64 Message-ID: <200912081524.03878.naylor.b.david@gmail.com>
next in thread | raw e-mail | index | archive | help
--nextPart1691217.xVsqCBnkXp Content-Type: multipart/mixed; boundary="Boundary-01=_wNlHLkqgePszJUV" Content-Transfer-Encoding: 7bit --Boundary-01=_wNlHLkqgePszJUV Content-Type: Text/Plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi, I have developed a port that allows wine to be installed as a package under= =20 =46reeBSD/amd64. This avoids having a i386 chroot environment (and is much= =20 easier to setup, once the package is built). =20 To get this working apply the attached patch and build the emulators/wine- amd64 port under FreeBSD/i386 then transfer that package to the amd64 host: (On FreeBSD/i386) # cd /usr/ports/emulators # patch < /tmp/wine-amd64.diff # cd wine-amd64 # make package clean (On FreeBSD/amd64) # pkg_add wine-amd64-8-1.1.34,1.tbz I have such a package for FreeBSD-8 if anyone is willing to host it. =20 There are a few TODO items (port options not supported). Any=20 comments/suggestions are welcome. =20 Word of warning: nvidia-driver breaks everything. Make sure it is not=20 installed on both i386/amd64 systems. If one really wants wine with nvidia- driver support then install the beta on both i386 and amd64 (very important= it=20 is the same version of the driver) and copy libGL.so.1, libGLcore.so.1 and= =20 libnvidia-tls.so.1 from i386 to $PREFIX/lib32 (on amd64). =20 Regards, David=20 P.S. This should be a no-op for emulators/wine --Boundary-01=_wNlHLkqgePszJUV Content-Type: text/x-patch; charset="ISO-8859-1"; name="wine-amd64.diff" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="wine-amd64.diff" diff -urN /usr/ports/emulators/wine/Makefile wine/Makefile =2D-- /usr/ports/emulators/wine/Makefile 2009-12-08 08:27:51.000000000 +0200 +++ wine/Makefile 2009-12-08 11:40:12.000000000 +0200 @@ -30,12 +30,10 @@ --without-sane --without-xcursor CONFIGURE_ENV=3D CPPFLAGS=3D"-I${LOCALBASE}/include" \ LDFLAGS=3D"-L${LOCALBASE}/lib" =2DUSE_LDCONFIG=3D ${PREFIX}/lib ${PREFIX}/lib/wine MAKE_JOBS_SAFE=3D yes MAN1=3D widl.1 wine.1 winebuild.1 winedbg.1 winedump.1 winegcc.1 \ winemaker.1 wineprefixcreate.1 wineserver.1 wmc.1 wrc.1 MLINKS=3D winegcc.1 wineg++.1 =2DONLY_FOR_ARCHS=3D i386 USE_BISON=3D build USE_BZIP2=3D yes USE_GMAKE=3D yes @@ -50,6 +48,18 @@ LDAP "Use LDAP" Off \ LIBXSLT "Use libxslt (only used by msxml3.dll)" Off =20 +WINELIBS=3D libGL.so.1 libICE.so.6 libSM.so.6 libX11-xcb.so.1 libX11.so.6 \ + libXau.so.6 libXdamage.so.1 libXdmcp.so.6 libXext.so.6 \ + libXfixes.so.3 libXrender.so.1 libXxf86vm.so.1 libdrm.so.2 \ + libfreetype.so.9 libiconv.so.3 libpthread-stubs.so.0 \ + libxcb-glx.so.0 libxcb.so.2 libxml2.so.5 + +# wine not on this list as it acts as the master script +WINEBINS=3D function_grep.pl msiexec notepad regedit regsvr32 widl \ + wineboot winebuild winecfg wineconsole winecpp winedbg \ + winedump winefile wineg++ winegcc winemaker winemine winepath \ + wineprefixcreate wineserver wmc wrc + .include <bsd.port.pre.mk> =20 .ifdef WITHOUT_CUPS @@ -57,11 +67,15 @@ .else CONFIGURE_ARGS+=3D --with-cups LIB_DEPENDS+=3D cups.2:${PORTSDIR}/print/cups-base +# TODO +#WINELIBS+=3D .endif =20 .ifdef WITH_HAL CONFIGURE_ARGS+=3D --with-hal LIB_DEPENDS+=3D hal.1:${PORTSDIR}/sysutils/hal +# TODO +#WINELIBS+=3D .else CONFIGURE_ARGS+=3D --without-hal .endif @@ -69,6 +83,8 @@ .ifdef WITH_LDAP CONFIGURE_ARGS+=3D --with-ldap USE_OPENLDAP=3D yes +# TODO +#WINELIBS+=3D .else CONFIGURE_ARGS+=3D --without-ldap .endif @@ -76,14 +92,47 @@ .ifdef WITH_LIBXSLT CONFIGURE_ARGS+=3D --with-xslt LIB_DEPENDS+=3D xslt.2:${PORTSDIR}/textproc/libxslt +# TODO +#WINELIBS+=3D .else CONFIGURE_ARGS+=3D --without-xslt .endif =20 +# TODO: when does FreeBSD/i386 work properly under FreeBSD/amd64? .if ${OSVERSION} < 603000 IGNORE=3D fails to properly work on versions of FreeBSD before 6.3 .endif =20 +.ifdef WINE_CROSS_BUILD + +CONFIGURE_ARGS+=3D --bindir=3D${PREFIX}/bin32 --libdir=3D${PREFIX}/lib32 +CONFLICTS=3D wine-[0-9]* +ONLY_FOR_ARCHS=3D i386 amd64 +USE_LDCONFIG32=3D ${PREFIX}/lib32 ${PREFIX}/lib32/wine +WINELIBDIR=3D${PREFIX}/lib32 + +.for i in ${WINEBINS} +PLIST_FILES+=3D bin32/${i} +.endfor +.for i in ${WINELIBS} +PLIST_FILES+=3D lib32/${i} +.endfor +PLIST_FILES+=3D bin32/wine +#PLIST_FILES+=3D @dirrmtry bin32 + +PLIST_REINPLACE+=3D winelib +PLIST_REINPLACE_WINELIB=3Ds!lib/!lib32/!g + +ACTUAL-PACKAGE-DEPENDS=3D${DO_NADA} + +.else + +ONLY_FOR_ARCHS=3D i386 +USE_LDCONFIG=3D ${PREFIX}/lib ${PREFIX}/lib/wine +WINELIBDIR=3D${PREFIX}/lib + +.endif + post-patch: .if ${OSVERSION} < 700041 ${REINPLACE_CMD} 's/-lpthread/-lthr/g' ${WRKSRC}/configure @@ -99,8 +148,8 @@ ${MAN1PREFIX}/man/fr.UTF-8/man1/wineserver.1 @-${RMDIR} -p ${MAN1PREFIX}/man/de.UTF-8/man1 \ ${MAN1PREFIX}/man/fr.UTF-8/man1 =2D ${MV} -f ${PREFIX}/lib/libwine.so.1.0 ${PREFIX}/lib/libwine.so.1 =2D ${LN} -sf libwine.so.1 ${PREFIX}/lib/libwine.so + ${MV} -f ${WINELIBDIR}/libwine.so.1.0 ${WINELIBDIR}/libwine.so.1 + ${LN} -sf libwine.so.1 ${WINELIBDIR}/libwine.so .if !defined(NOPORTDOCS) -@${MKDIR} ${DOCSDIR} .for i in README ANNOUNCE AUTHORS LICENSE @@ -109,6 +158,15 @@ @${INSTALL_DATA} ${WRKSRC}/programs/winedbg/README ${DOCSDIR}/README.wine= dbg @${INSTALL_DATA} ${WRKSRC}/tools/winedump/README ${DOCSDIR}/README.winedu= mp .endif +.ifdef WINE_CROSS_BUILD +.for i in ${WINELIBS} + ${INSTALL_DATA} ${LOCALBASE}/lib/${i} ${PREFIX}/lib32/ +.endfor + ${INSTALL_SCRIPT} ${FILESDIR}/binbounce ${PREFIX}/bin/wine +.for i in ${WINEBINS} + ${LN} -sf wine ${PREFIX}/bin/${i} +.endfor +.endif @${MKDIR} ${DESKTOPDIR} @${MV} ${DATADIR}/applications/wine.desktop ${DESKTOPDIR}/ @${ECHO} diff -urN /usr/ports/emulators/wine/files/binbounce wine/files/binbounce =2D-- /usr/ports/emulators/wine/files/binbounce 1970-01-01 02:00:00.0000000= 00 +0200 +++ wine/files/binbounce 2009-12-01 13:54:52.000000000 +0200 @@ -0,0 +1,15 @@ +#!/bin/sh + +LOCALBASE=3D`dirname $0`/.. +BINNAME=3D`basename $0` + +while [ $# -gt 0 ] +do + ARGS=3D"$ARGS \"$1\"" + shift +done + + +export LD_32_LIBRARY_PATH=3D$LOCALBASE/lib32:$LOCALBASE/lib32/wine +export PATH=3D$LOCALBASE/bin32:$PATH +eval exec $LOCALBASE/bin32/$BINNAME $ARGS diff -urN /usr/ports/emulators/wine-amd64/Makefile wine-amd64/Makefile =2D-- /usr/ports/emulators/wine-amd64/Makefile 1970-01-01 02:00:00.00000000= 0 +0200 +++ wine-amd64/Makefile 2009-12-08 11:39:39.000000000 +0200 @@ -0,0 +1,13 @@ +PORTNAME=3D wine +PKGNAMESUFFIX=3D -amd64-${OSVERSION:C/([0-9]).*/\1/} + +WINE_CROSS_BUILD=3Dyes + +MASTERDIR=3D ${.CURDIR}/../wine + +#.if ${ARCH} =3D=3D "amd64" +# TODO: install from package (how?) +#.endif + +.include "${MASTERDIR}/Makefile" + --Boundary-01=_wNlHLkqgePszJUV-- --nextPart1691217.xVsqCBnkXp Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.13 (FreeBSD) iEYEABECAAYFAkseU3MACgkQUaaFgP9pFrKcXgCfUkaLcysZgJDf/g06t93Ycxpk FYQAnikqLST7L64YqOzEmBCPDWxpyfB1 =pXro -----END PGP SIGNATURE----- --nextPart1691217.xVsqCBnkXp--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200912081524.03878.naylor.b.david>