Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 575198

Summary: dev-libs/icu: Use -std=c++-11
Product: Gentoo Linux Reporter: Ryan Hill (RETIRED) <rhill>
Component: [OLD] LibraryAssignee: Gentoo Office Team <office>
Status: RESOLVED FIXED    
Severity: normal    
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 542482, 572770    

Description Ryan Hill (RETIRED) gentoo-dev 2016-02-20 08:04:32 UTC
ICU supports -std=c++11 but we are currently forcing -std=gnu++98.  This goes back a couple years when it was decided not to break ABI compatibility until we needed to.  Unfortunately that time has come and some packages that require the new standard are failing to link with ICU.

example from app-i18n/poedit:

language.o: In function `void std::__unguarded_linear_insert<__gnu_cxx::__normal_iterator<icu::UnicodeString*, std::vector<icu::UnicodeString, std::allocator<icu::UnicodeString> > >, __gnu_cxx::__ops::_Val_comp_iter<(anonymous namespace)::GetDisplayNamesData()::{lambda()#1}::operator()() const::{lambda(icu::UnicodeString const&, icu::UnicodeString const)#1}> >(__gnu_cxx::__normal_iterator<icu::UnicodeString*, std::vector<icu::UnicodeString, std::allocator<icu::UnicodeString> > >, __gnu_cxx::__ops::_Val_comp_iter<(anonymous namespace)::GetDisplayNamesData()::{lambda()#1}::operator()() const::{lambda(icu::UnicodeString const&, icu::UnicodeString const)#1}>)':
language.cpp:(.text+0x2d): undefined reference to `icu::UnicodeString::UnicodeString(icu::UnicodeString&&)'
language.o: In function `void std::__insertion_sort<__gnu_cxx::__normal_iterator<icu::UnicodeString*, std::vector<icu::UnicodeString, std::allocator<icu::UnicodeString> > >, __gnu_cxx::__ops::_Iter_comp_iter<(anonymous namespace)::GetDisplayNamesData()::{lambda()#1}::operator()() const::{lambda(icu::UnicodeString const&, icu::UnicodeString const)#1}> >(__gnu_cxx::__normal_iterator<icu::UnicodeString*, std::vector<icu::UnicodeString, std::allocator<icu::UnicodeString> > >, (anonymous namespace)::GetDisplayNamesData()::{lambda()#1}::operator()() const::{lambda(icu::UnicodeString const&, icu::UnicodeString const)#1}, __gnu_cxx::__ops::_Iter_comp_iter<(anonymous namespace)::GetDisplayNamesData()::{lambda()#1}::operator()() const::{lambda(icu::UnicodeString const&, icu::UnicodeString const)#1}>)':

language.cpp:(.text+0x161): undefined reference to `icu::UnicodeString::UnicodeString(icu::UnicodeString&&)'
Comment 1 Andreas K. Hüttel archtester gentoo-dev 2016-02-29 13:13:03 UTC
I'm not sure what exactly the impact of this is. 

Will all users of ICU also have to switch to -std=c++11 ?
Comment 2 Andreas K. Hüttel archtester gentoo-dev 2016-02-29 13:25:31 UTC
commit f6686f843c2368b08f0692ea0419987982453dd8
Author: Andreas K. Hüttel <dilfridge@gentoo.org>
Date:   Mon Feb 29 14:24:39 2016 +0100

    dev-libs/icu: Add experimental, untested revbump using C++11. No keywords. Bug 575198
    
    Package-Manager: portage-2.2.27

 dev-libs/icu/icu-56.1-r1.ebuild | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 134 insertions(+)
Comment 3 Ryan Hill (RETIRED) gentoo-dev 2016-02-29 18:54:01 UTC
We'll have to test all consumers for linking errors but I'm hoping that because upstream has been C++-11 for a while now most packages have already worked this out.
Comment 4 jospezial 2016-02-29 22:08:40 UTC
(media-libs/libcdr-0.1.2-r1:0/0::gentoo, ebuild scheduled for merge)
    (media-libs/harfbuzz-1.2.3:0/0.9.18::gentoo, ebuild scheduled for merge)
    (app-text/libmspub-0.1.2:0/0::gentoo, ebuild scheduled for merge)
    (net-libs/webkit-gtk-2.4.9:3/25::gentoo, ebuild scheduled for merge)
    (dev-qt/qtcore-4.8.7-r1:4/4::gentoo, ebuild scheduled for merge)
    (net-nds/openldap-2.4.44_pre:0/0::poly-c, ebuild scheduled for merge)
    (dev-qt/qtcore-5.6.9999:5/5.6::qt, ebuild scheduled for merge)
    (dev-libs/libxml2-2.9.3:2/2::gentoo, ebuild scheduled for merge)
    (media-libs/libvisio-0.1.5:0/0::gentoo, ebuild scheduled for merge)
    (app-text/libebook-0.1.2-r1:0/0::gentoo, ebuild scheduled for merge)
    (media-libs/libfreehand-0.1.1:0/0::gentoo, ebuild scheduled for merge)
    (net-libs/webkit-gtk-2.4.9-r200:2/2::gentoo, ebuild scheduled for merge)
    (media-libs/raptor-2.0.14:2/2::gentoo, ebuild scheduled for merge)
    (dev-libs/boost-1.58.0-r1:0/1.58.0::libressl, ebuild scheduled for merge)
    (dev-db/sqlite-3.11.0_pre:3/3::poly-c, ebuild scheduled for merge)
    (dev-qt/qtwebkit-5.6.9999:5/5.6::qt, ebuild scheduled for merge)

