From 3f1104dfece1b6f77bd5c6abaf6ca301a08ea99d Mon Sep 17 00:00:00 2001
From: Martin Jansa <Martin.Jansa@gmail.com>
Date: Tue, 14 Jun 2022 09:54:18 +0000
Subject: [PATCH] waflib: fix compatibility with python-3.11
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* https://docs.python.org/3.11/whatsnew/3.11.html#changes-in-the-python-api

  open(), io.open(), codecs.open() and fileinput.FileInput no longer
  accept 'U' (“universal newline”) in the file mode. This flag was
  deprecated since Python 3.3. In Python 3, the “universal newline” is
  used by default when a file is open in text mode. The newline parameter
  of open() controls how universal newlines works. (Contributed by Victor
  Stinner in bpo-37330.)

* fixes:
Waf: The wscript in '/OE/build/luneos-langdale/webos-ports/tmp-glibc/work/core2-64-webos-linux/glmark2/2021.12-r0/git' is unreadable
Traceback (most recent call last):
  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
    set_main_module(os.path.normpath(os.path.join(Context.run_dir,Context.WSCRIPT_FILE)))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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
    Context.g_module=Context.load_module(file_path)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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
    code=Utils.readf(path,m='rU',encoding=encoding)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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
    f=open(fname,m)
      ^^^^^^^^^^^^^
ValueError: invalid mode: 'rUb'

Fixed upstream at https://gitlab.com/ita1024/waf/-/commit/68997828c850ce7fb30b73b4adfde35053e539d1

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
 waflib/ConfigSet.py | 2 +-
 waflib/Context.py   | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/waflib/ConfigSet.py b/waflib/ConfigSet.py
index 16142a2a..87de4ad4 100644
--- a/waflib/ConfigSet.py
+++ b/waflib/ConfigSet.py
@@ -140,7 +140,7 @@ def store(self,filename):
 		Utils.writef(filename,''.join(buf))
 	def load(self,filename):
 		tbl=self.table
-		code=Utils.readf(filename,m='rU')
+		code=Utils.readf(filename,m='r')
 		for m in re_imp.finditer(code):
 			g=m.group
 			tbl[g(2)]=eval(g(3))
diff --git a/waflib/Context.py b/waflib/Context.py
index 8f2cbfb6..77f310eb 100644
--- a/waflib/Context.py
+++ b/waflib/Context.py
@@ -109,7 +109,7 @@ def recurse(self,dirs,name=None,mandatory=True,once=True,encoding=None):
 				cache[node]=True
 				self.pre_recurse(node)
 				try:
-					function_code=node.read('rU',encoding)
+					function_code=node.read('r',encoding)
 					exec(compile(function_code,node.abspath(),'exec'),self.exec_dict)
 				finally:
 					self.post_recurse(node)
@@ -340,7 +340,7 @@ def load_module(path,encoding=None):
 		pass
 	module=imp.new_module(WSCRIPT_FILE)
 	try:
-		code=Utils.readf(path,m='rU',encoding=encoding)
+		code=Utils.readf(path,m='r',encoding=encoding)
 	except EnvironmentError:
 		raise Errors.WafError('Could not read the file %r'%path)
 	module_dir=os.path.dirname(path)
