emulators/i386-wine: Update to 5.0

Update to 5.0 and forward emulators/wine-devel improvements from revisions
r528784, r533164 and r533267. In particular, fix bug #244547.

PR:		244547, 244368
Approved by:	gerald (mentor)
Differential Revision:	https://reviews.freebsd.org/D24631
This commit is contained in:
Lorenzo Salvadore 2020-05-03 20:37:26 +00:00
parent 827d3f086e
commit 8962cd391c
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=533808
7 changed files with 375 additions and 263 deletions

View File

@ -17,4 +17,20 @@ COMMENT= 32-bit Microsoft Windows compatibility environment for 64-bit FreeBSD
ONLY_FOR_ARCHS= i386 amd64
CONFLICTS_INSTALL= wine-[0-9]* wine-devel-[0-9]* i386-wine-devel-[0-9]*
PKGINSTALL= ${.CURDIR}/files/pkg-install
PKGDEINSTALL= ${PKGINSTALL}
distinfo-update:
${RM} ${.CURDIR}/distinfo ${.CURDIR}/distinfo~
.for osrel in 11 12 13
${MAKE} fetch OSREL=${osrel} OSVERSION=${osrel}99999 _OSRELEASE=${osrel}
${MAKE} makesum OSREL=${osrel} OSVERSION=${osrel}99999 _OSRELEASE=${osrel}
${CAT} ${.CURDIR}/distinfo >> ${.CURDIR}/distinfo~
${RM} ${.CURDIR}/distinfo
.endfor
${SED} -e '2,$${' -e '/^TIMESTAMP/d' -e '}' distinfo~ > ${.CURDIR}/distinfo
${RM} ${.CURDIR}/distinfo~
.include <bsd.port.mk>

View File

