From: Debian Games Team Date: Sun, 8 Jan 2023 08:21:57 +0000 (+0000) Subject: Fix mozjs/spidermonkey FTBFS with python 3.11 X-Git-Tag: archive/raspbian/0.0.26-3+rpi1^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2fa5e043fe2e61b4c22d90c1edf3688d623c6315;p=0ad.git Fix mozjs/spidermonkey FTBFS with python 3.11 Origin: Fedora, https://src.fedoraproject.org/rpms/0ad/tree/main Bug-Debian: https://bugs.debian.org/1028179 Gbp-Pq: Name fix_python_3.11_ftbfs.patch --- diff --git a/libraries/source/spidermonkey/0001-Python-Build-Use-r-instead-of-rU-file-read-modes.patch b/libraries/source/spidermonkey/0001-Python-Build-Use-r-instead-of-rU-file-read-modes.patch new file mode 100644 index 0000000..3cb99d5 --- /dev/null +++ b/libraries/source/spidermonkey/0001-Python-Build-Use-r-instead-of-rU-file-read-modes.patch @@ -0,0 +1,81 @@ +From 95f1e91ef71d912be5f6dddb6fac68671d850fd6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= +Date: Sun, 24 Jul 2022 11:11:01 +0200 +Subject: [PATCH] Python/Build: Use r instead of rU file read modes + +Fixes Python 3.11 build +--- + python/mozbuild/mozbuild/action/process_define_files.py | 2 +- + python/mozbuild/mozbuild/preprocessor.py | 6 +++--- + python/mozbuild/mozbuild/util.py | 4 +++- + 3 files changed, 7 insertions(+), 5 deletions(-) + +diff --git a/python/mozbuild/mozbuild/action/process_define_files.py b/python/mozbuild/mozbuild/action/process_define_files.py +index 6fff0d1..de2bcf4 100644 +--- a/python/mozbuild/mozbuild/action/process_define_files.py ++++ b/python/mozbuild/mozbuild/action/process_define_files.py +@@ -36,7 +36,7 @@ def process_define_file(output, input): + not config.substs.get('JS_STANDALONE'): + config = PartialConfigEnvironment(mozpath.join(topobjdir, 'js', 'src')) + +- with open(path, 'rU') as input: ++ with open(path, 'r') as input: + r = re.compile('^\s*#\s*(?P[a-z]+)(?:\s+(?P\S+)(?:\s+(?P\S+))?)?', re.U) + for l in input: + m = r.match(l) +diff --git a/python/mozbuild/mozbuild/preprocessor.py b/python/mozbuild/mozbuild/preprocessor.py +index 0e3a750..66f5cf7 100644 +--- a/python/mozbuild/mozbuild/preprocessor.py ++++ b/python/mozbuild/mozbuild/preprocessor.py +@@ -517,7 +517,7 @@ class Preprocessor: + + if args: + for f in args: +- with io.open(f, 'rU', encoding='utf-8') as input: ++ with io.open(f, 'r', encoding='utf-8') as input: + self.processFile(input=input, output=out) + if depfile: + mk = Makefile() +@@ -807,7 +807,7 @@ class Preprocessor: + args = self.applyFilters(args) + if not os.path.isabs(args): + args = os.path.join(self.curdir, args) +- args = io.open(args, 'rU', encoding='utf-8') ++ args = io.open(args, 'r', encoding='utf-8') + except Preprocessor.Error: + raise + except Exception: +@@ -862,7 +862,7 @@ def preprocess(includes=[sys.stdin], defines={}, + pp = Preprocessor(defines=defines, + marker=marker) + for f in includes: +- with io.open(f, 'rU', encoding='utf-8') as input: ++ with io.open(f, 'r', encoding='utf-8') as input: + pp.processFile(input=input, output=output) + return pp.includes + +diff --git a/python/mozbuild/mozbuild/util.py b/python/mozbuild/mozbuild/util.py +index 044cf64..eb992ce 100644 +--- a/python/mozbuild/mozbuild/util.py ++++ b/python/mozbuild/mozbuild/util.py +@@ -54,6 +54,8 @@ def exec_(object, globals=None, locals=None): + + + def _open(path, mode): ++ if mode == "rU": ++ mode = "r" + if 'b' in mode: + return io.open(path, mode) + return io.open(path, mode, encoding='utf-8', newline='\n') +@@ -220,7 +222,7 @@ class FileAvoidWrite(BytesIO): + still occur, as well as diff capture if requested. + """ + +- def __init__(self, filename, capture_diff=False, dry_run=False, readmode='rU'): ++ def __init__(self, filename, capture_diff=False, dry_run=False, readmode='r'): + BytesIO.__init__(self) + self.name = filename + assert type(capture_diff) == bool +-- +2.37.1 + diff --git a/libraries/source/spidermonkey/patch.sh b/libraries/source/spidermonkey/patch.sh index c447223..e3570f6 100644 --- a/libraries/source/spidermonkey/patch.sh +++ b/libraries/source/spidermonkey/patch.sh @@ -2,6 +2,19 @@ # Apply patches if needed # This script gets called from build.sh. +# https://bugs.debian.org/1028179 +# The hack below is unfortunately necessary because GNU patch is unable to +# handle binary patches. Fixing this FTBFS in mozjs requires pulling in a +# virtualenv upgrade for mozjs. +# https://src.fedoraproject.org/rpms/0ad/blob/main/f/0ad-python311.patch +# https://github.com/mozilla/gecko-dev/commit/74641307d32a59806b75cd2b8c7161aca50d5cb7.patch +git init . -b main +git config user.name 'Debian Games' +git config user.email 'pkg-games-devel@lists.alioth.debian.org' +git add . +git commit -m 'Initial commit' +git am --keep-cr ../mozjs_virtualenv.patch + # SM78 fails to create virtual envs on macs with python > 3.7 # Unfortunately, 3.7 is mostly unavailable on ARM macs. # Therefore, replace the custom script with a more up-to-date version from pip @@ -19,14 +32,6 @@ then export PYTHONPATH="$(pwd)/virtualenv:$PYTHONPATH" patch -p1 < ../FixVirtualEnv.diff fi -else - # In python 3.10 `sysconfig._get_default_scheme()` was renamed to - # `sysconfig.get_default_scheme()`. This breaks the version of - # `virtualenv` bundled with the spidermonkey source code. - # - # It is assumed that the updated version fetched for macOS systems - # above does not have this problem. - patch -p1 < ../FixVirtualenvForPython310.diff fi # Mozglue symbols need to be linked against static builds. @@ -78,6 +83,10 @@ patch -p1 < ../FixRust150.diff # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1001882 patch -p1 < ../Fix-armhf-build-for-GCC-11-627.patch +# https://bugs.debian.org/1028179 +# https://src.fedoraproject.org/rpms/0ad/blob/main/f/0001-Python-Build-Use-r-instead-of-rU-file-read-modes.patch +patch -p1 < ../0001-Python-Build-Use-r-instead-of-rU-file-read-modes.patch + # Patch those separately, as they might interfere with normal behaviour. if [ "$(uname -s)" = "FreeBSD" ]; then