139 lines
5.8 KiB
Diff
139 lines
5.8 KiB
Diff
Description: 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
|
|
|
|
--- /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?= <fzatlouk@redhat.com>
|
|
+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<cmd>[a-z]+)(?:\s+(?P<name>\S+)(?:\s+(?P<value>\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
|
|
+
|
|
--- 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 @@
|
|
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,12 @@
|
|
# 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
|
|
+
|
|
+sed -e 's|rest\[1\], 16|0|g' -i python/mozbuild/mozbuild/action/check_binary.py
|
|
+
|
|
# Patch those separately, as they might interfere with normal behaviour.
|
|
if [ "$(uname -s)" = "FreeBSD" ];
|
|
then
|