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

Bug 523124

Summary: media-gfx/openmesh-3.2 selects Qt version automagically
Product: Gentoo Linux Reporter: Michael Palimaka (kensington) <kensington>
Component: Current packagesAssignee: Justin Bronder (RETIRED) <jsbronder>
Status: RESOLVED FIXED    
Severity: normal CC: maggu2810, uwelk
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 454132, 526374    
Attachments: build log

Description Michael Palimaka (kensington) gentoo-dev 2014-09-18 12:46:22 UTC
Created attachment 385016 [details]
build log

Package was built with USE="qt4" but linked to Qt5.

Portage 2.2.10 (hardened/linux/amd64, gcc-4.8.3, glibc-2.19-r1, 3.12.21-gentoo-r1 x86_64)
=================================================================
System uname: Linux-3.12.21-gentoo-r1-x86_64-Intel-R-_Core-TM-_i7-3632QM_CPU_@_2.20GHz-with-gentoo-2.2
KiB Mem:     8060068 total,   4582608 free
KiB Swap:          0 total,         0 free
Timestamp of tree: Thu, 18 Sep 2014 09:45:02 +0000
ld GNU ld (GNU Binutils) 2.23.2
app-shells/bash:          4.2_p45
dev-java/java-config:     2.2.0
dev-lang/python:          2.7.7, 3.2.5-r6, 3.3.5-r1, 3.4.1
dev-util/cmake:           3.0.2
dev-util/pkgconfig:       0.28-r1
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.12.4
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.11.6, 1.12.6, 1.13.4
sys-devel/binutils:       2.23.2
sys-devel/gcc:            4.6.3, 4.7.3-r1, 4.8.3
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4.2-r1
sys-devel/make:           3.82-r4
sys-kernel/linux-headers: 3.13 (virtual/os-headers)
sys-libs/glibc:           2.19-r1
Repositories: gentoo sunrise x-portage kde qt
Installed sets: @kde-frameworks
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -O2 -pipe -frecord-gcc-switches"
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/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5.5/ext-active/ /etc/php/cgi-php5.5/ext-active/ /etc/php/cli-php5.5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-march=native -O2 -pipe -frecord-gcc-switches"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-march=native -O2 -pipe -frecord-gcc-switches"
FEATURES="assume-digests binpkg-logs cgroup config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch preserve-libs protect-owned sandbox sfperms sign split-elog split-log splitdebug strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-march=native -O2 -pipe -frecord-gcc-switches"
GENTOO_MIRRORS="ftp://mirror.internode.on.net/pub/gentoo/"
LANG="en_US.utf8"
LDFLAGS="-Wl,--hash-style=gnu -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"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/lib/layman/sunrise /usr/local/portage /home/michael/dev/gentoo/kde /home/michael/dev/gentoo/qt"
SYNC="rsync://rsync.au.gentoo.org/gentoo-portage"
USE="X acl acpi alsa amd64 berkdb bindist bzip2 cairo cdda cli cracklib crypt cxx dbus device-mapper dri dvd fam gdbm gudev hardened hwdb iconv icu inotify ipv6 jpeg justify kde lastfm libnotify mmx modules multilib ncurses nls nptl ofa offensive ogg opengl openmp pam pax_kernel pcre phonon png qt3support readline semantic-desktop session spell sse sse2 ssl symlink tcpd theora unicode urandom vorbis xtpax zlib" 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" 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" GRUB_PLATFORMS="efi-64" INPUT_DEVICES="keyboard synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="en" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3 python3_4" RUBY_TARGETS="ruby19 ruby20" USERLAND="GNU" VIDEO_CARDS="intel" 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, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Comment 1 Michael Palimaka (kensington) gentoo-dev 2014-10-20 12:27:22 UTC
I'll force a Qt 4 build in a week or so if there's no objections.
Comment 2 Justin Bronder (RETIRED) gentoo-dev 2014-10-20 14:37:01 UTC
(In reply to Michael Palimaka (kensington) from comment #1)
> I'll force a Qt 4 build in a week or so if there's no objections.

No objections from me if I don't get to it first.  I'd appreciate the help.
Comment 3 PaweĊ‚ Stankowski 2014-10-21 21:38:27 UTC
There is option to force qt4 in Apps/CmakeLists.txt:

    # try to use QT5 if possible otherwise stick to QT4
    set (FORCE_QT4 OFF CACHE BOOL "Use Qt4 even if Qt5 was found")

It should be enough to pass '-DFORCE_QT4=on' option for 'qt4' use flag and create new use flag 'qt5' for which this variable won't be set. Of course these 2 use flags should be mutually exlusive.

[1] http://openmesh.org/svnrepo/OpenMesh/tags/OpenMesh-3.2/src/OpenMesh/Apps/CMakeLists.txt
Comment 4 Alpha Bravo 2014-10-23 13:03:13 UTC
--- openmesh-3.2.ebuild 2014-08-26 01:14:55.000000000 +0200
+++ -      2014-10-23 14:48:39.845042498 +0200
@@ -16,11 +16,16 @@
 LICENSE="LGPL-3-with-linking-exception"
 SLOT="0"
 KEYWORDS="~amd64 ~ia64 ~x86"
-IUSE="qt4 static-libs"
+IUSE="qt4 qt5 static-libs"
+
+REQUIRED_USE="?? ( qt4 qt5 )"
 
 RDEPEND="qt4? ( dev-qt/qtgui:4
-       dev-qt/qtopengl:4
-       media-libs/freeglut )"
+               dev-qt/qtopengl:4
+               media-libs/freeglut )
+       qt5? ( dev-qt/qtgui:5
+               dev-qt/qtopengl:5
+               media-libs/freeglut )"
 DEPEND="${RDEPEND}"
 
 src_prepare() {
@@ -42,7 +47,15 @@
 }
 
 src_configure() {
-       mycmakeargs="$(cmake-utils_use_build "qt4" "APPS")"
+       local mycmakeargs=(
+               "$(cmake-utils_use_build "qt4" "APPS")"
+               "$(cmake-utils_use_build "qt5" "APPS")"
+       )
+
+       if use qt4 ; then
+               mycmakeargs+=( -DFORCE_QT4=on )
+       fi
+
        cmake-utils_src_configure
 }
