Index: head/emulators/i386-wine-devel/Makefile.inc =================================================================== --- head/emulators/i386-wine-devel/Makefile.inc (revision 414584) +++ head/emulators/i386-wine-devel/Makefile.inc (revision 414585) @@ -1,103 +1,103 @@ # Created by: David Naylor # $FreeBSD$ PORTNAME= wine -PORTVERSION= 1.9.8 +PORTVERSION= 1.9.9 PORTEPOCH= 1 CATEGORIES= emulators MASTER_SITES= LOCAL/dbn/repos/wine/${DIST_SUBDIR}/ 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?= wine-[0-9]* wine-staging-[0-9]* wine-devel-[0-9]* \ i386-wine-[0-9]* i386-wine-staging-[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 ONLY_FOR_ARCHS= i386 amd64 ONLY_FOR_ARCHS_REASON= wine only runs on x86 architecture 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 BUNDLE_LIBS= yes GECKO_RUN_DEPENDS= ${DATADIR}/gecko/wine_gecko-2.44-x86.msi:emulators/wine-gecko-devel MONO_RUN_DEPENDS= ${DATADIR}/mono/wine-mono-4.6.0.msi:emulators/wine-mono-devel # Included for OPSYS and OSVERSION .include .for osrel in 9 10 11 .if ${OSREL:C/\..*//} == ${osrel} PLIST_SUB+= OSREL${osrel}="" .if ${PKGNAMESUFFIX} == -devel PLIST_SUB+= DEVEL="" PLIST_SUB+= STAGING="@comment " PLIST_SUB+= OSREL${osrel}-DEVEL="" PLIST_SUB+= OSREL${osrel}-STAGING="@comment " .else PLIST_SUB+= DEVEL="@comment " PLIST_SUB+= STAGING="" PLIST_SUB+= OSREL${osrel}-DEVEL="@comment " PLIST_SUB+= OSREL${osrel}-STAGING="" .endif .else PLIST_SUB+= OSREL${osrel}="@comment " PLIST_SUB+= OSREL${osrel}-DEVEL="@comment " PLIST_SUB+= OSREL${osrel}-STAGING="@comment " .endif .endfor .if ${OPSYS} != FreeBSD || (!(${OSVERSION} < 1000000) && !(${OSVERSION} >= 1001000 && ${OSVERSION} < 1100000) && !(${OSVERSION} >= 1100090 && ${OSVERSION} < 1200000)) IGNORE= binaries compiled for FreeBSD 9.3+, 10.1+ 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/${DISTNAME}/LICENSE' -s '|/usr/local/share/licenses/${DISTNAME}/||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 '/$$\|ldconfig32' | ${SED} 's|/usr/local/||g' | sort > ${PLIST} port-update: ${RM} -f ${SLAVEDIR}/distinfo ${SLAVEDIR}/distinfo~ ${SLAVEDIR}/pkg-plist.* .for osrel in 9 10 11 .for suffix in -devel -staging ${MAKE} fetch OSREL=${osrel} OSVERSION=${osrel}99999 UNAME_r=${osrel} PKGNAMESUFFIX=${suffix} ${MAKE} makesum OSREL=${osrel} OSVERSION=${osrel}99999 UNAME_r=${osrel} PKGNAMESUFFIX=${suffix} ${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 UNAME_r=${osrel} PKGNAMESUFFIX=${suffix} .endfor .endfor ${MV} ${SLAVEDIR}/distinfo~ ${SLAVEDIR}/distinfo python ${FILESDIR}/mergeplist.py ${SLAVEDIR}/pkg-plist.* > ${PLIST} ${RM} ${SLAVEDIR}/pkg-plist.* .include Index: head/emulators/i386-wine-devel/distinfo =================================================================== --- head/emulators/i386-wine-devel/distinfo (revision 414584) +++ head/emulators/i386-wine-devel/distinfo (revision 414585) @@ -1,12 +1,12 @@ -SHA256 (freebsd:9:x86:64/i386-wine-devel-1.9.8,1.txz) = d2b5ee3986becbe7a8c53661588e8428384968a162b37167ac284c67606f1f08 -SIZE (freebsd:9:x86:64/i386-wine-devel-1.9.8,1.txz) = 39057180 -SHA256 (freebsd:9:x86:64/i386-wine-staging-1.9.8,1.txz) = d921c79c93349f4c36967f36fc3346fc94fd9ac220732b2c8e1197e3e3b7a24f -SIZE (freebsd:9:x86:64/i386-wine-staging-1.9.8,1.txz) = 41742412 -SHA256 (freebsd:10:x86:64/i386-wine-devel-1.9.8,1.txz) = 843fcda863f261189e5f193eb0982d7cd7cf5db06b16c8fea9654b76fc9fd20b -SIZE (freebsd:10:x86:64/i386-wine-devel-1.9.8,1.txz) = 39168180 -SHA256 (freebsd:10:x86:64/i386-wine-staging-1.9.8,1.txz) = 55ed08344fb90ce2ac69c5cf0cd432eae6951754d922093e927cd5f3f9a94e8f -SIZE (freebsd:10:x86:64/i386-wine-staging-1.9.8,1.txz) = 41858004 -SHA256 (freebsd:11:x86:64/i386-wine-devel-1.9.8,1.txz) = f530c4ee3a2b2d1bc6963cb108c504126441a5540dab86293e28201f1f69263d -SIZE (freebsd:11:x86:64/i386-wine-devel-1.9.8,1.txz) = 38735048 -SHA256 (freebsd:11:x86:64/i386-wine-staging-1.9.8,1.txz) = 627b6a388c66b314e49cae2881bf6cf3d0b7a5ee1c80bb68ff4f6e2915a890bb -SIZE (freebsd:11:x86:64/i386-wine-staging-1.9.8,1.txz) = 41416612 +SHA256 (freebsd:9:x86:64/i386-wine-devel-1.9.9,1.txz) = 3e41676700b6bec7799a1ce1ef4daedb3d73d73e5d88567e347755c48f273c34 +SIZE (freebsd:9:x86:64/i386-wine-devel-1.9.9,1.txz) = 39102052 +SHA256 (freebsd:9:x86:64/i386-wine-staging-1.9.9,1.txz) = ad5799382d61bf46ad5dd8d96c437d96ec8610d0e08d14f6a1df55ad048cf92a +SIZE (freebsd:9:x86:64/i386-wine-staging-1.9.9,1.txz) = 41791860 +SHA256 (freebsd:10:x86:64/i386-wine-devel-1.9.9,1.txz) = 549bee9b7db9bb3ccc66a24a50d0b6ff7565f3137ce0d3cc5515c17c141da994 +SIZE (freebsd:10:x86:64/i386-wine-devel-1.9.9,1.txz) = 39200140 +SHA256 (freebsd:10:x86:64/i386-wine-staging-1.9.9,1.txz) = dd1942cc76c6258267fe52892fdf6385a4fdab42f28bbed2d3b580763fe2eb38 +SIZE (freebsd:10:x86:64/i386-wine-staging-1.9.9,1.txz) = 41895200 +SHA256 (freebsd:11:x86:64/i386-wine-devel-1.9.9,1.txz) = 8094d7c5eed593ccca98218538b55784de23fe55d184f68a9afc3e0318e3dd1a +SIZE (freebsd:11:x86:64/i386-wine-devel-1.9.9,1.txz) = 38768272 +SHA256 (freebsd:11:x86:64/i386-wine-staging-1.9.9,1.txz) = c5dc7dde83278a4a2ee9f9eb9d60f9bd1e6be1695939dcbe4cb02a6bcb92fc32 +SIZE (freebsd:11:x86:64/i386-wine-staging-1.9.9,1.txz) = 41441092 Index: head/emulators/i386-wine-devel/files/mergeplist.py =================================================================== --- head/emulators/i386-wine-devel/files/mergeplist.py (revision 414584) +++ head/emulators/i386-wine-devel/files/mergeplist.py (revision 414585) @@ -1,127 +1,128 @@ #!/usr/bin/env python2 import sys # # 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) # 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: + line = plists[0].peek() 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:])