Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 639220 - dev-qt/qtwebengine-5.9.3 with dev-libs/icu-60.1: #error "Update aspirational_scripts per Unicode 10.0"
Summary: dev-qt/qtwebengine-5.9.3 with dev-libs/icu-60.1: #error "Update aspirational_...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Qt Bug Alias
URL: https://bugreports.qt.io/browse/QTBUG...
Whiteboard:
Keywords:
: 639910 (view as bug list)
Depends on:
Blocks:
 
Reported: 2017-11-29 19:28 UTC by Chris Smith
Modified: 2017-12-15 20:57 UTC (History)
25 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
build.log (build.log.bz2,178.05 KB, application/x-bzip)
2017-11-29 19:32 UTC, Chris Smith
Details
Fix build against system-icu 60.1. (qtwebengine-5.9.3-icu-60-build.patch,625 bytes, patch)
2017-11-30 15:01 UTC, Chiitoo
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Chris Smith 2017-11-29 19:28:43 UTC
dev-qt/qtwebengine-5.9.3 fails to compile

 emerge --info '=dev-qt/qtwebengine-5.9.3::gentoo'
dev-java/java-config:     2.2.0-r3::gentoo
gentoo
    sync-uri: rsync://rsync11.us.gentoo.org/gentoo-portage
tcgOverlay
    location: /usr/local/portage
    masters: gentoo

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=native -fomit-frame-pointer -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O2 -march=native -fomit-frame-pointer -pipe"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--with-bdeps y"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync multilib-strict news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="V=1 -j1"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
USE="X a52 aac aalib acl acpi activities aes alsa amd64 amr apache2 audiofile avahi avx bash-completion berkdb bluray branding btrfs bzip2 cairo caps cdaudio cdda cddb cdparanoia cdr cdrdao chm cleartype cli corefonts cracklib crypt cups curl cxx dbus declarative designer-plugin djvu dri dssi dts dv dvb dvd dvdr ebook emboss encode exif fam fdk ffmpeg firefox flac fortran gdbm gif glamor gmp google gphoto2 gpm gstreamer gtk gtk3 iconv icu ieee1394 imagemagick imap imlib introspection ipv6 jack java jpeg jpeg2k kde kipi kpathsea kwallet ladspa lame lash lcms libffi libnotify lv2 lzma mad marble midi mmap mmx mmxext mng modules mozilla mp3 mp4 mpeg mtp musicbrainz ncurses network nls nodrm nptl nsplugin nvidia ofx ogg opencl openexr opengl openmp opus pam pango pcre pdf phonon plasma png policykit popcnt ppds pulseaudio qml qt3support qt4 qt5 readline rtmp sasl scanner sdl seccomp semantic-desktop session slp smp sndfile spell sse sse2 sse3 sse4_1 sse4_2 ssl ssse3 startup-notification subversion svg systemd theora threads tiff tk transparency truetype type1 udev udisks unicode unwind upower usb v4l vaapi vcd vdpau vim-syntax vorbis vpx vst wav wavpack wayland widgets wmf wxwidgets x264 x265 xattr xcb xcomposite xine xinerama xkb xml xscreensaver xv xvid xvmc zlib" ABI_X86="64" ALSA_CARDS="hda-intel hdsp hpet hrtimer rtctimer seqdummy virmidi" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions
alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="author braindump flow karbon kexi krita sheets stage words" CAMERAS="*" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip
tripmate tnt ublox ubx" GRUB_PLATFORMS="efi-64 pc" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en_US en" NGINX_MODULES_HTTP="autoindex fancyindex fastcgi gzip" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6 php7-0" POSTGRES_TARGETS="postgres9_5" PYTHON_SINGLE_TARGET="python3_5" PYTHON_TARGETS="python2_7 python3_5" QEMU_SOFTMMU_TARGETS="i386 x86_64" QEMU_USER_TARGETS="i386 x86_64" RUBY_TARGETS="ruby21 ruby22
ruby23 ruby24" SANE_BACKENDS="epson epson2" USERLAND="GNU" VIDEO_CARDS="nvidia nouveau intel modesetting" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

