Index: head/emulators/i386-wine-devel/Makefile.i386 =================================================================== --- head/emulators/i386-wine-devel/Makefile.i386 (revision 364423) +++ head/emulators/i386-wine-devel/Makefile.i386 (revision 364424) @@ -1,87 +1,88 @@ # Created by: David Naylor # $FreeBSD$ PKGNAMEPREFIX= i386- MAINTAINER= dbn@FreeBSD.org COMMENT= 32bit Microsoft Windows compatibility environment for 64bit FreeBSD # Use the wine port to do most of the heavy lifting -MASTERDIR= ${.CURDIR}/../wine-devel -PKGINSTALL= ${.CURDIR}/files/pkg-install +SLAVEDIR?= ${.CURDIR} +MASTERDIR= ${SLAVEDIR}/../wine-devel +PKGINSTALL= ${SLAVEDIR}/files/pkg-install PKGDEINSTALL= ${PKGINSTALL} RUN_DEPENDS= dri>0:${PORTSDIR}/graphics/dri CONFLICTS_INSTALL= i386-wine-[0-9]* wine-[0-9]* wine-devel-[0-9]* ACTUAL-PACKAGE-DEPENDS= ${DO_NADA} WINELIBDIR= ${PREFIX}/lib32 CONFIGURE_ARGS+= --bindir=${PREFIX}/bin32 --libdir=${WINELIBDIR} PLIST_REINPLACE+= winelib PLIST_REINPLACE_WINELIB= s!lib/!lib32/!g WINE_SLAVE_BUILD= yes USE_LDCONFIG32= ${WINELIBDIR} ${WINELIBDIR}/wine # Hook into post-install and do some adapting to make i386 binaries work nicely # under FreeBSD/amd64 post-install-script: # 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) ${MKDIR} ${STAGEDIR}${PREFIX}/lib32/.libGL/dri 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 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' ' | \ env LD_LIBRARY_PATH=${STAGEDIR}${PREFIX}/lib32:${LD_LIBRARY_PATH} xargs ldd -f '%p\n' \ | 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 \ ${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} echo '@dirrm lib32/.libGL' >> ${TMPPLIST} if [ -n "${WITH_PKGNG}" ]; then \ echo '@dirrmtry lib32' >> ${TMPPLIST}; \ else \ echo '@unexec rmdir %D/lib32 2>/dev/null || true' >> ${TMPPLIST}; \ fi 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} post-package-script: if [ -n "${WITH_PKGNG}" -a -z "${PACKAGE_BUILDING}" ]; then \ ${XZ_CMD} -dc ${PKGFILE} | \ ${SED} -e 's/\(freebsd:.*:x86\):32/\1:64/' -e 's/\(freebsd:.*:x86\):32/\1:64/' | \ ${XZ_CMD} > ${WRKDIR}/${PKGNAME}${PKG_SUFX}; \ ${MV} ${WRKDIR}/${PKGNAME}${PKG_SUFX} ${PKGFILE}; \ fi .include "${MASTERDIR}/Makefile" Index: head/emulators/i386-wine-devel/Makefile.inc =================================================================== --- head/emulators/i386-wine-devel/Makefile.inc (revision 364423) +++ head/emulators/i386-wine-devel/Makefile.inc (revision 364424) @@ -1,86 +1,88 @@ # Created by: David Naylor # $FreeBSD$ PORTNAME= wine PORTVERSION= 1.7.23 PORTEPOCH= 1 CATEGORIES= emulators MASTER_SITES= LOCAL/dbn/repos/wine/${DIST_SUBDIR}/${PORTVERSION} PKGNAMEPREFIX= i386- PKGNAMESUFFIX= -devel DISTNAME= ${PKGNAME} EXTRACT_SUFX= .txz DIST_SUBDIR= freebsd:${OSREL:C/\..*//}:x86:64 MAINTAINER= dbn@FreeBSD.org COMMENT= 32bit Microsoft Windows compatibility environment for 64bit FreeBSD LICENSE= LGPL21 LGPL3 LICENSE_COMB= dual LICENSE_FILE= ${WRKDIR}/LICENSE OPTIONS_DEFINE= GECKO MONO GECKO_DESC= Bundle Gecko MSI package for Wine MONO_DESC= Bundle Mono MSI package for Wine CONFLICTS_INSTALL= i386-wine-[0-9]* wine-[0-9]* wine-devel-[0-9]* EXTRACT_AFTER_ARGS= -C / --exclude +COMPACT_MANIFEST --exclude +MANIFEST \ --exclude +MTREE_DIRS --exclude share/licenses/'*' \ --exclude libdata/ldconfig32/${UNIQUENAME} \ -s '|/usr/local|${STAGEDIR}${PREFIX}|gs' NO_BUILD= yes ONLY_FOR_ARCHS= i386 amd64 ONLY_FOR_ARCHS_REASON= wine only runs on x86 architecture PKGINSTALL= ${.CURDIR}/files/pkg-install PKGDEINSTALL= ${PKGINSTALL} PKGMESSAGE= ${WRKDIR}/pkg-message SUB_FILES= pkg-message USE_LDCONFIG32= ${PREFIX}/lib32 ${PREFIX}/lib32/wine USES= tar:xz GECKO_RUN_DEPENDS= ${DATADIR}/gecko/wine_gecko-2.24-x86.msi:${PORTSDIR}/emulators/wine-gecko-devel MONO_RUN_DEPENDS= ${DATADIR}/mono/wine-mono-4.5.2.msi:${PORTSDIR}/emulators/wine-mono-devel # Included for OPSYS and OSVERSION .include .for osrel in 8 9 10 11 .if ${OSREL:C/\..*//} == ${osrel} PLIST_SUB+= OSREL${osrel}="" .else PLIST_SUB+= OSREL${osrel}="@comment " .endif .endfor .if ${OPSYS} != FreeBSD || (!(${OSVERSION} >= 803000 && ${OSVERSION} < 900000) && !(${OSVERSION} >= 901000 && ${OSVERSION} < 1000000) && !(${OSVERSION} >= 1000510 && ${OSVERSION} < 1100000) && !(${OSVERSION} >= 1100019 && ${OSVERSION} < 1200000)) IGNORE= binaries compiled for FreeBSD 8.3+, 9.1+, 10.0+ and -current only DISTFILES= .endif do-extract: @${RM} -rf ${WRKDIR} @${MKDIR} ${WRKDIR} ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/${EXTRACT_ONLY} -C ${WRKDIR} --include '/usr/local/share/licenses/${PKGNAME}/LICENSE' -s '|/usr/local/share/licenses/${PKGNAME}/||g' do-install: ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/${EXTRACT_ONLY} ${EXTRACT_AFTER_ARGS} ${PLIST}: fetch ${TAR} -tf ${_DISTDIR}/${EXTRACT_ONLY} ${EXTRACT_AFTER_ARGS} | ${GREP} -v '/$$' | ${SED} 's|/usr/local/||g' | sort > ${PLIST} ${TAR} -tf ${_DISTDIR}/${EXTRACT_ONLY} ${EXTRACT_AFTER_ARGS} | ${GREP} '/$$' | ${SED} -e 's|/usr/local/\(.*\)/$$|@dirrm \1|g' -e 's|/$$||g' -e 's|@dirrm man|@dirrmtry man|g' | sort -r >> ${PLIST} port-update: ${RM} -f ${.CURDIR}/distinfo ${.CURDIR}/distinfo~ ${.CURDIR}/pkg-plist.* .for osrel in 8 9 10 11 - ${MAKE} fetch OSREL=${osrel} - ${MAKE} makesum OSREL=${osrel} +.for suffix in -devel -compholio + ${MAKE} fetch OSREL=${osrel} PKGNAMESUFFIX=${suffix} + ${MAKE} makesum OSREL=${osrel} PKGNAMESUFFIX=${suffix} ${CAT} ${.CURDIR}/distinfo >> ${.CURDIR}/distinfo~ ${RM} ${.CURDIR}/distinfo - ${MAKE} pkg-plist.${osrel} PLIST=pkg-plist.${osrel} OSREL=${osrel} + [ "${suffix}" != "-devel" ] || ${MAKE} pkg-plist.${osrel} PLIST=pkg-plist.${osrel} OSREL=${osrel} +.endfor .endfor ${MV} ${.CURDIR}/distinfo~ ${.CURDIR}/distinfo python ${FILESDIR}/mergeplist.py ${.CURDIR}/pkg-plist.* > ${PLIST} ${RM} ${.CURDIR}/pkg-plist.* .include Index: head/emulators/i386-wine-devel/files/binbounce =================================================================== --- head/emulators/i386-wine-devel/files/binbounce (revision 364423) +++ head/emulators/i386-wine-devel/files/binbounce (revision 364424) @@ -1,20 +1,23 @@ #!/bin/sh TARGET="`realpath $0`" LOCALBASE=${TARGET%/*}/.. BINNAME=${TARGET##*/} if [ -z "$__BINBOUNCE_BOOTSTRAP" ] then export LIBGL_DRIVERS_PATH=$LOCALBASE/lib32/dri if [ `uname -p` = i386 ] then export LD_LIBRARY_PATH="$LOCALBASE/lib32":"$LOCALBASE/lib32/wine":"$LD_LIBRARY_PATH" + export LD_LIBRARY_PATH_RPATH="$LOCALBASE/lib32":"$LOCALBASE/lib32/wine":"$LD_LIBRARY_PATH_RPATH" else export LD_32_LIBRARY_PATH="$LOCALBASE/lib32":"$LOCALBASE/lib32/wine":"$LD_32_LIBRARY_PATH":/usr/lib32 + export LD_32_LIBRARY_PATH_RPATH="$LOCALBASE/lib32":"$LOCALBASE/lib32/wine":"$LD_32_LIBRARY_PATH_RPATH":/usr/lib32 fi export PATH="$LOCALBASE/bin32":"$PATH" + export __BINBOUNCE_BOOTSTRAP="1" fi exec "$LOCALBASE/bin32/$BINNAME" "$@" Index: head/emulators/i386-wine-devel/files/nvidia.sh =================================================================== --- head/emulators/i386-wine-devel/files/nvidia.sh (revision 364423) +++ head/emulators/i386-wine-devel/files/nvidia.sh (revision 364424) @@ -1,203 +1,205 @@ #!/bin/sh # Copyright 2010, 2011, 2012, 2013 David Naylor . # Copyright 2012 Jan Beich # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY David Naylor ``AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL David Naylor OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, # OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # The views and conclusions contained in the software and documentation are # those of the authors and should not be interpreted as representing official # policies, either expressed or implied, of David Naylor. # Version 1.0 - 2010/05/28 # - initial release # Version 1.1 - 2010/10/04 # - add support for 256 driver series # - use passive connections for FTP # - allow resuming of downloads if they were interrupted # - add license and copyright notice # Version 1.2 - 2010/10/17 # - try to save the NVIDIA tarball under $PORTSDIR/distfiles # - obay $PREFIX # - extract files directly to destination (avoids using /tmp) # Version 1.3 - 2010/11/02 # - add support for future driver series # Version 1.4 - 2011/05/23 # - add support for legacy drivers # Version 1.5 - 2011/10/23 # - add support for no-fetch mode # - backup the original openGL.so.1 library # Version 1.6 - 2012/06/06 # - add support for pkgng # Version 1.7 - 2012/06/23 # - make nVidia detection more robust # - allow mixed pkg/pkgng operation # Version 1.8 - 2012/07/02 # - fix mixed pkg/pkgng operation # Version 1.9 - 2012/10/31 # - fix permission of extracts files # Version 1.10 - 2013/05/06 # - s/wine-fbsd64/i386-wine/g # - fix unwanted failures due to `set -e` # Version 1.11 - 2013/05/26 # - install libGL.so.1 to ${PREFIX}/lib32/.nvidia and link to it # - 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 set -e PORTSDIR=${PORTSDIR:-/usr/ports} PREFIX=${PREFIX:-/usr/local} DISTDIR=${DISTDIR:-${PORTSDIR}/distfiles} if [ -d $DISTDIR ] then cd $DISTDIR NO_REMOVE_NVIDIA="yes" else cd /tmp/ fi terminate() { echo "!!! $2 !!!" echo "Terminating..." exit $1 } args=`getopt dn $*` if [ $? -ne 0 ] then echo "Usage: $0 [-n]" exit 7 fi set -- $args while true do case $1 in -d) rm -f ${PREFIX}/lib32/libGL.so.1 rm -f ${PREFIX}/lib32/libGLcore.so.1 ${PREFIX}/lib32/libnvidia-tls.so.1 rm -f ${PREFIX}/lib32/libnvidia-glcore.so.1 ${PREFIX}/lib32/libnvidia-tls.so.1 rm -rf ${PREFIX}/lib32/.nvidia/ if [ -d ${PREFIX}/lib32/.libGL-new ] then ln -s .libGL-new/libGL.so.1 ${PREFIX}/lib32/libGL.so.1 else ln -s .libGL/libGL.so.1 ${PREFIX}/lib32/libGL.so.1 fi exit 0 ;; -n) NO_FETCH=yes ;; --) shift break ;; esac shift done version() { local ret pkg="$1" if [ -f "/usr/local/sbin/pkg" ] then ret=`pkg query -g '%v' $pkg || true` fi if [ -z "$ret" ] then ret=`pkg_info -E $pkg'*' | cut -f 3 -d - || true` fi # installed manually or failed to register if [ -z "$ret" ] && [ "$pkg" = "nvidia-driver" ] then ret=`sed -n "s/.*Version: //p" 2> /dev/null \ $PREFIX/share/doc/NVIDIA_GLX-1.0/README || true` fi echo "$ret" } [ `whoami` = root ] \ || terminate 254 "This script should be run as root" 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" echo "=> Detected i386-wine: ${WINE}" NV=`version nvidia-driver` [ -n "$NV" ] \ || terminate 1 "Unable to detect nvidia-driver, please install first" 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 ] 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..." 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" fi echo "=> Extracting NVIDIA-FreeBSD-x86-${NV}.tar.gz to $PREFIX/lib32..." EXTRACT_LIST="libGL.so.1" case $NV in 195*|173*|96*|71*) EXTRACT_LIST="$EXTRACT_LIST libGLcore.so.1 libnvidia-tls.so.1" ;; *) EXTRACT_LIST="$EXTRACT_LIST libnvidia-glcore.so.1 libnvidia-tls.so.1" ;; esac EXTRACT_ARGS="--no-same-owner --no-same-permissions --strip-components 2 -C $PREFIX/lib32" for i in $EXTRACT_LIST do EXTRACT_ARGS="$EXTRACT_ARGS --include NVIDIA-FreeBSD-x86-${NV}/obj/$i" done umask 0333 tar $EXTRACT_ARGS -xvf NVIDIA-FreeBSD-x86-${NV}.tar.gz \ || terminate 3 "Failed to extract NVIDIA-FreeBSD-x86-${NV}.tar.gz" mkdir -m 0755 -p ${PREFIX}/lib32/.nvidia \ || terminate 9 "Failed to create .nvidia shadow directory" mv ${PREFIX}/lib32/libGL.so.1 ${PREFIX}/lib32/.nvidia/ \ || terminate 10 "Failed to move libGL.so.1 to .nvidia/ shadow directory" ln -s .nvidia/libGL.so.1 ${PREFIX}/lib32/libGL.so.1 \ || terminate 11 "Failed to link to .nvidia/libGL.so.1 in the shadow directory" echo "=> Cleaning up..." [ -n "$NO_REMOVE_NVIDIA" ] || rm -vf NVIDIA-FreeBSD-x86-${NV}.tar.gz \ || terminate 6 "Failed to remove files" echo "===> i386-wine-${WINE} successfully patched for nvidia-driver-${NVIDIA}"