Opened 3 years ago

Closed 3 years ago

#11415 closed enhancement (fixed)

qt-everywhere-src-5.12.0 and qtwebengine-5.12.0

Reported by: ken@… Owned by: ken@…
Priority: normal Milestone: 8.4
Component: BOOK Version: SVN
Severity: normal Keywords:
Cc:

Description

This is the new Long Term Support version of Qt (previous was 5.9).

Qt 5.12 introduces many new features and improvements as well as bugfixes over the 5.11.x series. For more details, refer to the online documentation included in this distribution. The documentation is also available online:

https://doc.qt.io/qt-5/index.html

The Qt version 5.12 series is binary compatible with the 5.11.x series. Applications compiled for 5.11 will continue to run with 5.12.

The qtwebengine code has been updated to chromium version 69.0.3497.128 plus fuirther security fixes from chrome up to version 70.0.3538.102.

Change History (16)

comment:1 by ken@…, 3 years ago

Owner: changed from blfs-book to ken@…
Status: newassigned

comment:2 by ken@…, 3 years ago

The glibc-2.28 patch should not be needed, upstream fixhttps://github.com/qt/qtbase/commit/b7887f9b4faad2227691a2af589e9d7680d6ae08

comment:3 by ken@…, 3 years ago

qtwebengine now needs libstdc++.a to link gn at the start of the build. This might only be a minor aggravation in the build process, but until now the only package where I have required libstdc++.a is binutils in LFS, and there only for the testsuite.

I've installed qt-5.12.0 itself on my most-recent system, based on the comment that it is binary compatible with 5.11. Both vlc and the g'mic gimp plugin work, but falkon segfaulted. Will find out if both need to be updated (possible, since webengine is a subset of qt5) if it now builds.

comment:4 by ken@…, 3 years ago

Doesn't build for me

