Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Dec 2019 01:39:00 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r520890 - in head/emulators/yuzu: . files
Message-ID:  <201912260139.xBQ1d0Rt011334@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Thu Dec 26 01:39:00 2019
New Revision: 520890
URL: https://svnweb.freebsd.org/changeset/ports/520890

Log:
  emulators/yuzu: backport python3 support

Added:
  head/emulators/yuzu/files/patch-python3   (contents, props changed)
Modified:
  head/emulators/yuzu/Makefile   (contents, props changed)

Modified: head/emulators/yuzu/Makefile
==============================================================================
--- head/emulators/yuzu/Makefile	Thu Dec 26 00:37:24 2019	(r520889)
+++ head/emulators/yuzu/Makefile	Thu Dec 26 01:39:00 2019	(r520890)
@@ -50,7 +50,7 @@ GH_TUPLE=	yuzu-emu:unicorn:1.0.1-153-g73f45735:unicorn
 		xiph:opus:v1.3.1-4-gad8fe90d:opus/externals/opus/opus
 
 USES=		cmake compiler:c++17-lang iconv localbase:ldflags \
-		python:2.7,build sdl
+		python:build sdl
 USE_SDL=	sdl2
 LDFLAGS+=	-Wl,--as-needed # Qt5Network
 TEST_TARGET=	test