Comment 5 Alpha Bravo 2014-10-23 13:15:03 UTC
--- openmesh-3.2.ebuild 2014-08-26 01:14:55.000000000 +0200
+++ -      2014-10-23 15:11:59.199595052 +0200
@@ -16,11 +16,16 @@
 LICENSE="LGPL-3-with-linking-exception"
 SLOT="0"
 KEYWORDS="~amd64 ~ia64 ~x86"
-IUSE="qt4 static-libs"
+IUSE="qt4 qt5 static-libs"
+
+REQUIRED_USE="?? ( qt4 qt5 )"
 
 RDEPEND="qt4? ( dev-qt/qtgui:4
-       dev-qt/qtopengl:4
-       media-libs/freeglut )"
+               dev-qt/qtopengl:4
+               media-libs/freeglut )
+       qt5? ( dev-qt/qtgui:5
+               dev-qt/qtopengl:5
+               media-libs/freeglut )"
 DEPEND="${RDEPEND}"
 
 src_prepare() {
@@ -42,7 +47,12 @@
 }
 
 src_configure() {
-       mycmakeargs="$(cmake-utils_use_build "qt4" "APPS")"
+       local mycmakeargs=(
+               "$(cmake-utils_use qt4 FORCE_QT4)"
+               "$(cmake-utils_use_build qt4 APPS)"
+               "$(cmake-utils_use_build qt5 APPS)"
+       )
+
        cmake-utils_src_configure
 }
Comment 6 Alpha Bravo 2014-10-23 18:52:46 UTC
--- openmesh-3.2.ebuild 2014-08-26 01:14:55.000000000 +0200
+++ -      2014-10-23 20:15:27.874370231 +0200
@@ -16,11 +16,16 @@
 LICENSE="LGPL-3-with-linking-exception"
 SLOT="0"
 KEYWORDS="~amd64 ~ia64 ~x86"
-IUSE="qt4 static-libs"
+IUSE="qt4 qt5 static-libs"
+
+REQUIRED_USE="?? ( qt4 qt5 )"
 
 RDEPEND="qt4? ( dev-qt/qtgui:4
-       dev-qt/qtopengl:4
-       media-libs/freeglut )"
+               dev-qt/qtopengl:4
+               media-libs/freeglut )
+       qt5? ( dev-qt/qtgui:5
+               dev-qt/qtopengl:5
+               media-libs/freeglut )"
 DEPEND="${RDEPEND}"
 
 src_prepare() {
@@ -42,7 +47,16 @@
 }
 
 src_configure() {
-       mycmakeargs="$(cmake-utils_use_build "qt4" "APPS")"
+
+       local mycmakeargs i
+       for i in qt4 qt5 ; do
+               if use ${i} ; then
+                       mycmakeargs+=( -DBUILD_APPS=ON )
+               fi
+       done
+
+       mycmakeargs+=( $(cmake-utils_use qt4 FORCE_QT4) )
+
        cmake-utils_src_configure
 }