=================================================================
                        Package Settings
=================================================================

dev-qt/qtwebengine-5.9.3::gentoo was built with the following:
USE="alsa pulseaudio system-ffmpeg system-icu widgets -bindist -debug -geolocation -pax_kernel -test" ABI_X86="(64)"
Comment 1 Chris Smith 2017-11-29 19:32:10 UTC
Created attachment 507214 [details]
build.log
Comment 2 Chris Smith 2017-11-29 19:32:54 UTC
emerge -pqv '=dev-qt/qtwebengine-5.9.3::gentoo'
[ebuild   R   ] dev-qt/qtwebengine-5.9.3  USE="alsa pulseaudio system-ffmpeg system-icu widgets -bindist -debug -geolocation -pax_kernel {-test}"
Comment 3 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2017-11-29 19:34:52 UTC
The relevant error messages:

../../3rdparty/chromium/components/url_formatter/url_formatter.cc:511:2: error: #error "Update aspirational_scripts per Unicode 10.0"
 #error "Update aspirational_scripts per Unicode 10.0"
  ^~~~~
ninja: build stopped: subcommand failed.
Comment 4 Chiitoo gentoo-dev 2017-11-30 08:49:00 UTC
I don't know what it will break, but things seem to build if

    #if U_ICU_VERSION_MAJOR_NUM < 60

is changed to

    #if U_ICU_VERSION_MAJOR_NUM < 61

in 'url_formatter.cc'.

These bits are completely gone at least since 'BASELINE: Update Chromium to 60.0.3112.70', but that will probably not happen for 5.9, if I were to guess.