All these packages built fine with that icu.

Portage 2.2.27 (python 3.4.3-final-0, default/linux/amd64/13.0, gcc-5.3.0, glibc-2.22-r2, 4.5.0-rc6 x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-4.5.0-rc6-x86_64-Intel-R-_Core-TM-2_Quad_CPU_Q6600_@_2.40GHz-with-gentoo-2.2
KiB Mem:     4047076 total,   2117448 free
KiB Swap:   11010040 total,  10902744 free
Timestamp of repository gentoo: Mon, 29 Feb 2016 14:50:01 +0000
Timestamp of repository poly-c: Mon, 29 Feb 2016 15:05:12 +0000
sh bash 4.3_p42-r2
ld GNU ld (Gentoo 2.25.1 p1.1) 2.25.1
ccache version 3.2.4 [enabled]
app-shells/bash:          4.3_p42-r2::gentoo                                                                                           
dev-java/java-config:     2.2.0-r3::gentoo                                                                                             
dev-lang/perl:            5.22.1::gentoo                                                                                               
dev-lang/python:          2.7.11-r2::gentoo, 3.4.3-r7::gentoo, 3.5.1-r2::gentoo                                                        
dev-util/ccache:          3.2.4::gentoo                                                                                                
dev-util/cmake:           3.5.0_rc3::poly-c                                                                                            
dev-util/pkgconfig:       0.29::gentoo                                                                                                 
sys-apps/baselayout:      2.2::gentoo                                                                                                  
sys-apps/openrc:          0.20.5::gentoo                                                                                               
sys-apps/sandbox:         2.10-r1::gentoo                                                                                              
sys-devel/autoconf:       2.13::gentoo, 2.69-r1::gentoo                                                                                
sys-devel/automake:       1.11.6-r2::gentoo, 1.12.6-r1::gentoo, 1.13.4-r1::gentoo, 1.14.1-r1::gentoo, 1.15-r2::gentoo                  
sys-devel/binutils:       2.25.1-r1::gentoo                                                                                            
sys-devel/gcc:            5.3.0::gentoo                                                                                                
sys-devel/gcc-config:     1.8-r1::gentoo                                                                                               
sys-devel/libtool:        2.4.6-r2::gentoo                                                                                             
sys-devel/make:           4.1-r1::gentoo                                                                                               
sys-kernel/linux-headers: 4.4::gentoo (virtual/os-headers)                                                                             
sys-libs/glibc:           2.22-r2::gentoo                                                                                              
Repositories:                                                                                                                          
                                                                                                                                       
gentoo                                                                                                                                 
    location: /usr/portage                                                                                                             
    sync-type: rsync                                                                                                                   
    sync-uri: rsync://rsync.de.gentoo.org/gentoo-portage                                                                               
    priority: -1000                                                                                                                    
                                                                                                                                       
overlay_jl
    location: /usr/local/portage
    masters: gentoo
    priority: 0

betagarden
    location: /var/lib/layman/betagarden
    sync-type: laymansync
    sync-uri: git://anongit.gentoo.org/proj/betagarden.git
    masters: gentoo
    priority: 50

gamerlay
    location: /var/lib/layman/gamerlay
    sync-type: laymansync
    sync-uri: git://anongit.gentoo.org/proj/gamerlay.git
    masters: gentoo
    priority: 50

games-overlay
    location: /var/lib/layman/games-overlay
    sync-type: laymansync
    sync-uri: git://github.com/hasufell/games-overlay.git
    masters: gentoo
    priority: 50

kde
    location: /var/lib/layman/kde
    sync-type: laymansync
    sync-uri: git://anongit.gentoo.org/proj/kde.git
    masters: gentoo
    priority: 50

libressl
    location: /var/lib/layman/libressl
    sync-type: laymansync
    sync-uri: https://github.com/gentoo/libressl.git
    masters: gentoo
    priority: 50

poly-c
    location: /var/lib/layman/poly-c
    sync-type: laymansync
    sync-uri: rsync://gentoofan.no-ip.org/poly-c
    masters: gentoo
    priority: 50

qt
    location: /var/lib/layman/qt
    sync-type: laymansync
    sync-uri: git://anongit.gentoo.org/proj/qt.git
    masters: gentoo
    priority: 50

x11
    location: /var/lib/layman/x11
    sync-type: laymansync
    sync-uri: git://anongit.gentoo.org/proj/x11
    masters: gentoo
    priority: 50

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /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="-march=native -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--autounmask-write=y --keep-going --quiet-build=y --verbose-conflicts"
FCFLAGS="-march=native -O2 -pipe"
FEATURES="assume-digests binpkg-logs ccache config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-march=native -O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LANG="de_DE.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j5"
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="3dnowext 64bit X Xaw3d a52 aac aacplus aacs aalib accessibility ace acl acpi activefilter aes aften alsa amd64 ap apm apng archive arping audacious audiofile automount bazaar bdplus berkdb binary-drivers bluetooth bluray boost bzip2 bzr cairo canusb ccache cdda cddb cdio cdparanoia cdr cdrdao cdrom cgi charconv chm chroot cjk clang cli client colordiff colors compress consolekit corefonts cpio cracklib crypt css cue cups curl curlwrappers cvs cxx d3d9 daemon dbus dcadec declarative device-mapper dga dhcp doom doomsday dos download-subs dri dri3 drm dts dump dv dvb dvd dvdnav eap eap-sim eap-tls ebook egl emerald emoticon encode enscript equalizer evdev exif extensions extras faac faad fam farstream fat fax fbcon fdformat ffmpeg fftw firefox flac fluidsynth fontconfig foomaticdb fortran freedoom ftp fuse g3dvl gadu gallium gbm gd gdbm geoip gif gimp git glamor gles2 glut gme gnutls gpg gphoto2 gpm graphite gsm gstreamer gtk gtk2 gtk3 gtkstyle gui gzip hddtemp hdf hdf5 heretic hexen hid highlight hpcups hpijs http hwdb iconv icq icu id3tag idn imagemagick inotify introspection ipc ipod ipv6 jack java javascript jit jpeg jpeg2k kate kdenlive keymap ladspa lame lcms legacy-systray lensfun libass libcanberra libinput libkms libnotify libressl librtmp libsamplerate libssh2 libtiger libv4l libwww live llvm-shared-libs lm_sensors logrotate lua lz4 lzma lzo mad madwifi magic man matroska md5sum meanwhile melt mercurial metalink midi mikmod mime minizip mixer mjpeg mmap mms mmx mmxext mng mobi mod modplug modules mono mouse mozilla mp3 mp4 mpeg mpeg2 mplayer mtp multilib multimedia multislot musepack musicbrainz nano-syntax ncat ncurses ndiff network nfs nfsidmap nfsv4 nfsv41 nls nmap-update nokia normalize nowlistening nping nptl nsplugin ntfs ntfsprogs ntp nvidia nvram obex ocr ogg ogm openal opencl opengl openh264 openmax openmp oscar osdmenu otr p2p pam pango panorama parport parse-clocks pcap pci pcre pcre16 pdf pipes plugins pm-utils png policykit postproc postscript ppds printsupport privacy projectm pulseaudio pvr python python3 qalculate qml qt5 quicktime r600-llvm-compiler radio rar raw rdesktop readline recording redeyes reiser4 reiserfs remote-access replaygain rpm rtc rtmp rtsp rubberband s3tc sbsms scanner schroedinger scripttools sdl seccomp secure-delete sensord session sftp sha512 shorten shout skins slang smi sndfile snowberry sockets sound soundtouch sox speex spell sql sqlite sqlite3 squashfs sse sse2 ssh ssl startup-notification statistics stk stream subtitles subversion svg swat symlink sync-plugin-portage syslog system-jsoncpp szip taglib tcpd texteffect tftp tftpd theora threads thumbnail tiff timidity tk tracepath traceroute track-src-odirect translator truetype twolame udev udf udisks unicode upower urlpicpreview usb v4l v4l2 vaapi vamp vcd vdpau video videos virtualbox vlm vnc vorbis vpx vroot vst wad wav wavpack webgl webkit webm webp webpresence widgets wifi winbind winpopup wmf wps wxwidgets x264 x265 xa xattr xcb xcomposite xfs xine xinerama xinetd xkb xml xmp xorg xosd xpm xrandr xscreensaver xv xvid xvmc yahoo zenmap zip zlib zvbi" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" 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="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 ssse3" CURL_SSL="libressl" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev keyboard mouse joystick" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="de" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python3_4" PYTHON_TARGETS="python2_7 python3_4 python3_5" RUBY_TARGETS="ruby20 ruby21 ruby21 ruby22 ruby23" USERLAND="GNU" VIDEO_CARDS="fbdev vesa svga vga radeon modesetting r100 r200 r300 r600" 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, USE_PYTHON

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

dev-libs/icu-56.1-r1::gentoo was built with the following:
USE="-debug -doc -examples -static-libs" ABI_X86="32 64 -x32"
CXXFLAGS="-march=native -O2 -pipe -std=c++11"
Comment 5 Andreas K. Hüttel archtester gentoo-dev 2016-02-29 22:13:04 UTC
     Mon Feb 29 14:33:17 2016 >>> dev-libs/icu-56.1-r1
     Mon Feb 29 14:33:34 2016 >>> dev-tex/bibtexu-3.71_p20140525
     Mon Feb 29 14:33:42 2016 >>> dev-perl/MediaWiki-API-0.410.0
     Mon Feb 29 14:34:20 2016 >>> dev-db/sqlite-3.9.2
     Mon Feb 29 14:35:25 2016 >>> dev-libs/libxml2-2.9.3
     Mon Feb 29 14:38:42 2016 >>> dev-libs/boost-1.56.0-r1
     Mon Feb 29 14:39:02 2016 >>> app-text/libmspub-0.1.2
     Mon Feb 29 14:39:25 2016 >>> media-libs/libvisio-0.1.1
     Mon Feb 29 14:39:48 2016 >>> app-text/libebook-0.1.2
     Mon Feb 29 14:40:04 2016 >>> media-libs/libfreehand-0.1.1
     Mon Feb 29 14:40:35 2016 >>> media-libs/libcdr-0.1.1
     Mon Feb 29 14:40:46 2016 >>> net-misc/youtube-dl-2016.02.27
     Mon Feb 29 14:42:51 2016 >>> net-nds/openldap-2.4.38-r2
     Mon Feb 29 14:43:22 2016 >>> mail-mta/postfix-3.0.3-r1
     Mon Feb 29 14:43:41 2016 >>> media-libs/raptor-2.0.9
     Mon Feb 29 14:47:16 2016 >>> dev-lang/R-3.2.2
     Mon Feb 29 14:48:16 2016 >>> sys-apps/util-linux-2.26.2
     Mon Feb 29 14:50:14 2016 >>> dev-libs/glib-2.46.2-r2
     Mon Feb 29 14:52:47 2016 >>> dev-qt/qtcore-5.5.1-r1
     Mon Feb 29 14:55:39 2016 >>> dev-qt/qtcore-4.8.7-r1
     Mon Feb 29 14:56:12 2016 >>> media-libs/harfbuzz-1.1.3
     Mon Feb 29 15:00:30 2016 >>> app-text/texlive-core-2014-r4
     Mon Feb 29 15:13:16 2016 >>> dev-qt/qtwebkit-4.8.7
     Mon Feb 29 15:36:15 2016 >>> dev-qt/qtwebkit-5.5.1-r1
     Mon Feb 29 15:37:22 2016 >>> app-text/calibre-2.47.0
     Mon Feb 29 16:54:23 2016 >>> app-office/libreoffice-5.1.0.3
     Mon Feb 29 16:54:41 2016 >>> x11-libs/libnotify-0.7.6-r3
     Mon Feb 29 17:13:02 2016 >>> app-office/calligra-2.9.11
     Mon Feb 29 18:07:40 2016 >>> net-libs/webkit-gtk-2.4.9
     Mon Feb 29 18:47:45 2016 >>> net-libs/webkit-gtk-2.4.9-r200

Similar observation here, all rebuilds finished fine
IMHO this is large enough a sample to release it into ~arch.
Comment 6 Andreas K. Hüttel archtester gentoo-dev 2016-02-29 22:18:39 UTC
commit 50c06f256867ddc5f034c34d07047c55251c6136 (HEAD -> master, origin/master, origin/HEAD)
Author: Andreas K. Hüttel <dilfridge@gentoo.org>
Date:   Mon Feb 29 23:17:00 2016 +0100

    dev-libs/icu: Restore keywords after build testing
    
    Package-Manager: portage-2.2.27

 dev-libs/icu/icu-56.1-r1.ebuild | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)