@ -1,57 +1,49 @@
# Created by: David Naylor <dbn@FreeBSD.org>
# $FreeBSD$
DISTVERSION= 3.0.4
PORTREVISION= 1
DISTVERSION= 5.0
PORTEPOCH= 1
MASTER_SITES= LOCAL/dbn/repos/wine/${DIST_SUBDIR}/
MASTER_SITES= LOCAL/salvadore/i386-wine/${DIST_SUBDIR}/
DISTNAME= ${PKGNAME}
EXTRACT_SUFX= .txz
DIST_SUBDIR= freebsd:${OSREL:C/\..*//}:x86:64
DIST_SUBDIR= FreeBSD:${OSREL:C/\..*//}:amd64
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?= wine-[0-9]* wine-staging-[0-9]* wine-devel-[0-9]* \
i386-wine-staging-[0-9]* i386-wine-devel-[0-9]*
EXTRACT_AFTER_ARGS= -C / --exclude +COMPACT_MANIFEST --exclude +MANIFEST \
--exclude +MTREE_DIRS --exclude share/licenses/'*' \
--exclude libdata/ldconfig32/${PKGNAMEPREFIX}${PORTNAME} \
-s '|/usr/local|${STAGEDIR}${PREFIX}|gs'
NO_BUILD= yes
SLAVEDIR?= ${.CURDIR}
PKGINSTALL= ${SLAVEDIR}/files/pkg-install
PKGDEINSTALL= ${PKGINSTALL}
PKGMESSAGE= ${WRKDIR}/pkg-message
SUB_FILES= pkg-message
USE_LDCONFIG32= ${PREFIX}/lib32 ${PREFIX}/lib32/wine
USES= tar:xz
USES= tar:txz
BUNDLE_LIBS= yes
GECKO_RUN_DEPENDS= ${DATADIR}/gecko/wine-gecko-2.47.1-x86.msi:emulators/wine-gecko
MONO_RUN_DEPENDS= ${DATADIR}/mono/wine-mono-4.9.4.msi:emulators/wine-mono
PKGMESSAGE= ${WRKDIR}/pkg-message
PORTSCOUT= limitw:1,even
.for osrel in 11 12 13
.if ${OSREL:C/\..*//} == ${osrel}
PLIST_SUB+= OSREL${osrel}=""
PLIST_SUB+= NOOSREL${osrel}="@comment "
.else
PLIST_SUB+= OSREL${osrel}="@comment "
PLIST_SUB+= NOOSREL${osrel}=""
.endif
.endfor
.if ${OPSYS} != FreeBSD || (!(${OSVERSION} >= 1103000 && ${OSVERSION} < 1200000) && !(${OSVERSION} >= 1200086 && ${OSVERSION} < 1300000) && !(${OSVERSION} >= 1300003 && ${OSVERSION} < 1400000))
IGNORE= binaries compiled for FreeBSD 11.3+, 12.0+ and -current only
DISTFILES=
.if ${OPSYS} != FreeBSD || (!(${OSVERSION} >= 1103000 && ${OSVERSION} < 1200000) && !(${OSVERSION} >= 1201000 && ${OSVERSION} < 1300000) && !(${OSVERSION} >= 1300084 && ${OSVERSION} < 1400000))
IGNORE= binaries compiled for FreeBSD 11.3+, 12.1+ and 13.0-CURRENT (OSVERSION >= 1300084) only
.endif
OPTIONS_DEFINE= GECKO MONO
GECKO_DESC= Bundle Gecko MSI package for Wine
MONO_DESC= Bundle Mono MSI package for Wine
GECKO_RUN_DEPENDS= ${DATADIR}/gecko/wine-gecko-2.47.1-x86.msi:emulators/wine-gecko
MONO_RUN_DEPENDS= ${DATADIR}/mono/wine-mono-4.9.4.msi:emulators/wine-mono
do-extract:
@${RM} -r ${WRKDIR}
@${MKDIR} ${WRKDIR}
@ -59,19 +51,3 @@ do-extract:
do-install:
${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} ${_DISTDIR}/${EXTRACT_ONLY} ${EXTRACT_AFTER_ARGS}
${PLIST}: checksum
${TAR} -tf ${_DISTDIR}/${EXTRACT_ONLY} ${EXTRACT_AFTER_ARGS} | ${GREP} -v '/$$\|ldconfig32' | ${SED} 's|/usr/local/||g' | sort > ${PLIST}
port-update:
${RM} ${SLAVEDIR}/distinfo ${SLAVEDIR}/distinfo~ ${SLAVEDIR}/pkg-plist.*
.for osrel in 11 12 13
${MAKE} fetch OSREL=${osrel} OSVERSION=${osrel}99999 _OSRELEASE=${osrel}
${MAKE} makesum OSREL=${osrel} OSVERSION=${osrel}99999 _OSRELEASE=${osrel}
${CAT} ${SLAVEDIR}/distinfo >> ${SLAVEDIR}/distinfo~
${RM} ${SLAVEDIR}/distinfo
${MAKE} pkg-plist.${osrel}${suffix:tu} PLIST=pkg-plist.${osrel}${suffix:tu} OSREL=${osrel} OSVERSION=${osrel}99999 _OSRELEASE=${osrel} PKGNAMESUFFIX=${suffix}
.endfor
${SED} -e '2,$${' -e '/^TIMESTAMP/d' -e '}' distinfo~ > ${SLAVEDIR}/distinfo
python ${FILESDIR}/mergeplist.py ${SLAVEDIR}/pkg-plist.* > ${PLIST}
${RM} ${SLAVEDIR}/distinfo~ ${SLAVEDIR}/pkg-plist.*

View File

@ -2,16 +2,10 @@
# $FreeBSD$
# Use the wine port to do most of the heavy lifting
SLAVEDIR?= ${.CURDIR}
MASTERDIR= ${SLAVEDIR}/../wine
PKGINSTALL= ${SLAVEDIR}/files/pkg-install
PKGDEINSTALL= ${PKGINSTALL}
MASTERDIR= ${.CURDIR}/../wine
RUN_DEPENDS= mesa-dri>0:graphics/mesa-dri
CONFLICTS_INSTALL?= wine-[0-9]* wine-staging-[0-9]* wine-devel-[0-9]* \
i386-wine-staging-[0-9]* i386-wine-devel-[0-9]*
ACTUAL-PACKAGE-DEPENDS= ${DO_NADA}
WINELIBDIR= ${PREFIX}/lib32
CONFIGURE_ARGS+= --bindir=${PREFIX}/bin32 --libdir=${WINELIBDIR}
@ -31,7 +25,7 @@ post-install-script:
# Fix pkg-plist references
${REINPLACE_CMD} -e 's!lib/!lib32/!g' ${TMPPLIST}
# Install bounce script to access the 32-bit executables
${INSTALL_SCRIPT} ${SLAVEDIR}/files/binbounce ${STAGEDIR}${PREFIX}/bin/wine
${INSTALL_SCRIPT} ${.CURDIR}/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_CMD} bin32/$${i} >> ${TMPPLIST} ; \
@ -68,7 +62,7 @@ post-install-script:
fi ; \
done
# Install nvidia patching script
${INSTALL_SCRIPT} ${SLAVEDIR}/files/nvidia.sh ${STAGEDIR}${DATADIR}/patch-nvidia.sh
${INSTALL_SCRIPT} ${.CURDIR}/files/nvidia.sh ${STAGEDIR}${DATADIR}/patch-nvidia.sh
${ECHO_CMD} ${DATADIR:S|$(PREFIX)/||}/patch-nvidia.sh >> ${TMPPLIST}
.include "${MASTERDIR}/Makefile"

View File

@ -1,7 +1,7 @@
TIMESTAMP = 1544679897
SHA256 (freebsd:11:x86:64/i386-wine-3.0.4_1,1.txz) = fa07f56635e21e510dbefc8283adf672c5c4edefbb9afa16c096cb0fe86d5986
SIZE (freebsd:11:x86:64/i386-wine-3.0.4_1,1.txz) = 63947036
SHA256 (freebsd:12:x86:64/i386-wine-3.0.4_1,1.txz) = 4c1ed8d80b46c8db08a4240eb119535e33b4af6e2070491da0e9a0ec21251263
SIZE (freebsd:12:x86:64/i386-wine-3.0.4_1,1.txz) = 64474636
SHA256 (freebsd:13:x86:64/i386-wine-3.0.4_1,1.txz) = ef59c7ad96ece30e781fc61dbe61c5c973f4d46a9bdeb556d5ffef44ce3b12e5
SIZE (freebsd:13:x86:64/i386-wine-3.0.4_1,1.txz) = 64524548
TIMESTAMP = 1588246565
SHA256 (FreeBSD:11:amd64/i386-wine-5.0,1.txz) = 18967945475b8b98f21ee0f0b063b3450c30241ff8127bfd8f829cbe614176e8
SIZE (FreeBSD:11:amd64/i386-wine-5.0,1.txz) = 71647480
SHA256 (FreeBSD:12:amd64/i386-wine-5.0,1.txz) = a32f4c10ca4062854d47c1a2052c2872458a5d669a00bd4bb52e75f48324af1c
SIZE (FreeBSD:12:amd64/i386-wine-5.0,1.txz) = 71924448
SHA256 (FreeBSD:13:amd64/i386-wine-5.0,1.txz) = 0b402febf2caa60cfae326ed0f9830fb38eb74494f58bd4355db270dab7a9e43
SIZE (FreeBSD:13:amd64/i386-wine-5.0,1.txz) = 73941832

View File

@ -1,127 +0,0 @@
#!/usr/bin/env python2
import sys
# <recipe url="http://code.activestate.com/recipes/576694/" license="MIT">
# added peek() method
import collections
class OrderedSet(collections.MutableSet):
def __init__(self, iterable=None):
self.end = end = []
end += [None, end, end] # sentinel node for doubly linked list
self.map = {} # key --> [key, prev, next]
if iterable is not None:
self |= iterable
def __len__(self):
return len(self.map)
def __contains__(self, key):
return key in self.map
def add(self, key):
if key not in self.map:
end = self.end
curr = end[1]
curr[2] = end[1] = self.map[key] = [key, curr, end]
def discard(self, key):
if key in self.map:
key, prev, next = self.map.pop(key)
prev[2] = next
next[1] = prev
def peek(self, last=False):
end = self.end
curr = end[1] if last else end[2]
if curr is not end:
return curr[0]
raise IndexError("OrderedSet is empty, cannot peek item")
def __iter__(self):
end = self.end
curr = end[2]
while curr is not end:
yield curr[0]
curr = curr[2]
def __reversed__(self):
end = self.end
curr = end[1]
while curr is not end:
yield curr[0]
curr = curr[1]
def pop(self, last=False):
if not self:
raise KeyError('set is empty')
key = self.end[1][0] if last else self.end[2][0]
self.discard(key)
return key
def __repr__(self):
if not self:
return '%s()' % (self.__class__.__name__,)
return '%s(%r)' % (self.__class__.__name__, list(self))
def __eq__(self, other):
if isinstance(other, OrderedSet):
return len(self) == len(other) and list(self) == list(other)
return set(self) == set(other)
#</recipe>
def main(plists):
prev = prev_short = None
for line in gen_list(plists):
if line.startswith("%%"):
line_short = line.split("%%", 3)[1:]
line_short = "%%%%%s%%%%%s" % (line_short[0].split("-", 2)[0], line_short[1])
if prev_short == line_short:
print(line_short)
line = line_short = None
elif prev is not None:
print(prev)
prev, prev_short = line, line_short
else:
if prev is not None:
print(prev)
prev = prev_short = None
print line
if prev is not None:
print(prev)
def gen_list(plists):
plists_len = len(plists)
plists.sort(key=lambda x: int(x.rsplit('.', 2)[-1].split('-', 2)[0]))
names = ["OSREL" + plist.rsplit('.', 2)[-1] for plist in plists]
for i in range(plists_len):
with open(plists[i], 'r') as file:
plists[i] = OrderedSet(line.strip() for line in file.readlines())
empty = sum(len(plist) == 0 for plist in plists)
while empty < plists_len:
line = plists[0].peek()
# Test if the top of the plists are all common
if not empty and all(line == plist.peek() for plist in plists):
yield line
for plist in plists:
plist.pop()
else:
# Find which of the plists have non-common lines
lines = {}
for i in range(plists_len):
while len(plists[i]) and not all(plists[i].peek() in plist for plist in plists):
lines.setdefault(plists[i].pop(), []).append(names[i])
for line in sorted(lines.keys()):
suffix = lines[line][0].split('-', 2)
suffix = len(suffix) == 2 and suffix[-1]
if suffix and all(name.split('-', 2)[-1] == suffix for name in lines[line]):
yield "%%" + suffix + "%%" + line
else:
for name in lines[line]:
yield "%%" + name + "%%" + line
empty = sum(len(plist) == 0 for plist in plists)
if __name__ == '__main__':
main(sys.argv[1:])

View File

@ -1,6 +1,7 @@
#!/bin/sh
# Copyright 2010 to 2015 David Naylor <dbn@FreeBSD.org>
# Copyright 2012 Jan Beich <jbeich@tormail.org>
# Copyright 2020 Lorenzo Salvadore <salvadore@FreeBSD.org>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@ -74,6 +75,8 @@
# - remove support for old pkg_ tools
# Version 1.16 - 2017/06/04
# - use https download site
# Version 1.17 - 2020/03/02
# - do not do anything if nvidia-driver version >= 440.59
set -e
@ -168,6 +171,11 @@ echo "=> Detected nvidia-driver: ${NV}"
NVIDIA=${NV}
NV=`echo ${NV} | cut -f 1 -d _ | cut -f 1 -d ,`
if [ ! "$(pkg version -t ${NV} 440.59)" == "<" ]
then
terminate 0 "nvidia-driver 440.59+ already includes 32-bit drivers: nothing to do"
fi
if [ ! -f NVIDIA-FreeBSD-x86-${NV}.tar.gz ] || !(tar -tf NVIDIA-FreeBSD-x86-${NV}.tar.gz > /dev/null 2>&1)
then
[ -n "$NO_FETCH" ] \

File diff suppressed because it is too large Load Diff