Date: Sun, 23 May 2021 04:38:14 GMT From: Li-Wen Hsu <lwhsu@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: d8fafe84bd58 - main - emulators/wine-proton: add wow64 wrapper. Message-ID: <202105230438.14N4cEdo019525@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by lwhsu: URL: https://cgit.FreeBSD.org/ports/commit/?id=d8fafe84bd58baef7d4e2696cc16bcf67db4cf3d commit d8fafe84bd58baef7d4e2696cc16bcf67db4cf3d Author: Alex S <shkhln@users.noreply.github.com> AuthorDate: 2021-04-24 18:22:58 +0000 Commit: Li-Wen Hsu <lwhsu@FreeBSD.org> CommitDate: 2021-05-23 04:37:44 +0000 emulators/wine-proton: add wow64 wrapper. PR: 255381 --- emulators/wine-proton/Makefile | 7 ++++++- emulators/wine-proton/files/pkg32.sh | 13 ++++++++++++ emulators/wine-proton/files/wine-wow64.sh | 34 +++++++++++++++++++++++++++++++ emulators/wine-proton/files/wine.sh | 23 ++++++++++++++++++--- emulators/wine-proton/pkg-plist | 6 ++++-- 5 files changed, 77 insertions(+), 6 deletions(-) diff --git a/emulators/wine-proton/Makefile b/emulators/wine-proton/Makefile index 28ebe7521c75..50497ccb5a97 100644 --- a/emulators/wine-proton/Makefile +++ b/emulators/wine-proton/Makefile @@ -106,8 +106,13 @@ pre-build: post-install: .if ${ARCH} == i386 ${MV} ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wineserver ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wineserver32 - ${MV} ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine32 + ${MV} ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine.bin ${INSTALL_SCRIPT} ${FILESDIR}/wine.sh ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine +.else + ${INSTALL_SCRIPT} ${FILESDIR}/pkg32.sh ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/pkg32.sh + ${MV} ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine64 ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine64.bin + ${INSTALL_SCRIPT} ${FILESDIR}/wine.sh ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine64 + ${INSTALL_SCRIPT} ${FILESDIR}/wine-wow64.sh ${STAGEDIR}${PREFIX}/${PORTNAME}/bin/wine .endif ${RM} -r ${STAGEDIR}${PREFIX}/${PORTNAME}/include ${RM} -r ${STAGEDIR}${MANPREFIX}/man diff --git a/emulators/wine-proton/files/pkg32.sh b/emulators/wine-proton/files/pkg32.sh new file mode 100644 index 000000000000..7aebca5b7cd1 --- /dev/null +++ b/emulators/wine-proton/files/pkg32.sh @@ -0,0 +1,13 @@ +#!/bin/sh -e +if [ "$(id -u)" = 0 ] +then + echo "Don't run this script as root!" + exit 1 +fi + +I386_ROOT="${WINE_i386_ROOT:-$HOME/.i386-wine-pkg}" + +mkdir -p "$I386_ROOT" +ABI=$(pkg config ABI | sed s/amd64/i386/) +echo pkg -o ABI="$ABI" -o INSTALL_AS_USER=true -o RUN_SCRIPTS=false --rootdir "$I386_ROOT" "$@" +exec pkg -o ABI="$ABI" -o INSTALL_AS_USER=true -o RUN_SCRIPTS=false --rootdir "$I386_ROOT" "$@" diff --git a/emulators/wine-proton/files/wine-wow64.sh b/emulators/wine-proton/files/wine-wow64.sh new file mode 100644 index 000000000000..9efb09fc3d3b --- /dev/null +++ b/emulators/wine-proton/files/wine-wow64.sh @@ -0,0 +1,34 @@ +#!/bin/sh -e +TARGET="$(realpath "$0")" +PREFIX="${TARGET%/*/*}" +LOCALBASE="${PREFIX%/*}" + +I386_ROOT="${WINE_i386_ROOT:-$HOME/.i386-wine-pkg}" + +export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH:+$LIBGL_DRIVERS_PATH:}$LOCALBASE/lib/dri:$LOCALBASE/lib32/dri:$I386_ROOT/$LOCALBASE/lib/dri" +export LD_32_LIBRARY_PATH="${LD_32_LIBRARY_PATH:+$LD_32_LIBRARY_PATH:}$I386_ROOT/$PREFIX/lib/wine:$LOCALBASE/lib32:$I386_ROOT/$LOCALBASE/lib:$I386_ROOT/$LOCALBASE/llvm10/lib:$I386_ROOT/$LOCALBASE/llvm11/lib" +export LD_32_LIBRARY_PATH_RPATH=y + +if [ -z "$WINE_NO_WOW64" ] +then + export PATH="${TARGET%/*}:${PATH}" + export WINESERVER="${TARGET}server" +fi + +if [ ! -f "$I386_ROOT/$PREFIX/bin/wine" ] +then + printf "%s doesn't exist!\n\n" "$I386_ROOT/$PREFIX/bin/wine" + printf "Try installing 32-bit wine with\n\t%s\n" "$PREFIX/bin/pkg32.sh install wine-proton mesa-dri" + exit 1 +fi + +WINE32_VERSION=$(env -u WINELOADERNOEXEC "$I386_ROOT/$PREFIX/bin/wine" --version) +WINE64_VERSION=$(env -u WINELOADERNOEXEC "${TARGET}64" --version) +if [ "$WINE32_VERSION" != "$WINE64_VERSION" ] +then + printf "wine [%s] and wine64 [%s] versions do not match!\n\n" "$WINE32_VERSION" "$WINE64_VERSION" + printf "Try updating 32-bit wine with\n\t%s\n" "$PREFIX/bin/pkg32.sh upgrade" + exit 1 +fi + +exec "$I386_ROOT/$PREFIX/bin/wine" "$@" diff --git a/emulators/wine-proton/files/wine.sh b/emulators/wine-proton/files/wine.sh index 7dfe3e66c4ca..63d5ba68a1ab 100644 --- a/emulators/wine-proton/files/wine.sh +++ b/emulators/wine-proton/files/wine.sh @@ -1,4 +1,21 @@ #!/bin/sh -TARGET="`realpath $0`" -export WINESERVER=${WINESERVER-${TARGET}server32} -exec "${TARGET}32" "$@" +TARGET="$(realpath "$0")" + +if [ -z "$WINESERVER" ] && [ -f "${TARGET}server32" ] +then + export WINESERVER="${TARGET}server32" +fi + +export GST_PLUGIN_SYSTEM_PATH_1_0="${TARGET%/*/*/*}/lib/gstreamer-1.0" + +# workaround for https://bugs.winehq.org/show_bug.cgi?id=50257 +export LD_BIND_NOW=1 +export LD_32_BIND_NOW=1 + +# workaround for https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255336 +if [ "$(uname -p)" = amd64 ] +then + export LD_LIBMAP="libgcc_s.so.1=/lib/libgcc_s.so.1,${LD_LIBMAP}" +fi + +exec "${TARGET}.bin" "$@" diff --git a/emulators/wine-proton/pkg-plist b/emulators/wine-proton/pkg-plist index bdd4d0d17b07..6020329c2d1f 100644 --- a/emulators/wine-proton/pkg-plist +++ b/emulators/wine-proton/pkg-plist @@ -8,8 +8,7 @@ %%DOCSDIR%%/ANNOUNCE %%DOCSDIR%%/AUTHORS %%DOCSDIR%%/README -%%WINE32%%wine-proton/bin/wine -%%WINE32%%wine-proton/bin/wine32 +%%WINE32%%wine-proton/bin/wine.bin %%WINE32%%wine-proton/bin/wineserver32 %%WINE32%%wine-proton/lib/wine/avifile.dll16.so %%WINE32%%wine-proton/lib/wine/comm.drv16.so @@ -140,7 +139,9 @@ %%WINE32%%wine-proton/lib/wine/winsock.dll16.so %%WINE32%%wine-proton/lib/wine/wintab.dll16.so %%WINE32%%wine-proton/lib/wine/wow32.dll.so +%%WINE64%%wine-proton/bin/pkg32.sh %%WINE64%%wine-proton/bin/wine64 +%%WINE64%%wine-proton/bin/wine64.bin %%WINE64%%wine-proton/bin/wineserver wine-proton/bin/function_grep.pl wine-proton/bin/msidb @@ -149,6 +150,7 @@ wine-proton/bin/notepad wine-proton/bin/regedit wine-proton/bin/regsvr32 wine-proton/bin/widl +wine-proton/bin/wine wine-proton/bin/wineboot wine-proton/bin/winebuild wine-proton/bin/winecfg
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202105230438.14N4cEdo019525>