Comment 7 Justin Bronder (RETIRED) gentoo-dev 2014-10-23 20:36:27 UTC
Would someone with both qt4 and qt5 installed mind verifying that the change I just pushed actually works?

+  23 Oct 2014; Justin Bronder <jsbronder@gentoo.org> openmesh-3.2.ebuild:
+  Prefer qt5 but force qt4 if only the qt4 USE flag is set. #523124
Comment 8 Alpha Bravo 2014-10-23 23:20:56 UTC
Tested with both Qt4 and Qt5 installed:
USE="qt4 qt5" no -DFORCE_QT4 passed, build succeeds
USE="qt4 -qt5" build fails, -DFORCE_QT4 passed instead of -DFORCE_QT4=ON

With only Qt5 installed:
USE="-qt4 qt5" and USE="-qt4 -qt5" builds succeed (-DFORCE_QT4=OFF passed).
Comment 9 Alpha Bravo 2014-10-24 10:48:28 UTC
--- openmesh-3.2.ebuild 2014-10-23 23:01:12.000000000 +0200
+++ -      2014-10-24 12:46:38.695905095 +0200
@@ -53,7 +53,7 @@
        fi
 
        if use qt4 && ! use qt5; then
-               mycmakeargs="${mycmakeargs} -DFORCE_QT4"
+               mycmakeargs="${mycmakeargs} -DFORCE_QT4=ON"
        fi
 
        cmake-utils_src_configure
Comment 10 Alpha Bravo 2014-10-24 11:19:24 UTC
(In reply to Alpha Bravo from comment #8)
> With only Qt5 installed:
> USE="-qt4 qt5" and USE="-qt4 -qt5" builds succeed (-DFORCE_QT4=OFF passed).

That's not correct, should be:
USE="-qt4 qt5" and USE="-qt4 -qt5" builds succeed (no -DFORCE_QT4 passed).


Furthermore BUILD_APPS defaults to true (see CMakeLists.txt):

    if ( NOT DEFINED BUILD_APPS )
      set( BUILD_APPS true CACHE BOOL "Enable or disable building of apps" )

So we don't have the behaviour of the old ebuild anymore, which afaict passed -DBUILD_APPS=OFF when built with USE="-qt4 -qt5"
Comment 11 Alpha Bravo 2014-10-24 11:25:53 UTC
--- openmesh-3.2.ebuild 2014-10-23 23:01:12.000000000 +0200
+++ -      2014-10-24 13:21:57.167216139 +0200
@@ -48,12 +48,12 @@
 src_configure() {
        mycmakeargs=""
 
-       if use qt4 || use qt5; then
-               mycmakeargs="${mycmakeargs} -DBUILD_APPS=ON"
+       if ! use qt4 && ! use qt5; then
+               mycmakeargs="${mycmakeargs} -DBUILD_APPS=OFF"
        fi
 
        if use qt4 && ! use qt5; then
-               mycmakeargs="${mycmakeargs} -DFORCE_QT4"
+               mycmakeargs="${mycmakeargs} -DFORCE_QT4=ON"
        fi
 
        cmake-utils_src_configure
Comment 12 Alpha Bravo 2014-10-24 11:43:08 UTC
With the last patch applied building with USE="qt4 -qt5" succeeds, and apparently links to Qt4, afaict.
Comment 13 Justin Bronder (RETIRED) gentoo-dev 2014-10-24 15:14:35 UTC
+  24 Oct 2014; Justin Bronder <jsbronder@gentoo.org> openmesh-3.2.ebuild:
+  Proper qt4 and app handling, #523124. Thanks to Alpha Bravo
Comment 14 Michael Palimaka (kensington) gentoo-dev 2014-10-25 14:23:14 UTC
(In reply to Alpha Bravo from comment #11)
> --- openmesh-3.2.ebuild 2014-10-23 23:01:12.000000000 +0200
> +++ -      2014-10-24 13:21:57.167216139 +0200
> @@ -48,12 +48,12 @@
>  src_configure() {
>         mycmakeargs=""
>  
> -       if use qt4 || use qt5; then
> -               mycmakeargs="${mycmakeargs} -DBUILD_APPS=ON"

Please note while this still works, it's deprecated and array style is preferred, for example:

local mycmakeargs=
mycmakeargs+=( -DBUILD_APPS=ON )