mirror of
https://github.com/void-linux/void-packages.git
synced 2025-06-08 08:03:51 +02:00
firefox-esr: fix build with Python 3.11
This commit is contained in:
parent
c639ba40cf
commit
2dcc2ce24e
2 changed files with 192 additions and 0 deletions
107
srcpkgs/firefox-esr/patches/fix-iomode-python3.11.patch
Normal file
107
srcpkgs/firefox-esr/patches/fix-iomode-python3.11.patch
Normal file
|
@ -0,0 +1,107 @@
|
|||
Support for 'U' mode was removed in python 3.11, see https://bugs.python.org/issue37330
|
||||
|
||||
diff --git a/dom/base/usecounters.py b/dom/base/usecounters.py
|
||||
index 780e3b3..7e2c714 100644
|
||||
--- a/dom/base/usecounters.py
|
||||
+++ b/dom/base/usecounters.py
|
||||
@@ -8,7 +8,7 @@ import re
|
||||
|
||||
def read_conf(conf_filename):
|
||||
# Can't read/write from a single StringIO, so make a new one for reading.
|
||||
- stream = open(conf_filename, "rU")
|
||||
+ stream = open(conf_filename, "r")
|
||||
|
||||
def parse_counters(stream):
|
||||
for line_num, line in enumerate(stream):
|
||||
diff --git a/python/mozbuild/mozbuild/action/process_define_files.py b/python/mozbuild/mozbuild/action/process_define_files.py
|
||||
index f1d401a..aca59d0 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):
|
||||
) and 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
|
||||
)
|
||||
diff --git a/python/mozbuild/mozbuild/backend/base.py b/python/mozbuild/mozbuild/backend/base.py
|
||||
index 7bc1986..b64a709 100644
|
||||
--- a/python/mozbuild/mozbuild/backend/base.py
|
||||
+++ b/python/mozbuild/mozbuild/backend/base.py
|
||||
@@ -272,7 +272,7 @@ class BuildBackend(LoggingMixin):
|
||||
return status
|
||||
|
||||
@contextmanager
|
||||
- def _write_file(self, path=None, fh=None, readmode="rU"):
|
||||
+ def _write_file(self, path=None, fh=None, readmode="r"):
|
||||
"""Context manager to write a file.
|
||||
|
||||
This is a glorified wrapper around FileAvoidWrite with integration to
|
||||
diff --git a/python/mozbuild/mozbuild/preprocessor.py b/python/mozbuild/mozbuild/preprocessor.py
|
||||
index f7820b9..857f1a6 100644
|
||||
--- a/python/mozbuild/mozbuild/preprocessor.py
|
||||
+++ b/python/mozbuild/mozbuild/preprocessor.py
|
||||
@@ -531,7 +531,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()
|
||||
@@ -860,7 +860,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:
|
||||
@@ -914,7 +914,7 @@ class Preprocessor:
|
||||
def preprocess(includes=[sys.stdin], defines={}, output=sys.stdout, marker="#"):
|
||||
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 b09f164..4f1e0cd 100644
|
||||
--- a/python/mozbuild/mozbuild/util.py
|
||||
+++ b/python/mozbuild/mozbuild/util.py
|
||||
@@ -236,7 +236,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
|
||||
diff --git a/python/mozbuild/mozpack/files.py b/python/mozbuild/mozpack/files.py
|
||||
index 1d8a1ed..a295a67 100644
|
||||
--- a/python/mozbuild/mozpack/files.py
|
||||
+++ b/python/mozbuild/mozpack/files.py
|
||||
@@ -554,7 +554,7 @@ class PreprocessedFile(BaseFile):
|
||||
pp = Preprocessor(defines=self.defines, marker=self.marker)
|
||||
pp.setSilenceDirectiveWarnings(self.silence_missing_directive_warnings)
|
||||
|
||||
- with _open(self.path, "rU") as input:
|
||||
+ with _open(self.path, "r") as input:
|
||||
with _open(os.devnull, "w") as output:
|
||||
pp.processFile(input=input, output=output)
|
||||
|
||||
@@ -611,7 +611,7 @@ class PreprocessedFile(BaseFile):
|
||||
pp = Preprocessor(defines=self.defines, marker=self.marker)
|
||||
pp.setSilenceDirectiveWarnings(self.silence_missing_directive_warnings)
|
||||
|
||||
- with _open(self.path, "rU") as input:
|
||||
+ with _open(self.path, "r") as input:
|
||||
pp.processFile(input=input, output=dest, depfile=deps_out)
|
||||
|
||||
dest.close()
|
85
srcpkgs/firefox-esr/patches/ply-python3.11.patch
Normal file
85
srcpkgs/firefox-esr/patches/ply-python3.11.patch
Normal file
|
@ -0,0 +1,85 @@
|
|||
The Ply lexer, which doesn't seem too active a project, wraps regular
|
||||
expressions from grammar definitions in its own regular expressions that name
|
||||
groups. This breaks re.compile in Python >= 3.11 when the original expressions
|
||||
contain global flags, because the compiler requires that global flags appear at
|
||||
the start of the expression instead of inside the named group.
|
||||
|
||||
This patch wraps re.compile to scan the expression for any global flags and,
|
||||
when found, moves them to the start of the expression.
|
||||
|
||||
--- a/third_party/python/ply/ply/lex.py
|
||||
+++ b/third_party/python/ply/ply/lex.py
|
||||
@@ -49,6 +49,37 @@
|
||||
# Python 3.0
|
||||
StringTypes = (str, bytes)
|
||||
|
||||
+
|
||||
+def _re_compile(expression, *args, **kwargs):
|
||||
+ '''
|
||||
+ Rearrange global flags in the regular expression to appear at the
|
||||
+ beginning, avoiding deprecation warnings on Python < 3.11 and hard
|
||||
+ errors on Python >= 3.11.
|
||||
+ '''
|
||||
+ flags = set()
|
||||
+ remainder = ''
|
||||
+
|
||||
+ pattern = re.compile(r'\(\?([aiLmsux]+)\)')
|
||||
+ while m := pattern.search(expression):
|
||||
+ # Location of the global flag spec
|
||||
+ l, h = m.span(0)
|
||||
+ # Accumulate global flags from this spec
|
||||
+ flags.update(m.group(1))
|
||||
+ # Capture all text leading up to the match
|
||||
+ remainder += expression[:l]
|
||||
+ # Trim to the end fo the flag spec
|
||||
+ expression = expression[h:]
|
||||
+
|
||||
+ # Any remaining expression contains no flags
|
||||
+ remainder += expression
|
||||
+
|
||||
+ # If there are flags, they belong at the beginning
|
||||
+ if flags:
|
||||
+ remainder = f'(?{"".join(sorted(flags))})' + remainder
|
||||
+
|
||||
+ return re.compile(remainder, *args, **kwargs)
|
||||
+
|
||||
+
|
||||
# This regular expression is used to match valid token names
|
||||
_is_identifier = re.compile(r'^[a-zA-Z0-9_]+$')
|
||||
|
||||
@@ -230,7 +261,7 @@
|
||||
titem = []
|
||||
txtitem = []
|
||||
for pat, func_name in lre:
|
||||
- titem.append((re.compile(pat, lextab._lexreflags), _names_to_funcs(func_name, fdict)))
|
||||
+ titem.append((_re_compile(pat, lextab._lexreflags), _names_to_funcs(func_name, fdict)))
|
||||
|
||||
self.lexstatere[statename] = titem
|
||||
self.lexstateretext[statename] = txtitem
|
||||
@@ -495,7 +526,7 @@
|
||||
return []
|
||||
regex = '|'.join(relist)
|
||||
try:
|
||||
- lexre = re.compile(regex, reflags)
|
||||
+ lexre = _re_compile(regex, reflags)
|
||||
|
||||
# Build the index to function map for the matching engine
|
||||
lexindexfunc = [None] * (max(lexre.groupindex.values()) + 1)
|
||||
@@ -758,7 +789,7 @@
|
||||
continue
|
||||
|
||||
try:
|
||||
- c = re.compile('(?P<%s>%s)' % (fname, _get_regex(f)), self.reflags)
|
||||
+ c = _re_compile('(?P<%s>%s)' % (fname, _get_regex(f)), self.reflags)
|
||||
if c.match(''):
|
||||
self.log.error("%s:%d: Regular expression for rule '%s' matches empty string", file, line, f.__name__)
|
||||
self.error = True
|
||||
@@ -782,7 +813,7 @@
|
||||
continue
|
||||
|
||||
try:
|
||||
- c = re.compile('(?P<%s>%s)' % (name, r), self.reflags)
|
||||
+ c = _re_compile('(?P<%s>%s)' % (name, r), self.reflags)
|
||||
if (c.match('')):
|
||||
self.log.error("Regular expression for rule '%s' matches empty string", name)
|
||||
self.error = True
|
Loading…
Add table
Reference in a new issue