Will ask upstream, too, unless someone else gets to it before me.
Comment 5 Chris Smith 2017-11-30 12:25:59 UTC
(In reply to Chiitoo from comment #4)
> I don't know what it will break, but things seem to build if
> 
>     #if U_ICU_VERSION_MAJOR_NUM < 60
> 
> is changed to
> 
>     #if U_ICU_VERSION_MAJOR_NUM < 61
> 
> in 'url_formatter.cc'.

Will look into that as a temp workaround.
 
> These bits are completely gone at least since 'BASELINE: Update Chromium to
> 60.0.3112.70', but that will probably not happen for 5.9, if I were to guess.

Chromium is not even installed here.
Comment 6 Chiitoo gentoo-dev 2017-11-30 15:01:31 UTC
Created attachment 507272 [details, diff]
Fix build against system-icu 60.1.

(In reply to Chris Smith from comment #5)
> Chromium is not even installed here.

Ah, apologies; I was referring to the qtwebengine-chromium, and this commit in particular:

http://code.qt.io/cgit/qt/qtwebengine-chromium.git/commit/chromium/components/url_formatter/url_formatter.cc?h=60-based&id=6ec7b8da05d21a3878bd21c691b41e675d74bb1c

I'll attach a patch I'm currently testing, that should be more appropriate as a workaround (a tip from upstream carewolf (thanks!)).
Comment 7 Francesco Riosa 2017-11-30 23:49:34 UTC
bool IDNSpoofChecker::IsMadeOfLatinAlikeCyrillic

this seem to be a security sensitive function which protect the user from URL spoofing attacks.

However in newer chromium they changed it completely and moved the class into it's own file, from 
components/url_formatter/url_formatter.cc
to
components/url_formatter/idn_spoof_checker.cc

so it will not be an easy port, someone knowledgeable in unicode can jump in, please?
Comment 8 Francesco Riosa 2017-11-30 23:55:13 UTC
@Chiitoo sorry, I've somewhat missed comment #6.
Please ignore mine #7
Comment 9 Dennis Schridde 2017-12-01 18:59:30 UTC
(In reply to Chiitoo from comment #6)
> I'll attach a patch I'm currently testing, that should be more appropriate
> as a workaround (a tip from upstream carewolf (thanks!)).

I would also like to test the patch, as my system upgrades are currently stalled on this issue.
Comment 10 Chiitoo gentoo-dev 2017-12-01 19:25:55 UTC
(In reply to Dennis Schridde from comment #9)
> (In reply to Chiitoo from comment #6)
> > I'll attach a patch I'm currently testing, that should be more appropriate
> > as a workaround (a tip from upstream carewolf (thanks!)).
> 
> I would also like to test the patch, as my system upgrades are currently
> stalled on this issue.

It is attached already to this bug, and you're definitely free to try it out.  :]

In case you're not sure where to place it, see for example:

    https://wiki.gentoo.org/wiki//etc/portage/patches
Comment 11 Dennis Schridde 2017-12-02 14:05:11 UTC
(In reply to Chiitoo from comment #10)
> (In reply to Dennis Schridde from comment #9)
> > (In reply to Chiitoo from comment #6)
> > > I'll attach a patch I'm currently testing, that should be more appropriate
> > > as a workaround (a tip from upstream carewolf (thanks!)).
> > 
> > I would also like to test the patch, as my system upgrades are currently
> > stalled on this issue.
> 
> It is attached already to this bug, and you're definitely free to try it
> out.  :]

Thank you!  I misunderstood your sentence to be in the future tense and also overlooked the attachment.

I recompiled qtwebengine with your patch. Now KMail and KDE Telepathy work again, without any apparent flaws.
Comment 12 Andrew Udvare 2017-12-03 02:27:38 UTC
This same error comes up for Chromium built with system-icu (appears to be the default now?). The fix is not the same, nor am I sure that changing the check to use version 61 would be a reliable hack.
Comment 13 Pavel 2017-12-03 06:45:29 UTC
Chromium:

../../components/url_formatter/idn_spoof_checker.cc:352:2: error: #error "Update aspirational_scripts per Unicode 10.0"
 #error "Update aspirational_scripts per Unicode 10.0"
  ^~~~~
Comment 14 Vasco Gervasi 2017-12-03 07:41:40 UTC
The attached patch worked for me.

Thanks
Comment 15 Andreas Sturmlechner gentoo-dev 2017-12-05 08:24:52 UTC
Works for me.
Comment 16 needle 2017-12-05 08:54:12 UTC
Ran into the same issue. The patch worked for me.
Comment 17 Larry the Git Cow gentoo-dev 2017-12-05 11:21:46 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=38591f8810ec877e3be5965f0ed753c5fcbf9f2b

commit 38591f8810ec877e3be5965f0ed753c5fcbf9f2b
Author:     Andreas Sturmlechner <asturm@gentoo.org>
AuthorDate: 2017-12-05 00:52:02 +0000
Commit:     Michael Palimaka <kensington@gentoo.org>
CommitDate: 2017-12-05 11:21:26 +0000

    dev-qt/qtwebengine: Fix build with >=ICU-60
    
    Closes: https://bugs.gentoo.org/639220
    Package-Manager: Portage-2.3.16, Repoman-2.3.6

 .../qtwebengine/files/qtwebengine-5.9.3-icu-60.1.patch   | 16 ++++++++++++++++
 dev-qt/qtwebengine/qtwebengine-5.9.3.ebuild              |  2 ++
 2 files changed, 18 insertions(+)
Comment 18 Larry the Git Cow gentoo-dev 2017-12-05 11:25:54 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/proj/qt.git/commit/?id=0f96244f88e39a6132b484dde151de55ebad29a3

commit 0f96244f88e39a6132b484dde151de55ebad29a3
Author:     Andreas Sturmlechner <asturm@gentoo.org>
AuthorDate: 2017-12-05 11:25:20 +0000
Commit:     Michael Palimaka <kensington@gentoo.org>
CommitDate: 2017-12-05 11:25:45 +0000

    dev-qt/qtwebengine: Fix build with >=ICU-60
    
    Bug: https://bugs.gentoo.org/639220
    Package-Manager: Portage-2.3.14, Repoman-2.3.6

 .../qtwebengine/files/qtwebengine-5.9.3-icu-60.1.patch   | 16 ++++++++++++++++
 dev-qt/qtwebengine/qtwebengine-5.10.9999.ebuild          |  2 ++
 dev-qt/qtwebengine/qtwebengine-5.9.9999.ebuild           |  2 ++
 dev-qt/qtwebengine/qtwebengine-5.9999.ebuild             |  2 ++
 4 files changed, 22 insertions(+)}
Comment 19 Michael Palimaka (kensington) gentoo-dev 2017-12-05 11:51:27 UTC
*** Bug 639910 has been marked as a duplicate of this bug. ***
Comment 20 Psi 2017-12-05 20:31:28 UTC
A bit late to the party, but it should be noted that as of Unicode Standard 10.0, the "Aspirational Scripts" category has been removed, and its scripts moved into the "Limited Use" category.  They have "Restricted" status under UTS 39, which is referenced in comments in the relevant Chromium code in QtWebEngine.

The code notes that the list of "Aspirational Scripts" characters used as identifiers needs to be updated when the version of the Unicode Standard is updated.  The update is to remove those characters entirely, as they are now "Restricted".

Therefore, if we're aiming to be strictly conforming, the code in the #if block should *only* apply to ICU < 60, and the #else clause should be removed or replaced by a note of some kind.

Obviously this isn't necessary to fix the build failure, but it would fix it in a standards-conforming way.  For whatever it's worth.


For reference:

Restriction info (UTS 39):
https://www.unicode.org/reports/tr39/tr39-15.html#Identifier_Status_and_Type
https://www.unicode.org/reports/tr39/tr39-15.html#Modifications

See note just above this table entry in UAX 31:
https://www.unicode.org/reports/tr31/tr31-27.html#Aspirational_Use_Scripts
https://www.unicode.org/reports/tr31/tr31-27.html#Modifications

# Identifier types in Unicode 9.0 and 10.0.
https://www.unicode.org/Public/security/9.0.0/IdentifierType.txt
https://www.unicode.org/Public/security/10.0.0/IdentifierType.txt
Comment 21 jospezial 2017-12-06 23:15:17 UTC
${FILESDIR}/${P}-icu-60.1.patch

but there is only qtwebengine-5.9.3-icu-60.1.patch

results in:

Source unpacked in /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/work
>>> Preparing source in /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/work/qtwebengine-5.9.9999 ...
 * Applying qtwebengine-5.9.9999-icu-60.1.patch ...
/var/tmp/portage/dev-qt/qtwebengine-5.9.9999/temp/environment: line 1189: /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/files/qtwebengine-5.9.9999-icu-60.1.patch: No such file or directory
 [ !! ]
 * ERROR: dev-qt/qtwebengine-5.9.9999::qt failed (prepare phase):
 *   patch -p1  failed with /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/files/qtwebengine-5.9.9999-icu-60.1.patch
 *
Comment 22 Michael Palimaka (kensington) gentoo-dev 2017-12-07 09:08:13 UTC
(In reply to jospezial from comment #21)
> ${FILESDIR}/${P}-icu-60.1.patch
> 
> but there is only qtwebengine-5.9.3-icu-60.1.patch
> 
> results in:
> 
> Source unpacked in /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/work
> >>> Preparing source in /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/work/qtwebengine-5.9.9999 ...
>  * Applying qtwebengine-5.9.9999-icu-60.1.patch ...
> /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/temp/environment: line 1189:
> /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/files/qtwebengine-5.9.9999-icu-
> 60.1.patch: No such file or directory
>  [ !! ]
>  * ERROR: dev-qt/qtwebengine-5.9.9999::qt failed (prepare phase):
>  *   patch -p1  failed with
> /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/files/qtwebengine-5.9.9999-icu-
> 60.1.patch
>  *

My bad, sorry about that.
Comment 23 Larry the Git Cow gentoo-dev 2017-12-07 09:08:38 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/proj/qt.git/commit/?id=c701b5a30f12970c1faa3730b6cf5856c111fa42

commit c701b5a30f12970c1faa3730b6cf5856c111fa42
Author:     Michael Palimaka <kensington@gentoo.org>
AuthorDate: 2017-12-07 09:08:00 +0000
Commit:     Michael Palimaka <kensington@gentoo.org>
CommitDate: 2017-12-07 09:08:19 +0000

    dev-qt/qtwebengine: fix patch name
    
    Bug: https://bugs.gentoo.org/639220
    Package-Manager: Portage-2.3.14, Repoman-2.3.6

 dev-qt/qtwebengine/qtwebengine-5.10.9999.ebuild | 2 +-
 dev-qt/qtwebengine/qtwebengine-5.9.9999.ebuild  | 2 +-
 dev-qt/qtwebengine/qtwebengine-5.9999.ebuild    | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)}
Comment 24 jospezial 2017-12-15 18:56:07 UTC
https://gitweb.gentoo.org/proj/qt.git/commit/dev-qt/qtwebengine/files?id=9fc33af6d26ab78fa51e4570e972502cad3bb9ee

"dev-qt/qtwebengine: remove unneeded patch
The ICU 60.1 patch is not needed, nor does it apply on 5.9999/5.10."


The qtwebengine-5.9.9999.ebuild still has it.:


>>> Preparing source in /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/work/qtwebengine-5.9.9999 ...
 * Applying qtwebengine-5.9.3-icu-60.1.patch ...
/var/tmp/portage/dev-qt/qtwebengine-5.9.9999/temp/environment: line 1194: /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/files/qtwebengine-5.9.3-icu-60.1.patch: No such file or directory
 [ !! ]
 * ERROR: dev-qt/qtwebengine-5.9.9999::qt failed (prepare phase):
 *   patch -p1  failed with /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/files/qtwebengine-5.9.3-icu-60.1.patch
 * 
 * Call stack:
 *               ebuild.sh, line  124:  Called src_prepare
 *             environment, line 4662:  Called qt5-build_src_prepare
 *             environment, line 4268:  Called default
 *      phase-functions.sh, line  853:  Called default_src_prepare
 *      phase-functions.sh, line  918:  Called __eapi6_src_prepare
 *             environment, line  341:  Called eapply '/var/tmp/portage/dev-qt/qtwebengine-5.9.9999/files/qtwebengine-5.9.3-icu-60.1.patch'
 *             environment, line 1259:  Called _eapply_patch '/var/tmp/portage/dev-qt/qtwebengine-5.9.9999/files/qtwebengine-5.9.3-icu-60.1.patch'
 *             environment, line 1197:  Called __helpers_die 'patch -p1  failed with /var/tmp/portage/dev-qt/qtwebengine-5.9.9999/files/qtwebengine-5.9.3-icu-60.1.patch'
 *   isolated-functions.sh, line  117:  Called die
 * The specific snippet of code:
 *              die "$@"
Comment 25 jospezial 2017-12-15 19:54:50 UTC
the patch is still needed for qtwebengine-5.9.9999
Comment 26 Chiitoo gentoo-dev 2017-12-15 20:57:38 UTC
(In reply to jospezial from comment #25)
> the patch is still needed for qtwebengine-5.9.9999

Ah, crud!  I believe I forgot/had not noticed that 5.9.9999 is still around there, at the time of the removal of the patch, and though I noticed it later on, I had already forgotten the whole thing...

Much apologies!

Will fix.