In file included from /scratch/ken/qtwebengine-everywhere-src-5.12.0/src/core/client_cert_select_controller.cpp:40:
/scratch/ken/qtwebengine-everywhere-src-5.12.0/src/core/client_cert_select_controller.h:75:37: error: variable ‘QWEBENGINECORE_EXPORT ClientCertSelectController’ has initializer but incomplete type
 class QWEBENGINECORE_PRIVATE_EXPORT ClientCertSelectController {
                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
/scratch/ken/qtwebengine-everywhere-src-5.12.0/src/core/client_cert_select_controller.h:76:1: error: expected primary-expression before ‘public’
 public:
 ^~~~~~

That appears to be in compiling src/core/client_cert_select_controller.cpp

comment:5 by Bruce Dubbs, 3 years ago

Summary: qt-5.12.0 and qtwebengine-5.12.0qt-everywhere-src-5.12.0 and qtwebengine-5.12.0

comment:6 by ken@…, 3 years ago

I note that Arch (I think this was AUR) have a script, with no obvious issues but referencing three patches - one is for freetype and not new, the other two were for qt bugs, but missing from the repo. Of those, one bug was a regression that also applied to 5.11.2, and the other was labelled at qt as a windows bug. So, we should not need them. Still does not build.

Meanwhile, fedora - for whatever reason - are using 5.11.3.

I'm not entirely sure that 5.11.3 has the same webengine fixes as 5.12.0 (5.12.0 lists versions of chromium, 5.11.3 lists CVEs), but I'm now taking a look to see if it is usable. If it is (i.e. it builds, and the falkon from 5.11.2 works, and can be rebuilt), I'll raise another ticket for that as a stop-gap.

comment:7 by ken@…, 3 years ago

Made a little progress, but now stuck on the final link (libQt5WebEngineCore.so.5.12 while creating target 16103 of 16103).

To get to this, I've used a sed from a gentoo overlay:

find . -type f -name "*.pr[fio]" |
 xargs sed -i -e 's|INCLUDEPATH += |&$$QTWEBENGINE_ROOT/include |' 

I was dubious about that because none of the prf files get altered, but I've now confirmed that it lets me get to the final linkages.

Unfortunately, after compiling several files it eventually errors when linking libQt5WebEngineCore.so

[...]-I/opt/qt5/mkspecs/linux-g++ -o .obj/main.o /scratch/ken/qtwebengine-everywhere-src-5.12.0/src/process/main.cpp
g++ -Wl,-O1 -fuse-ld=gold -Wl,--enable-new-dtags -Wl,-rpath-link,/scratch/ken/qtwebengine-everywhere-src-5.12.0/build/lib -Wl,-rpath-link,/opt/qt5/lib -o ../../libexec/QtWebEngineProcess .obj/main.o   -L/opt/qt5/lib -lQt5Gui -lQt5Core -lGL -lpthread -L/scratch/ken/qtwebengine-everywhere-src-5.12.0/build/lib -lQt5WebEngineCore -L/opt/qt5/lib -lQt5Quick -lQt5Gui -lQt5WebChannel -lQt5Qml -lQt5Network -lQt5Positioning -lQt5Core -lpthread  
.obj/main.o:main.cpp:function localtime: error: undefined reference to 'sandbox::localtime_override(long const*)'

Grep shows me that localtime_override is in /build/src/core/release/obj/sandbox/linux/libsandbox_services.a and that archive is specified among the files to be linked into libQtWebEngineCore.so.5.12.

comment:8 by ken@…, 3 years ago

Comparing a build of 5.11.3 (same machine, but LFS from September instead of November), there the g++ linkage uses -std=gnu++1y, here it uses -std=c++1z. No idea if that is related.

in reply to:  8 comment:9 by ken@…, 3 years ago

Replying to ken@…:

Comparing a build of 5.11.3 (same machine, but LFS from September instead of November), there the g++ linkage uses -std=gnu++1y, here it uses -std=c++1z. No idea if that is related.

In fact that comes from Qt5 itself, nothing in qtwebengine mentions std=c++1z.

comment:10 by ken@…, 3 years ago

Now trying a full Qt5 build (i.e. not skipping qtwebengine) without any added sed or other changes, to see if that will complete.

comment:11 by ken@…, 3 years ago

Building qtwebengine 5.12.0 as part of Qt5 works. The link which fails in qtwebengine is actually for ../../libexec/QtWebEngineProcess on the line after the WebEngineCore lib.

Comparing the line in both, they show my build dir of /scratch/qtwhichever but after changing both from '/scratch/qt.*/ to SOURCEDIR the lines match.

Still no closer to finding what differs, and the lines are extremely long (>64000 characters for the link of WebEngineCore) and very hard to parse because they are much longer than one screen.

comment:12 by ken@…, 3 years ago

Raised as https://bugreports.qt.io/browse/QTBUG-72601 and what a painful process that was - you might think that raising a bug at gnome or firefox is hard, but they've got nothing on how hard qt #makes it!

comment:13 by ken@…, 3 years ago

Tried the full build of qt including webengine, adding -system-ffmpeg -webengine-icu on an older system with ffmpeg-4.0.2 and icu-62.1. The output from configure suggested it would do that, but later I realised libstdc++.a was not available, so waited for it to fail : instead, it completed - but qtwebengine was not built.

Retrying, with libstdc++.a available. Not yet sure if that will build qtwebengine.

For the book, using the whole package with -skip and a note re using qtwebengine is less than ideal (jhalfs will not build falkon in that case), but perhaps it will be the way to go.

If there was something lighter which used blink as an alternative to mozilla (I don't regard webkitgtk/epiphany as lighter) I would be inclined to drop falkon and webkitgtk from the book.

comment:14 by ken@…, 3 years ago

For the full build including webengine, -system-ffmpeg -webengine-icu builds with ffmpeg-4.0.2 and icu-62.1. Will test 4.1 and 63.1 at some point.

If a fix comes up, for separate qtwebengine the invocation is apparently qmake -- -system-ffmpeg -webengine-icu ..

comment:15 by ken@…, 3 years ago

Summary of fix: use the sed from gentoo, then remove libQt5WebengienCore.so (thanks, Waleed Hamra) : i.e. it is only a problem when upgrading.

On the lists, I noted various test failures in falkon, but now that I have manually retried that, without the sed needed for 5.11 all tests passed:

100% tests passed, 0 tests failed out of 10

Total Test time (real) =   3.99 sec

comment:16 by ken@…, 3 years ago

Resolution: fixed
Status: assignedclosed

Fixed, I think, in r20891.

Note: See TracTickets for help on using tickets.