Added: head/emulators/yuzu/files/patch-python3
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/emulators/yuzu/files/patch-python3	Thu Dec 26 01:39:00 2019	(r520890)
@@ -0,0 +1,280 @@
+https://github.com/yuzu-emu/yuzu/issues/3066
+https://github.com/unicorn-engine/unicorn/commit/f4cc35a24afb
+
+--- externals/unicorn/CREDITS.TXT.orig	2018-01-04 00:41:12 UTC
++++ externals/unicorn/CREDITS.TXT
+@@ -67,3 +67,4 @@ Andrew Dutcher: uc_context_{save, restore} API.
+ Stephen Groat: improved CI setup.
+ David Zimmer: VB6 binding.
+ zhangwm: ARM & ARM64 big endian.
++Huitao Chen (chenhuitao) & KaiJern Lau (xwings): Python3 support for building
+--- externals/unicorn/qemu/configure.orig	2018-01-04 00:41:12 UTC
++++ externals/unicorn/qemu/configure
+@@ -554,9 +554,8 @@ fi
+ 
+ # Note that if the Python conditional here evaluates True we will exit
+ # with status 1 which is a shell 'false' value.
+-if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
++if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4))'; then
+   error_exit "Cannot use '$python', Python 2.4 or later is required." \
+-      "Note that Python 3 or later is not yet supported." \
+       "Use --python=/path/to/python to specify a supported Python."
+ fi
+ 
+--- externals/unicorn/qemu/scripts/ordereddict.py.orig	2018-01-04 00:41:12 UTC
++++ externals/unicorn/qemu/scripts/ordereddict.py
+@@ -20,7 +20,12 @@
+ #     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ #     OTHER DEALINGS IN THE SOFTWARE.
+ 
+-from UserDict import DictMixin
++try:
++    from UserDict import UserDict
++    from UserDict import DictMixin
++except ImportError:
++    from collections import UserDict
++    from collections import MutableMapping as DictMixin
+ 
+ class OrderedDict(dict, DictMixin):
+ 
+@@ -94,9 +99,6 @@ class OrderedDict(dict, DictMixin):
+     pop = DictMixin.pop
+     values = DictMixin.values
+     items = DictMixin.items
+-    iterkeys = DictMixin.iterkeys
+-    itervalues = DictMixin.itervalues
+-    iteritems = DictMixin.iteritems
+ 
+     def __repr__(self):
+         if not self:
+--- externals/unicorn/qemu/scripts/qapi-types.py.orig	2018-01-04 00:41:12 UTC
++++ externals/unicorn/qemu/scripts/qapi-types.py
+@@ -171,7 +171,7 @@ const int %(name)s_qtypes[QTYPE_MAX] = {
+ 
+     for key in members:
+         qapi_type = members[key]
+-        if builtin_type_qtypes.has_key(qapi_type):
++        if qapi_type in builtin_type_qtypes:
+             qtype = builtin_type_qtypes[qapi_type]
+         elif find_struct(qapi_type):
+             qtype = "QTYPE_QDICT"
+@@ -284,8 +284,8 @@ try:
+     opts, args = getopt.gnu_getopt(sys.argv[1:], "chbp:i:o:",
+                                    ["source", "header", "builtins",
+                                     "prefix=", "input-file=", "output-dir="])
+-except getopt.GetoptError, err:
+-    print str(err)
++except getopt.GetoptError as err:
++    print(str(err))
+     sys.exit(1)
+ 
+ output_dir = ""
+@@ -321,7 +321,7 @@ h_file = output_dir + prefix + h_file
+ 
+ try:
+     os.makedirs(output_dir)
+-except os.error, e:
++except os.error as e:
+     if e.errno != errno.EEXIST:
+         raise
+ 
+@@ -329,8 +329,12 @@ def maybe_open(really, name, opt):
+     if really:
+         return open(name, opt)
+     else:
+-        import StringIO
+-        return StringIO.StringIO()
++        try:
++            import StringIO
++            return StringIO.StringIO()
++        except ImportError:
++            from io import StringIO
++            return StringIO()
+ 
+ fdef = maybe_open(do_c, c_file, 'w')
+ fdecl = maybe_open(do_h, h_file, 'w')
+@@ -383,7 +387,8 @@ fdecl.write(mcgen('''
+                   guard=guardname(h_file)))
+ 
+ exprs = parse_schema(input_file)
+-exprs = filter(lambda expr: not expr.has_key('gen'), exprs)
++exprs = filter(lambda expr: 'gen' not in expr, exprs)
++exprs = list(exprs)
+ 
+ fdecl.write(guardstart("QAPI_TYPES_BUILTIN_STRUCT_DECL"))
+ for typename in builtin_types:
+@@ -392,13 +397,13 @@ fdecl.write(guardend("QAPI_TYPES_BUILTIN_STRUCT_DECL")
+ 
+ for expr in exprs:
+     ret = "\n"
+-    if expr.has_key('type'):
++    if 'type' in expr:
+         ret += generate_fwd_struct(expr['type'], expr['data'])
+-    elif expr.has_key('enum'):
++    elif 'enum' in expr:
+         ret += generate_enum(expr['enum'], expr['data']) + "\n"
+         ret += generate_fwd_enum_struct(expr['enum'], expr['data'])
+         fdef.write(generate_enum_lookup(expr['enum'], expr['data']))
+-    elif expr.has_key('union'):
++    elif 'union' in expr:
+         ret += generate_fwd_struct(expr['union'], expr['data']) + "\n"
+         enum_define = discriminator_find_enum_define(expr)
+         if not enum_define:
+@@ -429,19 +434,19 @@ if do_builtins:
+ 
+ for expr in exprs:
+     ret = "\n"
+-    if expr.has_key('type'):
++    if 'type' in expr:
+         ret += generate_struct(expr) + "\n"
+         ret += generate_type_cleanup_decl(expr['type'] + "List")
+         fdef.write(generate_type_cleanup(expr['type'] + "List") + "\n")
+         ret += generate_type_cleanup_decl(expr['type'])
+         fdef.write(generate_type_cleanup(expr['type']) + "\n")
+-    elif expr.has_key('union'):
++    elif 'union' in expr:
+         ret += generate_union(expr)
+         ret += generate_type_cleanup_decl(expr['union'] + "List")
+         fdef.write(generate_type_cleanup(expr['union'] + "List") + "\n")
+         ret += generate_type_cleanup_decl(expr['union'])
+         fdef.write(generate_type_cleanup(expr['union']) + "\n")
+-    elif expr.has_key('enum'):
++    elif 'enum' in expr:
+         ret += generate_type_cleanup_decl(expr['enum'] + "List")
+         fdef.write(generate_type_cleanup(expr['enum'] + "List") + "\n")
+     else:
+--- externals/unicorn/qemu/scripts/qapi-visit.py.orig	2018-01-04 00:41:12 UTC
++++ externals/unicorn/qemu/scripts/qapi-visit.py
+@@ -439,8 +439,8 @@ try:
+     opts, args = getopt.gnu_getopt(sys.argv[1:], "chbp:i:o:",
+                                    ["source", "header", "builtins", "prefix=",
+                                     "input-file=", "output-dir="])
+-except getopt.GetoptError, err:
+-    print str(err)
++except getopt.GetoptError as err:
++    print(str(err))
+     sys.exit(1)
+ 
+ input_file = ""
+@@ -476,7 +476,7 @@ h_file = output_dir + prefix + h_file
+ 
+ try:
+     os.makedirs(output_dir)
+-except os.error, e:
++except os.error as e:
+     if e.errno != errno.EEXIST:
+         raise
+ 
+@@ -484,8 +484,12 @@ def maybe_open(really, name, opt):
+     if really:
+         return open(name, opt)
+     else:
+-        import StringIO
+-        return StringIO.StringIO()
++        try:
++            import StringIO
++            return StringIO.StringIO()
++        except ImportError:
++            from io import StringIO
++            return StringIO()
+ 
+ fdef = maybe_open(do_c, c_file, 'w')
+ fdecl = maybe_open(do_h, h_file, 'w')
+@@ -554,14 +558,14 @@ if do_builtins:
+         fdef.write(generate_visit_list(typename, None))
+ 
+ for expr in exprs:
+-    if expr.has_key('type'):
++    if 'type' in expr:
+         ret = generate_visit_struct(expr)
+         ret += generate_visit_list(expr['type'], expr['data'])
+         fdef.write(ret)
+ 
+         ret = generate_declaration(expr['type'], expr['data'])
+         fdecl.write(ret)
+-    elif expr.has_key('union'):
++    elif 'union' in expr:
+         ret = generate_visit_union(expr)
+         ret += generate_visit_list(expr['union'], expr['data'])
+         fdef.write(ret)
+@@ -573,7 +577,7 @@ for expr in exprs:
+                                      expr['data'].keys())
+         ret += generate_declaration(expr['union'], expr['data'])
+         fdecl.write(ret)
+-    elif expr.has_key('enum'):
++    elif 'enum' in expr:
+         ret = generate_visit_list(expr['enum'], expr['data'])
+         ret += generate_visit_enum(expr['enum'], expr['data'])
+         fdef.write(ret)
+--- externals/unicorn/qemu/scripts/qapi.py.orig	2018-01-04 00:41:12 UTC
++++ externals/unicorn/qemu/scripts/qapi.py
+@@ -16,6 +16,11 @@ from ordereddict import OrderedDict
+ import os
+ import sys
+ 
++try:
++    basestring
++except NameError:
++    basestring = str
++
+ builtin_types = [
+     'str', 'int', 'number', 'bool',
+     'int8', 'int16', 'int32', 'int64',
+@@ -116,7 +121,7 @@ class QAPISchema:
+                     continue
+                 try:
+                     fobj = open(include_path, 'r')
+-                except IOError, e:
++                except IOError as e:
+                     raise QAPIExprError(expr_info,
+                                         '%s: %s' % (e.strerror, include))
+                 exprs_include = QAPISchema(fobj, include, self.include_hist,
+@@ -319,15 +324,15 @@ def check_union(expr, expr_info):
+ def check_exprs(schema):
+     for expr_elem in schema.exprs:
+         expr = expr_elem['expr']
+-        if expr.has_key('union'):
++        if 'union' in expr:
+             check_union(expr, expr_elem['info'])
+-        if expr.has_key('event'):
++        if 'event' in expr:
+             check_event(expr, expr_elem['info'])
+ 
+ def parse_schema(input_file):
+     try:
+         schema = QAPISchema(open(input_file, "r"))
+-    except (QAPISchemaError, QAPIExprError), e:
++    except (QAPISchemaError, QAPIExprError) as e:
+         print >>sys.stderr, e
+         exit(1)
+ 
+@@ -335,24 +340,24 @@ def parse_schema(input_file):
+ 
+     for expr_elem in schema.exprs:
+         expr = expr_elem['expr']
+-        if expr.has_key('enum'):
++        if 'enum' in expr:
+             add_enum(expr['enum'], expr['data'])
+-        elif expr.has_key('union'):
++        elif 'union' in expr:
+             add_union(expr)
+-        elif expr.has_key('type'):
++        elif 'type' in expr:
+             add_struct(expr)
+         exprs.append(expr)
+ 
+     # Try again for hidden UnionKind enum
+     for expr_elem in schema.exprs:
+         expr = expr_elem['expr']
+-        if expr.has_key('union'):
++        if 'union' in expr:
+             if not discriminator_find_enum_define(expr):
+                 add_enum('%sKind' % expr['union'])
+ 
+     try:
+         check_exprs(schema)
+-    except QAPIExprError, e:
++    except QAPIExprError as e:
+         print >>sys.stderr, e
+         exit(1)
+ 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912260139.xBQ1d0Rt011334>