Summary: | media-libs/phonon-4.8.3-r1[qt5] fails to build with gcc-5 - QtCore/QtGlobal:1:0, from CMakeTmp/check_qt_visibility.cpp:1: /usr/include/qt5/QtCore/qglobal.h:1097:4: "You must build your code with position independent code if Qt was built with -red... | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | jospezial <jospezial> |
Component: | [OLD] Library | Assignee: | Gentoo KDE team <kde> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | aos, b.buschinski, biergaizi2009, carlphilippreh, de.techno, dschridde+gentoobugs, floppym, gentoo, gentoo, gent_bz, groggy, hendrik, jarausch, jlec, klaus818, kredba, M4rkusXXL, nirvandil, pastas4, qasdfgtyuiop, rhill, sven.eden, tetromino, zeekec |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
URL: | https://git.reviewboard.kde.org/r/123874/ | ||
See Also: |
https://bugs.gentoo.org/show_bug.cgi?id=564026 https://bugs.gentoo.org/show_bug.cgi?id=564028 https://bugs.gentoo.org/show_bug.cgi?id=579038 |
||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 559130 | ||
Attachments: | phonon-4.8.3-fPIC.patch |
Description
jospezial
2015-07-25 13:09:38 UTC
emerge --info gcc cmake qtcore Portage 2.2.20 (python 3.3.5-final-0, default/linux/amd64/13.0, gcc-5.2.0, glibc-2.21-r1, 4.2.0-rc3 x86_64) ================================================================= System Settings ================================================================= System uname: Linux-4.2.0-rc3-x86_64-AMD_Athlon-tm-_II_X2_240_Processor-with-gentoo-2.2 KiB Mem: 4047504 total, 403136 free KiB Swap: 11010040 total, 10986728 free Timestamp of repository gentoo: Fri, 24 Jul 2015 21:15:01 +0000 sh bash 4.3_p39 ld GNU ld (Gentoo 2.25 p1.2) 2.25 ccache version 3.2.2 [enabled] app-shells/bash: 4.3_p39::gentoo dev-java/java-config: 2.2.0::gentoo dev-lang/perl: 5.22.0::gentoo dev-lang/python: 2.7.10::gentoo, 3.3.5-r1::gentoo, 3.4.3::gentoo dev-util/ccache: 3.2.2::gentoo dev-util/cmake: 3.3.0::gentoo dev-util/pkgconfig: 0.28-r3::gentoo sys-apps/baselayout: 2.2::gentoo sys-apps/openrc: 0.17::gentoo sys-apps/sandbox: 2.6-r1::gentoo sys-devel/autoconf: 2.13::gentoo, 2.69-r1::gentoo sys-devel/automake: 1.10.3-r1::gentoo, 1.11.6-r1::gentoo, 1.13.4::gentoo, 1.14.1::gentoo, 1.15::gentoo sys-devel/binutils: 2.25-r1::gentoo sys-devel/gcc: 5.2.0::gentoo sys-devel/gcc-config: 1.8::gentoo sys-devel/libtool: 2.4.6-r1::gentoo sys-devel/make: 4.1-r1::gentoo sys-kernel/linux-headers: 4.1::gentoo (virtual/os-headers) sys-libs/glibc: 2.21-r1::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 kde location: /var/lib/layman/kde sync-type: laymansync sync-uri: git://anongit.gentoo.org/proj/kde.git 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 Installed sets: @kde-applications-live, @kde-frameworks-live, @kde-plasma-live 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 /var/lib/hsqldb" 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" 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.UTF-8" LDFLAGS="-Wl,-O1 -Wl,--as-needed" MAKEOPTS="-j3" 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" PORTAGE_TMPDIR="/var/tmp" USE="3dnow 3dnowext 64bit X Xaw3d a52 aac aacplus aacs aalib accessibility ace acl acpi activefilter 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 daemon dbus declarative device-mapper dga dhcp doom doomsday dos download-subs dri dri3 dts dump dv dvb dvd dvdnav eap eap-sim eap-tls ebook egl emerald emoticon enca 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 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 introspection ios ipc ipod ipv6 jack java javascript jit jpeg jpeg2k kate keymap ladspa lame lcms legacy-systray lensfun libass libcanberra libinput libkms libnotify libsamplerate libssh2 libtiger libv4l libwww live llvm-shared-libs lm_sensors logrotate lua lz4 lzma lzo mad madwifi magic man matroska md5sum meanwhile 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 openmax openmp openssl 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 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 tracepath traceroute translator truetype twolame udev udisks unicode upower urlpicpreview usb v4l v4l2 vaapi vamp vcd vcdx 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="3dnow 3dnowext mmx mmxext popcnt sse sse2 sse3 sse4a" 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_3" PYTHON_TARGETS="python2_7 python3_3 python3_4" RUBY_TARGETS="ruby19 ruby20 ruby21 ruby22" 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: CPPFLAGS, CTARGET, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON ================================================================= Package Settings ================================================================= sys-devel/gcc-5.2.0::gentoo was built with the following: USE="cxx fortran graphite (multilib) nls nptl openmp sanitize (-altivec) (-awt) -cilk -debug -doc (-fixed-point) -gcj -go (-hardened) (-libssp) (-multislot) -nopie -nossp -objc -objc++ -objc-gc -regression-test -vanilla" ABI_X86="64" dev-util/cmake-3.3.0::gentoo was built with the following: USE="ncurses qt5 system-jsoncpp -doc -emacs -qt4 -test" ABI_X86="64" dev-qt/qtcore-4.8.9999::qt was built with the following: USE="exceptions glib iconv icu ssl (-aqua) -debug -pch -qt3support" ABI_X86="64 -32 -x32" dev-qt/qtcore-5.9999::qt was built with the following: USE="icu -debug -systemd -test" ABI_X86="64" These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] media-libs/phonon-4.8.3-r1::gentoo USE="gstreamer pulseaudio qt5 vlc (-aqua) -debug -designer -qt4 (-zeitgeist)" ABI_X86="(64) -32 (-x32)" 0 KiB Also hit by this bug with GCC 5.2. Maybe it is related to GCC 5, can you also confirm that? If yes, add "gcc-5" to "Blocks" section of the bug report to let the developers know. I can confirm the same failure, also with gcc-5.2.0. This actually seems to be some broken macro in qtcore. http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/global/qglobal.h#n1066 !defined(__PIC__) || defined(__PIE__) makes no sense at all. I have no idea what they are attempting to accomplish here. Checking for !defined(__PIC__) && defined(__PIE__) would make much more sense in context. However, I'm pretty sure -fPIE implies -fPIC, so this macro seems entirely pointless. - no, -fPIE does not imply -fPIC - no, the macro is neither broken nor pointless - they're trying to tell gcc (>= 5) not to generate copy relocations - there are several other bugs like this one, open against different packages (In reply to Davide Pesavento from comment #6) > - no, -fPIE does not imply -fPIC I beg to differ: % echo "pic=__PIC__ pie=__PIE__" | g++ -E - | tail -n 1 pic=__PIC__ pie=__PIE__ % echo "pic=__PIC__ pie=__PIE__" | g++ -E -fPIE - | tail -n 1 pic=2 pie=2 > - no, the macro is neither broken nor pointless The macro checks to see if __PIC__ is disabled OR __PIE__ is enabled and gcc >= 500. If __PIC__ is disabled, __PIE__ must also be disabled. You cannot have PIE enabled without PIC. If __PIC__ is enabled, __PIE__ might also be enabled, but in that case we trigger the error anyway. For example, try and build the following program. It is impossible to build with GCC 5, no matter what PIC/PIE flags I pass. % cat test.cxx: #include <QtCore/qglobal.h> int main(void); % g++-4.9.3 -fPIC -fPIE -I/usr/include/qt5 -c test.cxx % g++-5.2.0 -fPIC -fPIE -I/usr/include/qt5 -c test.cxx In file included from test.cxx:1:0: /usr/include/qt5/QtCore/qglobal.h:1052:4: error: #error "You must build your code with position independent code if Qt was built with -reduce-relocations. " "Compile your code with -fPIC (-fPIE is not enough)." # error "You must build your code with position independent code if Qt was built with -reduce-relo ^ > - they're trying to tell gcc (>= 5) not to generate copy relocations > - there are several other bugs like this one, open against different packages The macro is broken and needs to be fixed to accomplish something useful on gcc 5. Ok, one more test: it is possible to build with gcc 5 if PIE is disabled. % g++-5.2.0 -fPIC -I/usr/include/qt5 -c test.cxx Is that really the intent of the macro? To get people to disable PIE? If so, the error message should really say so. In reading the commits surrounding this upstream, I'm even more confused. I can't figure out what the real intent of this check is: Is it to ensure that PIC is enabled, that PIE is disabled, or both? The Qt folks helpfully confirmed that this is meant to prevent building with -fPIE. From #qt on Freenode. <thiago> floppym: remove -fPIE <thiago> floppym: -fPIE overrides -fPIC, so it's like you didn't have -fPIC <thiago> floppym: leave -fPIC only Sorry for the confusion. I asked him to make the error message more precise. This seems to be common problem for all phonon-* and some other packages like bitcoin-qt =\ I have been trying to figure out where that -fPIE is coming from, but I cannot find it. I removed all instances from the various CMakeLists.txt files in the phonon source tarball, but it still pops up. I assume it is coming from some Qt-equivalent of a pkg-config file, but I can't find it. cmake/FindPhononInternal.cmake: 112 if (Qt5_POSITION_INDEPENDENT_CODE) 113 set(CMAKE_POSITION_INDEPENDENT_CODE ON) 114 endif() So the try_compile test for -fvisibility is done before there are any targets set up, so -fPIE is added implicitly. The "fix" that has been checked in upstream is to pass ${CMAKE_CXX_FLAGS} to CMAKE_FLAGS. I say "fix" because it both doesn't work and breaks non-standard include paths. There are 3 commits upstream that are related to this. I can't seem to view them though their repo's web browser, but they are the latest 3 patches to FindPhononInternal.cmake on the 4.8 branch. You can also see them in Fedora's git: http://pkgs.fedoraproject.org/cgit/phonon.git/tree/ as patch 3, 4 and 5. The first patch is the closest to what we want. The other two are completely broken because -DINCLUDE_DIRECTORIES:STRING=${QT_INCLUDES}" isn't a preprocessor flag. It's a special token that needs to be passed through CMAKE_FLAGS to parse properly. It looks almost exactly like a compiler flag and is passed almost exactly like a compiler flag, but is not, because cmake is awful. The only thing wrong with patch 3 is that he put the quotes around both variables. It should simply be: ... CMAKE_FLAGS ${CMAKE_CXX_FLAGS} "${_include_dirs}" ... Well, except for the fact that it doesn't actually work. -fPIE is still added. Mike: I found the commit msg that added the -fPIE check to qtcore to be a good explanation of what's going on with this: http://code.qt.io/cgit/qt/qtbase.git/commit/src/corelib/global?id=3eca75de67b3fd2c890715b30c7899cebc096fe9 Thanks for documenting your progress figuring this out, it helped a bunch. In a bug of kde-apps/cantor-9999 https://bugs.gentoo.org/show_bug.cgi?id=556100 I see in build.log following warning: ------------------------------------------------------ -- Configuring done CMake Warning (dev) at src/CMakeLists.txt:40 (add_executable): Policy CMP0063 is not set: Honor visibility properties for all target types. Run "cmake --help-policy CMP0063" for policy details. Use the cmake_policy command to set the policy and suppress this warning. Target "cantor" of type "EXECUTABLE" has the following visibility properties set for CXX: CXX_VISIBILITY_PRESET VISIBILITY_INLINES_HIDDEN For compatibility CMake is not honoring them for this target. This warning is for project developers. Use -Wno-dev to suppress it. ----------------------------------------------------------------------- cmake --help-policy CMP0063 CMP0063 ------- Honor visibility properties for all target types. The ``<LANG>_VISIBILITY_PRESET`` and ``VISIBILITY_INLINES_HIDDEN`` target properties affect visibility of symbols during dynamic linking. When first introduced these properties affected compilation of sources only in shared libraries, module libraries, and executables with the ``ENABLE_EXPORTS`` property set. This was sufficient for the basic use cases of shared libraries and executables with plugins. However, some sources may be compiled as part of static libraries or object libraries and then linked into a shared library later. CMake 3.3 and above prefer to honor these properties for sources compiled in all target types. This policy preserves compatibility for projects expecting the properties to work only for some target types. The ``OLD`` behavior for this policy is to ignore the visibility properties for static libraries, object libraries, and executables without exports. The ``NEW`` behavior for this policy is to honor the visibility properties for all target types. This policy was introduced in CMake version 3.3. CMake version 3.3.0 warns when the policy is not set and uses ``OLD`` behavior. Use the ``cmake_policy()`` command to set it to ``OLD`` or ``NEW`` explicitly. .. note:: The ``OLD`` behavior of a policy is ``deprecated by definition`` and may be removed in a future version of CMake. --------------------------------------------------------------------- Is this is related? *** Bug 558560 has been marked as a duplicate of this bug. *** Not a qt bug so removing qt@ from CC, re-add us if you need anything. I'm experiencing this issue. Cmake file 'phonon-4.8.3/cmake/FindPhononInternal.cmake' contains instructions which aim to create test cpp file and compile it. if (__KDE_HAVE_GCC_VISIBILITY AND GCC_IS_NEWER_THAN_4_1 AND NOT _GCC_COMPILED_WITH_BAD_ALLOCATOR AND NOT WIN32) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") set (KDE4_C_FLAGS "-fvisibility=hidden") # check that Qt defines Q_DECL_EXPORT as __attribute__ ((visibility("default"))) # if it doesn't and KDE compiles with hidden default visibiltiy plugins will break #set(_source "#include <QtCore/QtGlobal>\n int main()\n {\n #ifndef QT_VISIBILITY_AVAILABLE \n #error QT_VISIBILITY_AVAILABLE is not available\n #endif \n }\n") #set(_source_file ${CMAKE_BINARY_DIR}/CMakeTmp/check_qt_visibility.cpp) #file(WRITE "${_source_file}" "${_source}") #set(_include_dirs "-DINCLUDE_DIRECTORIES:STRING=${QT_INCLUDES}") #try_compile(_compile_result ${CMAKE_BINARY_DIR} ${_source_file} CMAKE_FLAGS "${_include_dir #if(NOT _compile_result) # message("${_compile_output_var}") # message(FATAL_ERROR "Qt compiled without support for -fvisibility=hidden. This will break plugins and linking of some applications. Please fix your Qt installation (try passing --reduce-exports to configure).")s}" OUTPUT_VARIABLE _compile_output_var) File check_qt_visibility.cpp checks macro QT_VISIBILITY_AVAILABLE in <QtCore/QtGlobal>. If macro is not set cmake recommends to add option --reduce-exports to qtcore (qtbase). It seems this options completely unrelated to issue. I'm sure --reduce-exports option adds macro QT_VISIBILITY_AVAILABLE to qconfig.h file and it's enabled by default if the compiler supports (I ran the test, it was passed). The macro is here. # grep -r QT_VISIBILITY_AVAILABLE /usr/include/qt5/QtCore/ /usr/include/qt5/QtCore/qconfig.h:#define QT_VISIBILITY_AVAILABLE /usr/include/qt5/QtCore/qcompilerdetection.h:# elif defined(QT_VISIBILITY_AVAILABLE) The only way phonon emits error is that QT_VISIBILITY_AVAILABLE macro is not in <QtCore/QtGlobal>. # cat /usr/include/qt5/QtCore/QtConfig #include "qconfig.h But it includes other file that has QT_VISIBILITY_AVAILABLE definition. # cat /usr/include/qt5/QtCore/qconfig.h ... #define QT_VISIBILITY_AVAILABLE Bug 100% reproducible with gcc-5.2.0. With gcc-4.9.2 all compiled correctly. I think it's wrong preprocessor behavior. Same error occurs when trying do preprocessing under QtGlobal header. # /usr/bin/g++-5.2.0 -E -x c++-header -I/usr/include/qt5 /usr/include/qt5/QtCore/QtGlobal > /dev/null In file included from /usr/include/qt5/QtCore/QtGlobal:1:0: /usr/include/qt5/QtCore/qglobal.h:1052:4: error: #error "You must build your code with position independent code if Qt was built with -reduce-relocations. " "Compile your code with -fPIC (-fPIE is not enough)." # error "You must build your code with position independent code if Qt was built with -reduce-relocations. " Error reproduces with gcc-4.9.2, gcc-5.2.0. Error is suppressed if -fPIC or -fPIE compilation flag added. Is there any known workaround to get media-libs/phonon-4.8.3-r1[qt5] compiled? And don't tell me to install an older version of gcc. I found something: https://quickgit.kde.org/?p=phonon.git&a=commit&h=e5b7ede37a9c89b0ec69ee2be7c219a79e836fe1 but doesn't work: * Package: media-libs/phonon-4.8.3-r1 * Repository: gentoo * Maintainer: kde@gentoo.org * USE: abi_x86_64 amd64 elibc_glibc gstreamer kernel_linux pulseaudio qt5 userland_GNU vlc * FEATURES: ccache preserve-libs sandbox userpriv usersandbox >>> Unpacking source... >>> Unpacking phonon-4.8.3.tar.xz to /var/tmp/portage/media-libs/phonon-4.8.3-r1/work >>> Source unpacked in /var/tmp/portage/media-libs/phonon-4.8.3-r1/work >>> Preparing source in /var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3 ... * Applying phonon-4.7.0-plugin-install.patch ... [ ok ] * Applying user patches from /etc/portage/patches//media-libs/phonon-4.8.3-r1 ... * fix_build_with_qt-5.4.2.patch ... [ ok ] * Done with patching >>> Source prepared. >>> Configuring source in /var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3 ... * qt5: running myconfigure >>> Working in BUILD_DIR: "/var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3-qt5" cmake --no-warn-unused-cli -C /var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3-qt5/gentoo_common_config.cmake -G Unix Makefiles -DCMAKE_INSTALL_PREFIX=/usr -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=TRUE -DPHONON_BUILD_DESIGNER_PLUGIN=OFF -DWITH_GLIB2=ON -DWITH_PulseAudio=ON -DWITH_QZeitgeist=OFF -DQT_QMAKE_EXECUTABLE=/usr/lib64/qt5/bin/qmake -DPHONON_BUILD_PHONON4QT5=ON -DCMAKE_BUILD_TYPE=Gentoo -DCMAKE_INSTALL_DO_STRIP=OFF -DCMAKE_USER_MAKE_RULES_OVERRIDE=/var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3-qt5/gentoo_rules.cmake -DCMAKE_TOOLCHAIN_FILE=/var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3-qt5/gentoo_toolchain.cmake /var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3 Not searching for unused variables given on the command line. loading initial cache file /var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3-qt5/gentoo_common_config.cmake -- The C compiler identification is GNU 5.2.0 -- The CXX compiler identification is GNU 5.2.0 -- Check for working C compiler: /usr/lib64/ccache/bin/x86_64-pc-linux-gnu-gcc -- Check for working C compiler: /usr/lib64/ccache/bin/x86_64-pc-linux-gnu-gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/lib64/ccache/bin/x86_64-pc-linux-gnu-g++ -- Check for working CXX compiler: /usr/lib64/ccache/bin/x86_64-pc-linux-gnu-g++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Enabling backend state machine validation. -- Using CMake automoc builtin -- Performing Test HAVE_FPIE_SUPPORT -- Performing Test HAVE_FPIE_SUPPORT - Success -- Performing Test __KDE_HAVE_W_OVERLOADED_VIRTUAL -- Performing Test __KDE_HAVE_W_OVERLOADED_VIRTUAL - Success -- Performing Test __KDE_HAVE_GCC_VISIBILITY -- Performing Test __KDE_HAVE_GCC_VISIBILITY - Success Change Dir: /var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3-qt5/CMakeFiles/CMakeTmp Run Build Command:"/usr/bin/gmake" "cmTC_dacac/fast" /usr/bin/gmake -f CMakeFiles/cmTC_dacac.dir/build.make CMakeFiles/cmTC_dacac.dir/build gmake[1]: Entering directory '/var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3-qt5/CMakeFiles/CMakeTmp' Building CXX object CMakeFiles/cmTC_dacac.dir/check_qt_visibility.cpp.o /usr/lib64/ccache/bin/x86_64-pc-linux-gnu-g++ -DNDEBUG -march=native -O2 -pipe -Wnon-virtual-dtor -Wno-long-long -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS -fno-check-new -fno-common -Woverloaded-virtual -fvisibility=hidden -fPIE -o CMakeFiles/cmTC_dacac.dir/check_qt_visibility.cpp.o -c /var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3-qt5/CMakeTmp/check_qt_visibility.cpp /var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3-qt5/CMakeTmp/check_qt_visibility.cpp:1:27: fatal error: QtCore/QtGlobal: No such file or directory compilation terminated. CMakeFiles/cmTC_dacac.dir/build.make:65: recipe for target 'CMakeFiles/cmTC_dacac.dir/check_qt_visibility.cpp.o' failed gmake[1]: *** [CMakeFiles/cmTC_dacac.dir/check_qt_visibility.cpp.o] Error 1 gmake[1]: Leaving directory '/var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3-qt5/CMakeFiles/CMakeTmp' Makefile:126: recipe for target 'cmTC_dacac/fast' failed gmake: *** [cmTC_dacac/fast] Error 2 CMake Error at cmake/FindPhononInternal.cmake:416 (message): Qt compiled without support for -fvisibility=hidden. This will break plugins and linking of some applications. Please fix your Qt installation (try passing --reduce-exports to configure). Call Stack (most recent call first): CMakeLists.txt:47 (include) -- Configuring incomplete, errors occurred! See also "/var/tmp/portage/media-libs/phonon-4.8.3-r1/work/phonon-4.8.3-qt5/CMakeFiles/CMakeOutput.log". * ERROR: media-libs/phonon-4.8.3-r1::gentoo failed (configure phase): * cmake failed * * Call stack: * ebuild.sh, line 93: Called src_configure * environment, line 3389: Called multibuild_foreach_variant 'myconfigure' * environment, line 2424: Called _multibuild_run 'myconfigure' * environment, line 2422: Called myconfigure * environment, line 3385: Called multilib_src_configure * environment, line 2923: Called cmake-utils_src_configure * environment, line 784: Called _execute_optionally 'src_configure' * environment, line 301: Called enable_cmake-utils_src_configure * environment, line 1104: Called die * The specific snippet of code: * "${CMAKE_BINARY}" "${cmakeargs[@]}" "${CMAKE_USE_DIR}" || die "cmake failed"; * (In reply to jospezial from comment #20) > Is there any known workaround to get media-libs/phonon-4.8.3-r1[qt5] > compiled? > And don't tell me to install an older version of gcc. Dirty workaround: edit /usr/include/qt5/QtCore/qglobal.h on disk, comment out line 1052-1053 that have the #error directive. Install phonon and friends. Then restore original version of qglobal.h media-libs/phonon-9999 compiles without problems. Who can put a single patch together with related fixes from https://quickgit.kde.org/?p=phonon.git ? (In reply to Alexandre Rostovtsev from comment #22) > Dirty workaround: edit /usr/include/qt5/QtCore/qglobal.h on disk, comment > out line 1052-1053 that have the #error directive. > > Install phonon and friends. > > Then restore original version of qglobal.h Don't do that. The __PIE__ check is there for a reason. (In reply to Mike Gilbert from comment #24) > Don't do that. The __PIE__ check is there for a reason. Of course the check is there for a reason. But in phonon's case, the check is triggered incorrectly, so temporarily removing it seems to be the only solution for gcc-5 users. (The alternatives - rebuild *everything* c++-based using gcc-4 or mask qt5 - are obviously unworkable.) (In reply to Alexandre Rostovtsev from comment #25) > (In reply to Mike Gilbert from comment #24) > > Don't do that. The __PIE__ check is there for a reason. > > Of course the check is there for a reason. But in phonon's case, the check > is triggered incorrectly, so temporarily removing it seems to be the only > solution for gcc-5 users. (The alternatives - rebuild *everything* c++-based > using gcc-4 or mask qt5 - are obviously unworkable.) No, it is being correctly triggered. cmake is adding -fPIE to the compiler flags, when it clearly should not be. This specifically causes problems with gcc-5. Please see Ryan's analysis for more info on that. (In reply to jospezial from comment #23) > media-libs/phonon-9999 compiles without problems. > > Who can put a single patch together with related fixes from > > https://quickgit.kde.org/?p=phonon.git Already did. See comment #14. Created attachment 411794 [details, diff]
phonon-4.8.3-fPIC.patch
When CMAKE_POSITION_INDEPENDENT_CODE is enabled cmake tries to be clever about when to use -fPIC vs -fPIE depending on the type of object being created. Upstream seems to think that the problem is the CMAKE_CXX_FLAGS variable that contains -fPIC isn't getting passed to try_compile() properly. In reality it's being passed fine, but because try_compile() creates an executable, cmake is appending -fPIE instead.
(In reply to Ryan Hill from comment #28) > Created attachment 411794 [details, diff] [details, diff] > phonon-4.8.3-fPIC.patch > > When CMAKE_POSITION_INDEPENDENT_CODE is enabled cmake tries to be clever > about when to use -fPIC vs -fPIE depending on the type of object being > created. Upstream seems to think that the problem is the CMAKE_CXX_FLAGS > variable that contains -fPIC isn't getting passed to try_compile() properly. > In reality it's being passed fine, but because try_compile() creates an > executable, cmake is appending -fPIE instead. I can confirm that putting your patch into /etc/portage/patches/media-libs/phonon-4.8.3 made phonon-4.8.3-r1 merge fine on my system with gcc-5.2.0 used as the system compiler. I can also confirm that the patch works on Gentoo Hardened with GCC 5.1. Patch works for me (gcc-5.2 as system compiler) *** Bug 561890 has been marked as a duplicate of this bug. *** This bug totally pwned me. Nice job Ryan. I can confirm comment #23, phonon-9999 compiles without issues. Can someone please push Ryan's fix? Its a pain to do the manual updates on portage like this. You do not need to manually update anything. Just drop Ryans patch into /etc/portage/patches/media-libs/phonon-4.8.3 and you are set. Patch works for me using gcc-5.3 as system compiler (In reply to Sven Eden from comment #36) > You do not need to manually update anything. > Just drop Ryans patch into > /etc/portage/patches/media-libs/phonon-4.8.3 > and you are set. it doesn't work (In reply to Perfect Gentleman from comment #38) > (In reply to Sven Eden from comment #36) > > You do not need to manually update anything. > > Just drop Ryans patch into > > /etc/portage/patches/media-libs/phonon-4.8.3 > > and you are set. > > it doesn't work my wrong Thanks everyone, Ryan's patch is in git now. https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=530ab1e60ae5a831e45bf68527471dc4f40685a8 *** Bug 568360 has been marked as a duplicate of this bug. *** *** Bug 582774 has been marked as a duplicate of this bug. *** *** Bug 584502 has been marked as a duplicate of this bug. *** |