From 0b8da5fde3a371f9d34bc27da3def771ef0d5401 Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Wed, 25 Oct 2023 22:26:25 -0400 Subject: [PATCH 1/2] libretro.mame2015: fix build on Python 3.11+ Since Python 3.11, `open()` etc. no longer accept `U` flag. --- .../emulators/retroarch/cores.nix | 1 + .../patches/mame2015-python311.patch | 61 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 pkgs/applications/emulators/retroarch/patches/mame2015-python311.patch diff --git a/pkgs/applications/emulators/retroarch/cores.nix b/pkgs/applications/emulators/retroarch/cores.nix index d1cbf12b34d0..c18b26b1b247 100644 --- a/pkgs/applications/emulators/retroarch/cores.nix +++ b/pkgs/applications/emulators/retroarch/cores.nix @@ -568,6 +568,7 @@ in mame2015 = mkLibretroCore { core = "mame2015"; + patches = [ ./patches/mame2015-python311.patch ]; makeFlags = [ "PYTHON=python3" ]; extraNativeBuildInputs = [ python3 ]; extraBuildInputs = [ alsa-lib ]; diff --git a/pkgs/applications/emulators/retroarch/patches/mame2015-python311.patch b/pkgs/applications/emulators/retroarch/patches/mame2015-python311.patch new file mode 100644 index 000000000000..5827ba141506 --- /dev/null +++ b/pkgs/applications/emulators/retroarch/patches/mame2015-python311.patch @@ -0,0 +1,61 @@ +diff --git a/src/emu/cpu/m6502/m6502make.py b/src/emu/cpu/m6502/m6502make.py +index da29fc722a..3de641dd69 100755 +--- a/src/emu/cpu/m6502/m6502make.py ++++ b/src/emu/cpu/m6502/m6502make.py +@@ -16,7 +16,7 @@ def load_opcodes(fname): + opcodes = [] + logging.info("load_opcodes: %s", fname) + try: +- f = open(fname, "rU") ++ f = open(fname, "r") + except Exception: + err = sys.exc_info()[1] + logging.error("cannot read opcodes file %s [%s]", fname, err) +@@ -39,7 +39,7 @@ def load_disp(fname): + logging.info("load_disp: %s", fname) + states = [] + try: +- f = open(fname, "rU") ++ f = open(fname, "r") + except Exception: + err = sys.exc_info()[1] + logging.error("cannot read display file %s [%s]", fname, err) +diff --git a/src/emu/cpu/m6809/m6809make.py b/src/emu/cpu/m6809/m6809make.py +index c3d5b0f66e..79f6f90cdd 100644 +--- a/src/emu/cpu/m6809/m6809make.py ++++ b/src/emu/cpu/m6809/m6809make.py +@@ -14,7 +14,7 @@ def load_file(fname, lines): + if path != "": + path += '/' + try: +- f = open(fname, "rU") ++ f = open(fname, "r") + except Exception: + err = sys.exc_info()[1] + sys.stderr.write("Cannot read opcodes file %s [%s]\n" % (fname, err)) +diff --git a/src/emu/cpu/mcs96/mcs96make.py b/src/emu/cpu/mcs96/mcs96make.py +index ec5ec37a78..7ab806a653 100644 +--- a/src/emu/cpu/mcs96/mcs96make.py ++++ b/src/emu/cpu/mcs96/mcs96make.py +@@ -71,7 +71,7 @@ def __init__(self, fname, is_196): + self.ea = {} + self.macros = {} + try: +- f = open(fname, "rU") ++ f = open(fname, "r") + except Exception: + err = sys.exc_info()[1] + sys.stderr.write("Cannot read opcodes file %s [%s]\n" % (fname, err)) +diff --git a/src/emu/cpu/tms57002/tmsmake.py b/src/emu/cpu/tms57002/tmsmake.py +index 62092097d9..78f9fe43cd 100755 +--- a/src/emu/cpu/tms57002/tmsmake.py ++++ b/src/emu/cpu/tms57002/tmsmake.py +@@ -326,7 +326,7 @@ def ins_cmp_dasm(a, b): + def LoadLst(filename): + instructions = [] + ins = None +- for n, line in enumerate(open(filename, "rU")): ++ for n, line in enumerate(open(filename, "r")): + line = line.rstrip() + if not line and ins: + # new lines separate intructions From 98dc4cfa9c59fb407e208d5a125c77b36d1d0bbf Mon Sep 17 00:00:00 2001 From: Andrew Marshall Date: Wed, 25 Oct 2023 22:29:12 -0400 Subject: [PATCH 2/2] libretro.mame2016: fix build on Python 3.11+ Since Python 3.11, `open()` etc. no longer accept `U` flag. --- .../emulators/retroarch/cores.nix | 1 + .../patches/mame2016-python311.patch | 74 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 pkgs/applications/emulators/retroarch/patches/mame2016-python311.patch diff --git a/pkgs/applications/emulators/retroarch/cores.nix b/pkgs/applications/emulators/retroarch/cores.nix index c18b26b1b247..525682c603d2 100644 --- a/pkgs/applications/emulators/retroarch/cores.nix +++ b/pkgs/applications/emulators/retroarch/cores.nix @@ -582,6 +582,7 @@ in mame2016 = mkLibretroCore { core = "mame2016"; + patches = [ ./patches/mame2016-python311.patch ]; extraNativeBuildInputs = [ python3 ]; extraBuildInputs = [ alsa-lib ]; makeFlags = [ "PYTHON_EXECUTABLE=python3" ]; diff --git a/pkgs/applications/emulators/retroarch/patches/mame2016-python311.patch b/pkgs/applications/emulators/retroarch/patches/mame2016-python311.patch new file mode 100644 index 000000000000..6647e445a08d --- /dev/null +++ b/pkgs/applications/emulators/retroarch/patches/mame2016-python311.patch @@ -0,0 +1,74 @@ +diff --git a/scripts/build/verinfo.py b/scripts/build/verinfo.py +index a73d8ad268..82a80c0984 100644 +--- a/scripts/build/verinfo.py ++++ b/scripts/build/verinfo.py +@@ -63,7 +63,7 @@ def extract_version(input): + build, outfmt, srcfile, dstfile = parse_args() + + try: +- fp = open(srcfile, 'rU') ++ fp = open(srcfile, 'r') + except IOError: + sys.stderr.write("Unable to open source file '%s'\n" % srcfile) + sys.exit(1) +diff --git a/src/devices/cpu/m6502/m6502make.py b/src/devices/cpu/m6502/m6502make.py +index 8bcd85f8e2..557b175966 100755 +--- a/src/devices/cpu/m6502/m6502make.py ++++ b/src/devices/cpu/m6502/m6502make.py +@@ -18,7 +18,7 @@ def load_opcodes(fname): + opcodes = [] + logging.info("load_opcodes: %s", fname) + try: +- f = open(fname, "rU") ++ f = open(fname, "r") + except Exception: + err = sys.exc_info()[1] + logging.error("cannot read opcodes file %s [%s]", fname, err) +@@ -41,7 +41,7 @@ def load_disp(fname): + logging.info("load_disp: %s", fname) + states = [] + try: +- f = open(fname, "rU") ++ f = open(fname, "r") + except Exception: + err = sys.exc_info()[1] + logging.error("cannot read display file %s [%s]", fname, err) +diff --git a/src/devices/cpu/m6809/m6809make.py b/src/devices/cpu/m6809/m6809make.py +index 8838b96019..e1ea25db06 100644 +--- a/src/devices/cpu/m6809/m6809make.py ++++ b/src/devices/cpu/m6809/m6809make.py +@@ -16,7 +16,7 @@ def load_file(fname, lines): + if path != "": + path += '/' + try: +- f = open(fname, "rU") ++ f = open(fname, "r") + except Exception: + err = sys.exc_info()[1] + sys.stderr.write("Cannot read opcodes file %s [%s]\n" % (fname, err)) +diff --git a/src/devices/cpu/mcs96/mcs96make.py b/src/devices/cpu/mcs96/mcs96make.py +index b4844942e3..207208d2b6 100644 +--- a/src/devices/cpu/mcs96/mcs96make.py ++++ b/src/devices/cpu/mcs96/mcs96make.py +@@ -73,7 +73,7 @@ def __init__(self, fname, is_196): + self.ea = {} + self.macros = {} + try: +- f = open(fname, "rU") ++ f = open(fname, "r") + except Exception: + err = sys.exc_info()[1] + sys.stderr.write("Cannot read opcodes file %s [%s]\n" % (fname, err)) +diff --git a/src/devices/cpu/tms57002/tmsmake.py b/src/devices/cpu/tms57002/tmsmake.py +index e2e12b5a4b..942ec09537 100755 +--- a/src/devices/cpu/tms57002/tmsmake.py ++++ b/src/devices/cpu/tms57002/tmsmake.py +@@ -323,7 +323,7 @@ def AddInfo(self, line): + def LoadLst(filename): + instructions = [] + ins = None +- for n, line in enumerate(open(filename, "rU")): ++ for n, line in enumerate(open(filename, "r")): + line = line.rstrip() + if not line and ins: + # new lines separate intructions