Those who read -support will know that I had a build failure in the
qtwebengine part of qt5 on Friday. As I said in a followup, this is
on my Phenom which has a history of problems with memory going bad
(I now suspect the CPU needs a little more voltage, but the BIOS
doesn't support that), so the problem is probably "mine, all mine".
But along the way, I discovered that the failure (after 120 minutes)
was near the end of the install - and rebuilding all of Qt, even on
a fast machine, is not pleasant. So, I looked at building Qt
_without_ qtwebengine, and then building that separately. And I was
reminded of the amount of things it pulls in (we discussed this last
May). And then I discovered that the qtwebengine build uses a local
copy of ninja (probably, it will use a system version if one has
been installed), and therefore it uses all processors (so, like
rustbuild, there is no option to say "I've got 8 cores, but I'll
only use 4 for measuring".
Of course, my Phenom only has 4 cores, but my main build machine has
8.
Anyway, in the output from qmake I see things like:
Qt WebEngine:
Proprietary Codecs ..................... no
Spellchecker ........................... yes
ALSA ................................... yes
PulseAudio ............................. yes
System library dependencies:
ICU ................................ Using internal copy (Default,
force system ICU with WEBENGINE_CONFIG+=use_system_icu)
FFMPEG ............................. Using internal copy (Default,
force system FFMPEG with WEBENGINE_CONFIG+=use_system_ffmpeg)
Optional system libraries used ..... harfbuzz libxslt libxml2
libevent opus
Optional bundled libraries used .... jsoncpp protobuf libvpx srtp
snappy icu ffmpeg
Configurable features:
Proprietary codecs (H264, MP3) ..... Not enabled (Default,
enable with WEBENGINE_CONFIG+=use_proprietary_codecs)
Geolocation ........................ Enabled
Certificate handling ............... Using system NSS
Of those, the proprietary codecs are not shipped and for libvpx it
tests for a feature that is not enabled by default (the old "take a
library, change it, ship a local version" story).
For ICU, I've now got a patch to enable the system version.
Attached. This looks as if it will apply to the full Qt5 tarball if
you go into the qtwebengine directory. Whether that will allow the
correct defines to be set to use it, I have no idea [ I've moved to
the separate tarball, see below re timings ]. For building
qtwebengine in full Qt5 we are using hte shipped icu as well as all
the other shipped libs.
For ffmpeg, any attempt to try to enable it fails with -
FFMPEG ............................. Conflicting FFMPEG dependencies
[...]
Unmet dependencies: opus, vpx, libwebp, libwebpdemux
QtWebEngine will not be built.
The frightening thing is that I _do_ have opus installed (I used to
omit it in my own builds, but I need it for webm audio on youtube).
There are various patches for changing the shipped ffmpeg files to
interface with system ffmpeg, but they don't address the qmake
problem. For the moment, I'm content to build with the shipped
ffmpeg, just like we have been doing when using the full Qt5
tarball.
To build separate qtwebengine-5.9.0 with system ICU, after the patch
I use:
qmake WEBENGINE_CONFIG+=use_system_icu -r
make
make install
find $QT5DIR/ -name \*.prl \
-exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;
ldconfig
(The prl files are like what we do for qtwebkit, the ldconfig is
because QupZilla didn't find the libs).
With that, libQt5WebEngineCore.so links to (system) libicui18n.so.58,
libicuuc.so.58, libicudata.so.58.
And now the big thing: timings -
On this same machine, using -j4 [ -j1 to calculate SBU on a freshly
built LFS ] I've built qtwebengine three times this year:
qt qtwebengine
LFS 20170122 9193.242s, 58 SBU included
LFS 8.0 9139.604s, 58 SBU included
LFS 20170311 2689.097s, 17 SBU 6138.095s 39 SBU
So, there is a (minor) speed improvement as well as using system
ICU. This means that I'm going to build separate qtwebengine in
future. It also means that for Qt5 itself the -no-use-gold-linker
switch is not a problem (it previously failed to work in qtwebengine
in 5.8.0). For separate qtwebengine I'm dropping -fuse-ld=gold from
my CFLAGS, and reinstating it for all the other packages in that
script.
I've attempted to test the ICU patch by looking at all the indic
languages on googlenews (from QupZilla) - they all render although I
have no idea if they render correctly :)
At the moment I'm too busy to think about separating qtwebengine in
the book, but to me it now looks like the right thing to do (and
probably use the separate tarball).
ĸen
--
`I shall take my mountains', said Lu-Tze. `The climate will be good
for them.' -- Small Gods
not yet Submitted By: Ken Moffat <ken at linuxfromscratch dot org>
Date: 2017-03-18
Initial Package Version: 5.8.0
Upstream Status: Uncertain
Origin: Chromium - found at
https://raw.githubusercontent.com/Eloston/ungoogled-chromium/master/resources/common/patches/inox-patchset/chromium-icu58.patch,
fixed up by hand and rediffed to BLFS standards
Description: Prevent #error "Update aspirational_scripts per Unicode 9.0" with
icu-58.
diff -Naur
qtwebengine-opensource-src-5.8.0.orig/src/3rdparty/chromium/components/url_formatter/url_formatter.cc
qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/components/url_formatter/url_formatter.cc
---
qtwebengine-opensource-src-5.8.0.orig/src/3rdparty/chromium/components/url_formatter/url_formatter.cc
2017-01-03 09:28:53.000000000 +0000
+++
qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/components/url_formatter/url_formatter.cc
2017-03-18 15:38:11.376850154 +0000
@@ -429,9 +429,9 @@
// section at
// http://www.unicode.org/Public/security/latest/xidmodifications.txt) are
// are added to the allowed set. The list has to be updated when a new
- // version of Unicode is released. The current version is 8.0.0 and ICU 58
- // will have Unicode 9.0 data.
-#if U_ICU_VERSION_MAJOR_NUM < 58
+ // version of Unicode is released. The current version is 9.0.0 and ICU 60
+ // will have Unicode 10.0 data.
+#if U_ICU_VERSION_MAJOR_NUM < 60
const icu::UnicodeSet aspirational_scripts(
icu::UnicodeString(
// Unified Canadian Syllabics
@@ -445,13 +445,13 @@
// Yi
"\\uA000-\\uA48C"
// Miao
- "\\U00016F00-\\U00016F44\\U00016F50-\\U00016F7F"
+ "\\U00016F00-\\U00016F44\\U00016F50-\\U00016F7E"
"\\U00016F8F-\\U00016F9F]",
-1, US_INV),
*status);
allowed_set.addAll(aspirational_scripts);
#else
-#error "Update aspirational_scripts per Unicode 9.0"
+#error "Update aspirational_scripts per Unicode 10.0"
#endif
// U+0338 is included in the recommended set, while U+05F4 and U+2027 are in
>From e60b571faa3f14dd9119a6792dccf12f8bf80192 Mon Sep 17 00:00:00 2001
From: jshin <[email protected]>
Date: Fri, 21 Oct 2016 12:20:05 -0700
Subject: [PATCH] Prepare to upgrade ICU to 58 part 2
U_LB_COUNT is assumed to be 40 in Blink line breaking code, but it's
43 in ICU 58/Unicode 9.
Three new classes (Emoji Base, Emoji Modifier, and ZWJ) should behave
identically whether or not 'word-break: break-all' is in effect.
diff -Naur
qtwebengine-opensource-src-5.8.0.orig/src/3rdparty/chromium/third_party/WebKit/Source/platform/text/TextBreakIterator.cpp
qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/text/TextBreakIterator.cpp
---
qtwebengine-opensource-src-5.8.0.orig/src/3rdparty/chromium/third_party/WebKit/Source/platform/text/TextBreakIterator.cpp
2017-01-03 09:28:53.000000000 +0000
+++
qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/text/TextBreakIterator.cpp
2017-03-18 15:43:02.020391112 +0000
@@ -27,6 +27,9 @@
#include "wtf/StdLibExtras.h"
#include "wtf/text/CharacterNames.h"
+#include <unicode/uchar.h>
+#include <unicode/uvernum.h>
+
namespace blink {
unsigned numGraphemeClusters(const String& string)
@@ -123,13 +126,18 @@
{ B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0), 0, B(0, 0, 0, 0,
0, 0, 0, 0), 0, 0, 0, B(0, 0, 0, 0, 0, 0, 0, 0), 0, 0, 0, B(0, 0, 0, 0, 0, 0,
0, 0) }, // DEL
};
+#if U_ICU_VERSION_MAJOR_NUM >= 58
+#define BA_LB_COUNT (U_LB_COUNT - 3)
+#else
+#define BA_LB_COUNT U_LB_COUNT
+#endif
// Line breaking table for CSS word-break: break-all. This table differs from
// asciiLineBreakTable in:
// - Indices are Line Breaking Classes defined in UAX#14 Unicode Line Breaking
// Algorithm: http://unicode.org/reports/tr14/#DescriptionOfProperties
// - 1 indicates additional break opportunities. 0 indicates to fallback to
// normal line break, not "prohibit break."
-static const unsigned char breakAllLineBreakClassTable[][U_LB_COUNT / 8 + 1] =
{
+static const unsigned char breakAllLineBreakClassTable[][BA_LB_COUNT / 8 + 1]
= {
// XX AI AL B2 BA BB BK CB CL CM CR EX GL HY ID IN IS LF NS NU OP PO
PR QU SA SG SP SY ZW NL WJ H2 H3 JL JT JV CP CJ HL RI
{ B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0,
0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 0, 0) }, // XX
{ B(0, 1, 1, 0, 1, 0, 0, 0), B(0, 0, 0, 0, 0, 1, 0, 0), B(0, 0, 0, 1, 1,
0, 1, 0), B(1, 0, 0, 0, 0, 0, 0, 0), B(0, 0, 0, 0, 0, 0, 1, 0) }, // AI
@@ -179,7 +187,7 @@
#undef AL
static_assert(WTF_ARRAY_LENGTH(asciiLineBreakTable) ==
asciiLineBreakTableLastChar - asciiLineBreakTableFirstChar + 1,
"asciiLineBreakTable should be consistent");
-static_assert(WTF_ARRAY_LENGTH(breakAllLineBreakClassTable) == U_LB_COUNT,
"breakAllLineBreakClassTable should be consistent");
+static_assert(WTF_ARRAY_LENGTH(breakAllLineBreakClassTable) == BA_LB_COUNT,
"breakAllLineBreakClassTable should be consistent");
static inline bool shouldBreakAfter(UChar lastCh, UChar ch, UChar nextCh)
{
@@ -210,7 +218,7 @@
static inline bool shouldBreakAfterBreakAll(ULineBreak lastLineBreak,
ULineBreak lineBreak)
{
- if (lineBreak >= 0 && lineBreak < U_LB_COUNT && lastLineBreak >= 0 &&
lastLineBreak < U_LB_COUNT) {
+ if (lineBreak >= 0 && lineBreak < BA_LB_COUNT && lastLineBreak >= 0 &&
lastLineBreak < U_LB_COUNT) {
const unsigned char* tableRow =
breakAllLineBreakClassTable[lastLineBreak];
return tableRow[lineBreak / 8] & (1 << (lineBreak % 8));
}
--
http://lists.linuxfromscratch.org/listinfo/blfs-dev
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page