1*4882a593SmuzhiyunFrom b85ba8c3ff3fb9ae708576ccef03434d2ef73054 Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Martin Jansa <Martin.Jansa@gmail.com>
3*4882a593SmuzhiyunDate: Tue, 14 Jun 2022 09:54:18 +0000
4*4882a593SmuzhiyunSubject: [PATCH] waflib: fix compatibility with python-3.11
5*4882a593SmuzhiyunMIME-Version: 1.0
6*4882a593SmuzhiyunContent-Type: text/plain; charset=UTF-8
7*4882a593SmuzhiyunContent-Transfer-Encoding: 8bit
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun* https://docs.python.org/3.11/whatsnew/3.11.html#changes-in-the-python-api
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun  open(), io.open(), codecs.open() and fileinput.FileInput no longer
12*4882a593Smuzhiyun  accept 'U' (“universal newline”) in the file mode. This flag was
13*4882a593Smuzhiyun  deprecated since Python 3.3. In Python 3, the “universal newline” is
14*4882a593Smuzhiyun  used by default when a file is open in text mode. The newline parameter
15*4882a593Smuzhiyun  of open() controls how universal newlines works. (Contributed by Victor
16*4882a593Smuzhiyun  Stinner in bpo-37330.)
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun* fixes:
19*4882a593SmuzhiyunWaf: The wscript in '/OE/build/luneos-langdale/webos-ports/tmp-glibc/work/core2-64-webos-linux/glmark2/2021.12-r0/git' is unreadable
20*4882a593SmuzhiyunTraceback (most recent call last):
21*4882a593Smuzhiyun  File "/OE/build/luneos-langdale/webos-ports/tmp-glibc/work/core2-64-webos-linux/glmark2/2021.12-r0/git/waflib/Scripting.py", line 104, in waf_entry_point
22*4882a593Smuzhiyun    set_main_module(os.path.normpath(os.path.join(Context.run_dir,Context.WSCRIPT_FILE)))
23*4882a593Smuzhiyun    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
24*4882a593Smuzhiyun  File "/OE/build/luneos-langdale/webos-ports/tmp-glibc/work/core2-64-webos-linux/glmark2/2021.12-r0/git/waflib/Scripting.py", line 135, in set_main_module
25*4882a593Smuzhiyun    Context.g_module=Context.load_module(file_path)
26*4882a593Smuzhiyun                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
27*4882a593Smuzhiyun  File "/OE/build/luneos-langdale/webos-ports/tmp-glibc/work/core2-64-webos-linux/glmark2/2021.12-r0/git/waflib/Context.py", line 343, in load_module
28*4882a593Smuzhiyun    code=Utils.readf(path,m='rU',encoding=encoding)
29*4882a593Smuzhiyun         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
30*4882a593Smuzhiyun  File "/OE/build/luneos-langdale/webos-ports/tmp-glibc/work/core2-64-webos-linux/glmark2/2021.12-r0/git/waflib/Utils.py", line 117, in readf
31*4882a593Smuzhiyun    f=open(fname,m)
32*4882a593Smuzhiyun      ^^^^^^^^^^^^^
33*4882a593SmuzhiyunValueError: invalid mode: 'rUb'
34*4882a593Smuzhiyun
35*4882a593SmuzhiyunUpstream-Status: Submitted [https://github.com/glmark2/glmark2/pull/178]
36*4882a593SmuzhiyunSigned-off-by: Martin Jansa <Martin.Jansa@gmail.com>
37*4882a593Smuzhiyun---
38*4882a593Smuzhiyun waflib/ConfigSet.py | 2 +-
39*4882a593Smuzhiyun waflib/Context.py   | 4 ++--
40*4882a593Smuzhiyun 2 files changed, 3 insertions(+), 3 deletions(-)
41*4882a593Smuzhiyun
42*4882a593Smuzhiyundiff --git a/waflib/ConfigSet.py b/waflib/ConfigSet.py
43*4882a593Smuzhiyunindex 16142a2..87de4ad 100644
44*4882a593Smuzhiyun--- a/waflib/ConfigSet.py
45*4882a593Smuzhiyun+++ b/waflib/ConfigSet.py
46*4882a593Smuzhiyun@@ -140,7 +140,7 @@ class ConfigSet(object):
47*4882a593Smuzhiyun 		Utils.writef(filename,''.join(buf))
48*4882a593Smuzhiyun 	def load(self,filename):
49*4882a593Smuzhiyun 		tbl=self.table
50*4882a593Smuzhiyun-		code=Utils.readf(filename,m='rU')
51*4882a593Smuzhiyun+		code=Utils.readf(filename,m='r')
52*4882a593Smuzhiyun 		for m in re_imp.finditer(code):
53*4882a593Smuzhiyun 			g=m.group
54*4882a593Smuzhiyun 			tbl[g(2)]=eval(g(3))
55*4882a593Smuzhiyundiff --git a/waflib/Context.py b/waflib/Context.py
56*4882a593Smuzhiyunindex 8f2cbfb..f3e35ae 100644
57*4882a593Smuzhiyun--- a/waflib/Context.py
58*4882a593Smuzhiyun+++ b/waflib/Context.py
59*4882a593Smuzhiyun@@ -109,7 +109,7 @@ class Context(ctx):
60*4882a593Smuzhiyun 				cache[node]=True
61*4882a593Smuzhiyun 				self.pre_recurse(node)
62*4882a593Smuzhiyun 				try:
63*4882a593Smuzhiyun-					function_code=node.read('rU',encoding)
64*4882a593Smuzhiyun+					function_code=node.read('r',encoding)
65*4882a593Smuzhiyun 					exec(compile(function_code,node.abspath(),'exec'),self.exec_dict)
66*4882a593Smuzhiyun 				finally:
67*4882a593Smuzhiyun 					self.post_recurse(node)
68*4882a593Smuzhiyun@@ -340,7 +340,7 @@ def load_module(path,encoding=None):
69*4882a593Smuzhiyun 		pass
70*4882a593Smuzhiyun 	module=imp.new_module(WSCRIPT_FILE)
71*4882a593Smuzhiyun 	try:
72*4882a593Smuzhiyun-		code=Utils.readf(path,m='rU',encoding=encoding)
73*4882a593Smuzhiyun+		code=Utils.readf(path,encoding=encoding)
74*4882a593Smuzhiyun 	except EnvironmentError:
75*4882a593Smuzhiyun 		raise Errors.WafError('Could not read the file %r'%path)
76*4882a593Smuzhiyun 	module_dir=os.path.dirname(path)
77