<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small"><br clear="all"></div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Sep 27, 2020 at 10:53 AM Adriaan de Groot <<a href="mailto:groot@kde.org">groot@kde.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi distro-peeps,<br>
<br>
If you, like me, are concerned about Qt5 WebEngine and how that is supposed to <br>
handle the deprecation of Python2 -- with all of Google's wretched build <br>
system and internals embedded inside -- then a port to Python3 is necessary, <br>
if only to keep Qt5 5.15.1 building after Python 2.7 really goes away.<br>
<br>
I sat down for two weekends -- if KDE could build a better CORBA in one <br>
weekend (it did) and create an entire Free Software web renderer (it did) then <br>
surely fixing the demon offspring of our own web thing is also doable. The <br>
results are in the FreeBSD port as one big patch to the Python bits of the <br>
qt5-webengine tarball; apply them after configure.<br>
<br>
The port lives here:<br>
<br>
<a href="https://github.com/freebsd/freebsd-ports-kde/tree/webengine-python3/www/qt5-webengine/" rel="noreferrer" target="_blank">https://github.com/freebsd/freebsd-ports-kde/tree/webengine-python3/www/qt5-webengine/</a><br>
<br>
the patches are either `python-patches.diff` or `files/python3-build.diff` <br>
depending on when you look at it; file history of the patch is really crappy <br>
because it's me running the webengine build a zillion times, cursing the <br>
Google management that hasn't updated their scripts consistently, or at all, <br>
for 12 years.<br>
<br>
Status:<br>
<br>
- it builds, 100%, and gives a webengine that can render web content (e.g. <br>
reading <a href="http://planet.kde.org" rel="noreferrer" target="_blank">planet.kde.org</a>)<br>
- the JS engine is missing some methods; it may be because of sorting issues <br>
that APIs have gotten muddled or wrong. For instance, I get this kind of <br>
stderr output:<br>
<br>
js: Uncaught (in promise) TypeError: Failed to execute 'setTimeout' on <br>
'Window': No function was found that matched the signature provided.<br>
qml: Loading changed for request url : <a href="https://www.google.com/" rel="noreferrer" target="_blank">https://www.google.com/</a><br>
<br>
<Unknown File>: Can't create role for unsupported data type<br>
js: Uncaught TypeError: Failed to execute 'postMessage' on 'Window': No <br>
function was found that matched the signature provided.<br>
<br>
- the patch is rife with fix-it-now kind of bodges; ideally I'd go back and <br>
understand the tooling better and re-build with a consistent type system, but <br>
honestly, I'm not being paid for this shit<br>
<br>
<br>
What I'd like from distro's:<br>
<br>
- give the patch a shot, drop python 2.7 from your webengine build and do it <br>
with Python3<br>
- if you have cycles to spare (both brain and CPU), looking into the <br>
difference between available JS in the two builds would be a big boon. <br>
<br>
Obvious improvements:<br>
- sorting of lots of the generated C++ output (jinja2 to generate c++ to <br>
compile later .. monstrous) has gone away, e.g. around line 559<br>
<br>
-{% for tag in tags|sort if not tag.multipleTagNames and not tag.noTypeHelpers <br>
%}<br>
+{% for tag in tags if not tag.multipleTagNames and not tag.noTypeHelpers %}<br>
<br>
  After dealing with this a dozen times, I now know that sort(attribute=name) <br>
is probably what's intended there and it makes the output more like the <br>
Python2.7 version.<br>
- some internal (i hope) enums are re-ordered, that's another thing to chase <br>
sorting for<br>
<br>
<br>
Since FreeBSD is removing Python 2.7 from the ports and packages in december, <br>
and has marked webengine as deprecated because of this, I thought it was time <br>
to get things done. It's at about .. mm .. 66%, because I reckon the wrangling <br>
for JS is going to take another weekend and even with massive ccache and memfs <br>
builds are neither pleasant nor fast.<br>
<br>
[ade]</blockquote><div><br></div><div class="gmail_default" style="">To make the patch apply, one section had to be adjusted to work on plain <span style="color:rgb(36,41,46);white-space:pre"><font face="arial, sans-serif" style="">qtwebengine-everywhere-src-5.15.1:</font></span></div><div class="gmail_default" style="">--- ./src/3rdparty/chromium/third_party/blink/renderer/build/scripts/rule_bison.py.orig       2020-09-27 11:22:21.680632451 +0200<br>+++ ./src/3rdparty/chromium/third_party/blink/renderer/build/scripts/rule_bison.py 2020-09-27 11:22:21.592632443 +0200<br>@@ -88,7 +88,7 @@<br> for outputHTry in outputHTries:<br>     try:<br>         os.unlink(outputHTry)<br>-    except OSError, e:<br>+    except OSError as e:<br>         if e.errno != errno.ENOENT:<br>             raise<br> <br>@@ -104,7 +104,7 @@<br>         os.stat(outputHTry)<br>         outputHTmp = outputHTry<br>         break<br>-    except OSError, e:<br>+    except OSError as e:<br>         if e.errno != errno.ENOENT:<br>             raise<br> <br>@@ -122,12 +122,11 @@<br> outputHInGen = outputH.replace('gen/', '')<br> headerGuard = NameStyleConverter(outputHInGen).to_header_guard()<br> <br>-outputHFile = open(outputH, 'w')<br>-print >>outputHFile, '#ifndef %s' % headerGuard<br>-print >>outputHFile, '#define %s' % headerGuard<br>-print >>outputHFile, outputHContents<br>-print >>outputHFile, '#endif  // %s' % headerGuard<br>-outputHFile.close()<br>+with open(outputH, 'w') as outputHFile:<br>+    outputHFile.write( '#ifndef %s\n' % headerGuard )<br>+    outputHFile.write( '#define %s\n' % headerGuard )<br>+    outputHFile.write( outputHContents )<br>+    outputHFile.write( '\n#endif  // %s\n' % headerGuard )<br> <br> common_replace_list = [(inputRoot + '.hh',<br>                         inputRoot + '.h')]<span style="color:rgb(36,41,46);white-space:pre"><font face="arial, sans-serif" style=""><br></font></span></div><div class="gmail_default" style=""><br></div><div class="gmail_default" style="">With the above change build will start, but there is nothing yet set with that patch to use python3, seem freebsd uses a custom Makefile to move to python3:</div><div class="gmail_default" style=""><a href="https://github.com/freebsd/freebsd-ports-kde/blob/webengine-python3/www/qt5-webengine/Makefile#L143">https://github.com/freebsd/freebsd-ports-kde/blob/webengine-python3/www/qt5-webengine/Makefile#L143</a><br></div><div class="gmail_default" style=""><a href="https://github.com/freebsd/freebsd-ports-kde/blob/webengine-python3/www/qt5-webengine/files/patch-configure.pri">https://github.com/freebsd/freebsd-ports-kde/blob/webengine-python3/www/qt5-webengine/files/patch-configure.pri</a><br></div><div class="gmail_default" style=""><br></div><div class="gmail_default" style="">Anke Boersma</div><div class="gmail_default" style=""><a href="mailto:demm@kaosx.us">demm@kaosx.us</a></div></div></div>