diff options
author | dbn <dbn@FreeBSD.org> | 2014-12-27 02:52:16 +0800 |
---|---|---|
committer | dbn <dbn@FreeBSD.org> | 2014-12-27 02:52:16 +0800 |
commit | 39fdee6ae755865def7e6a706bd097b00fbc7a39 (patch) | |
tree | 9dedc783ccc883fe65a8579015308e80688a0153 /emulators | |
parent | 20dea88391db366212136becefa2e53ba0642205 (diff) | |
download | freebsd-ports-graphics-39fdee6ae755865def7e6a706bd097b00fbc7a39.tar.gz freebsd-ports-graphics-39fdee6ae755865def7e6a706bd097b00fbc7a39.tar.zst freebsd-ports-graphics-39fdee6ae755865def7e6a706bd097b00fbc7a39.zip |
Backport changes from emulators/i386-wine-devel to emulators/i386-wine.
Changes:
- Fix install conflicts [1] (for the "newly" added compholio port)
- nvidia.sh: Gracefully handle a corrupt nVidia tarball
- nvidia.sh: Provide checksum and size information for nVidia tarball
- Reduce diff between i386-wine and i386-wine-devel:
- Add support for sub-ports (unused by this port)
- Properly detect linked (and dlopen) libraries
- binbounce: Properly set LD_(32_)?LIBRARY_PATH_RPATH variables
- nvidia.sh: Add detection for i386-wine-compholio
- Bump master port [1] due to changes to binbounce, nvidia.sh and shared
library handling.
Approved by: gerald@ [1]
Diffstat (limited to 'emulators')
-rw-r--r-- | emulators/i386-wine/Makefile.i386 | 44 | ||||
-rw-r--r-- | emulators/i386-wine/files/binbounce | 3 | ||||
-rw-r--r-- | emulators/i386-wine/files/nvidia.sh | 14 | ||||
-rw-r--r-- | emulators/wine/Makefile | 5 |
4 files changed, 41 insertions, 25 deletions
diff --git a/emulators/i386-wine/Makefile.i386 b/emulators/i386-wine/Makefile.i386 index 12522fbf8c7..e62ef27b8d7 100644 --- a/emulators/i386-wine/Makefile.i386 +++ b/emulators/i386-wine/Makefile.i386 @@ -4,16 +4,18 @@ PKGNAMEPREFIX= i386- MAINTAINER= dbn@FreeBSD.org -COMMENT= 32bit Microsoft Windows compatibility environment for 64bit FreeBSD +COMMENT?= 32bit Microsoft Windows compatibility environment for 64bit FreeBSD # Use the wine port to do most of the heavy lifting -MASTERDIR= ${.CURDIR}/../wine -PKGINSTALL= ${.CURDIR}/files/pkg-install +SLAVEDIR?= ${.CURDIR} +MASTERDIR= ${SLAVEDIR}/../wine +PKGINSTALL= ${SLAVEDIR}/files/pkg-install PKGDEINSTALL= ${PKGINSTALL} RUN_DEPENDS= dri>0:${PORTSDIR}/graphics/dri -CONFLICTS_INSTALL= i386-wine-devel-[0-9]* wine-[0-9]* wine-devel-[0-9]* +CONFLICTS_INSTALL?= wine-[0-9]* wine-compholio-[0-9]* wine-devel-[0-9]* \ + i386-wine-compholio-[0-9]* i386-wine-devel-[0-9]* ACTUAL-PACKAGE-DEPENDS= ${DO_NADA} WINELIBDIR= ${PREFIX}/lib32 @@ -33,17 +35,30 @@ post-install-script: # Fix pkg-plist references ${REINPLACE_CMD} -e 's!lib/!lib32/!g' ${TMPPLIST} # Install bounce script to access the 32bit executables - ${INSTALL_SCRIPT} ${.CURDIR}/files/binbounce ${STAGEDIR}${PREFIX}/bin/wine + ${INSTALL_SCRIPT} ${SLAVEDIR}/files/binbounce ${STAGEDIR}${PREFIX}/bin/wine for i in `grep ^bin ${TMPPLIST} | xargs -n1 basename` ; do \ [ "$${i}" = "wine" ] || ${LN} -f ${STAGEDIR}${PREFIX}/bin/wine ${STAGEDIR}${PREFIX}/bin/$${i} ; \ echo bin32/$${i} >> ${TMPPLIST} ; \ done - # Install dri libraries (internal libGL requirements) + # Install libGL ${MKDIR} ${STAGEDIR}${PREFIX}/lib32/.libGL/dri + ${INSTALL_DATA} ${LOCALBASE}/lib/libGL.so.1 ${STAGEDIR}${PREFIX}/lib32/.libGL/ + echo lib32/.libGL/libGL.so.1 >> ${TMPPLIST} + # Install dri libraries (internal libGL requirements) for i in ${LOCALBASE}/lib/dri/*.so; do \ ${INSTALL_DATA} $${i} ${STAGEDIR}${PREFIX}/lib32/.libGL/dri/ ; \ echo lib32/.libGL/dri/$${i##*/} >> ${TMPPLIST} ; \ done + # Find all soft dependencies (via strings(1)) + grep -v '[@%]' ${TMPPLIST} | sed "s!^!${STAGEDIR}${PREFIX}/!g" | \ + xargs -n1 file -F' ' | grep ELF | cut -f1 -d' ' | xargs strings | \ + grep '^lib.*\.so' | sort -u > ${WRKDIR}/winesoftlibs + for i in `cat ${WRKDIR}/winesoftlibs` ; do \ + if [ -e ${LOCALBASE}/lib/$${i} ] && [ -z "`grep $${i} ${TMPPLIST}`" ]; then \ + ${INSTALL_DATA} ${LOCALBASE}/lib/$${i} ${STAGEDIR}${PREFIX}/lib32/ ; \ + echo lib32/$${i} >> ${TMPPLIST} ; \ + fi ; \ + done # Find all libraries that are linked too (via ldd(1)) grep -v '[@%]' ${TMPPLIST} | sed "s!^!${STAGEDIR}${PREFIX}/!g" | \ xargs -n1 file -F' ' | grep ELF | cut -f1 -d' ' | \ @@ -51,22 +66,9 @@ post-install-script: | sort -u | grep -v '^\(/usr\)\?/lib' | grep -v "^${STAGEDIR}${PREFIX}/lib32/libwine.so" \ | grep -v "^${STAGEDIR}${PREFIX}/lib32/wine" > ${WRKDIR}/winelibs for i in `cat ${WRKDIR}/winelibs` ; do \ - if [ `basename $${i}` != libGL.so.1 ]; then \ + if [ -z "`grep $${i##*/} ${TMPPLIST}`" ]; then \ ${INSTALL_DATA} $${i} ${STAGEDIR}${PREFIX}/lib32/ ; \ echo lib32/$${i##*/} >> ${TMPPLIST} ; \ - else \ - ${INSTALL_DATA} $${i} ${STAGEDIR}${PREFIX}/lib32/.libGL/ ; \ - echo lib32/.libGL/libGL.so.1 >> ${TMPPLIST} ; \ - fi ; \ - done - # Find all soft dependancies (via strings(1)) - grep -v '[@%]' ${TMPPLIST} | sed "s!^!${STAGEDIR}${PREFIX}/!g" | \ - xargs -n1 file -F' ' | grep ELF | cut -f1 -d' ' | xargs strings | \ - grep '^lib.*\.so' | sort -u > ${WRKDIR}/winesoftlibs - for i in `cat ${WRKDIR}/winesoftlibs` ; do \ - if [ -e ${LOCALBASE}/lib/$${i} ] && [ -z "`grep $${i} ${TMPPLIST}`" ] ; then \ - ${INSTALL_DATA} ${LOCALBASE}/lib/$${i} ${STAGEDIR}${PREFIX}/lib32/ ; \ - echo lib32/$${i} >> ${TMPPLIST} ; \ fi ; \ done echo '@dirrm lib32/.libGL/dri' >> ${TMPPLIST} @@ -74,7 +76,7 @@ post-install-script: echo '@dirrmtry lib32' >> ${TMPPLIST}; \ echo '@dirrm bin32' >> ${TMPPLIST} # Install nvidia patching script - ${INSTALL_SCRIPT} ${.CURDIR}/files/nvidia.sh ${STAGEDIR}${DATADIR}/patch-nvidia.sh + ${INSTALL_SCRIPT} ${SLAVEDIR}/files/nvidia.sh ${STAGEDIR}${DATADIR}/patch-nvidia.sh echo ${DATADIR:S|$(PREFIX)/||}/patch-nvidia.sh >> ${TMPPLIST} @${CAT} ${PKGMESSAGE} diff --git a/emulators/i386-wine/files/binbounce b/emulators/i386-wine/files/binbounce index ed7564cf488..6f950fa4155 100644 --- a/emulators/i386-wine/files/binbounce +++ b/emulators/i386-wine/files/binbounce @@ -11,10 +11,13 @@ then if [ `uname -p` = i386 ] then export LD_LIBRARY_PATH="$LOCALBASE/lib32":"$LOCALBASE/lib32/wine":"$LD_LIBRARY_PATH" + export LD_LIBRARY_PATH_RPATH=y else export LD_32_LIBRARY_PATH="$LOCALBASE/lib32":"$LOCALBASE/lib32/wine":"$LD_32_LIBRARY_PATH":/usr/lib32 + export LD_32_LIBRARY_PATH_RPATH=y fi export PATH="$LOCALBASE/bin32":"$PATH" + export __BINBOUNCE_BOOTSTRAP="1" fi exec "$LOCALBASE/bin32/$BINNAME" "$@" diff --git a/emulators/i386-wine/files/nvidia.sh b/emulators/i386-wine/files/nvidia.sh index 0f5c572f735..77bc58d8461 100644 --- a/emulators/i386-wine/files/nvidia.sh +++ b/emulators/i386-wine/files/nvidia.sh @@ -63,6 +63,11 @@ # - add deinstall option # Version 1.12 - 2013/11/03 # - add detection for i386-wine-devel +# Version 1.13 - 2014/08/05 +# - add detection for i386-wine-compholio +# Version 1.14 - 2014/12/26 +# - gracefully handle a corrupt nVidia tarball +# - provide checksum and size information for nVidia tarball set -e @@ -147,7 +152,7 @@ echo "===> Patching i386-wine to work with x11/nvidia-driver:" if [ -z "${WINE}" ] then - WINE=`version i386-wine; version i386-wine-devel` + WINE=`version i386-wine; version i386-wine-devel; version i386-wine-compholio` fi [ -n "$WINE" ] \ || terminate 255 "Unable to detect i386-wine, please install first" @@ -161,13 +166,18 @@ echo "=> Detected nvidia-driver: ${NV}" NVIDIA=${NV} NV=`echo ${NV} | cut -f 1 -d _ | cut -f 1 -d ,` -if [ ! -f NVIDIA-FreeBSD-x86-${NV}.tar.gz ] +if [ ! -f NVIDIA-FreeBSD-x86-${NV}.tar.gz ] || !(tar -tf NVIDIA-FreeBSD-x86-${NV}.tar.gz > /dev/null 2>&1) then [ -n "$NO_FETCH" ] \ && terminate 8 "NVIDIA-FreeBSD-x86-${NV}.tar.gz unavailable" echo "=> Downloading NVIDIA-FreeBSD-x86-${NV}.tar.gz from ftp://download.nvidia.com..." + rm -f NVIDIA-FreeBSD-x86-${NV}.tar.gz fetch -apRr ftp://download.nvidia.com/XFree86/FreeBSD-x86/${NV}/NVIDIA-FreeBSD-x86-${NV}.tar.gz \ || terminate 2 "Failed to download NVIDIA-FreeBSD-x86-${NV}.tar.gz" + echo "=> Downloaded NVIDIA-FreeBSD-x86-${NV}.tar.gz" + echo "Please check the following information against /usr/ports/x11/nvidia-driver/distinfo" + sha256 NVIDIA-FreeBSD-x86-${NV}.tar.gz + echo "SIZE (NVIDIA-FreeBSD-x86-${NV}.tar.gz) = `stat -f "%z" NVIDIA-FreeBSD-x86-${NV}.tar.gz`" fi echo "=> Extracting NVIDIA-FreeBSD-x86-${NV}.tar.gz to $PREFIX/lib32..." diff --git a/emulators/wine/Makefile b/emulators/wine/Makefile index 8044037c1d5..59b3adbcf1c 100644 --- a/emulators/wine/Makefile +++ b/emulators/wine/Makefile @@ -3,7 +3,7 @@ PORTNAME= wine DISTVERSION= 1.6.2 -PORTREVISION= 8 +PORTREVISION= 9 PORTEPOCH= 1 CATEGORIES= emulators MASTER_SITES= SF/${PORTNAME}/Source \ @@ -19,7 +19,8 @@ LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= ${LOCALBASE}/bin/flex:${PORTSDIR}/textproc/flex LIB_DEPENDS= libxml2.so:${PORTSDIR}/textproc/libxml2 -CONFLICTS_INSTALL= i386-wine-[0-9]* i386-wine-devel-[0-9]* wine-devel-[0-9]* +CONFLICTS_INSTALL= wine-compholio-[0-9]* wine-devel-[0-9]* i386-wine-[0-9]* \ + i386-wine-compholio-[0-9]* i386-wine-devel-[0-9]* CPPFLAGS+= -I${LOCALBASE}/include LDFLAGS+= -L${LOCALBASE}/lib |