/[gentoo-x86]/eclass/qt4-build.eclass
Gentoo

Diff of /eclass/qt4-build.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.130 Revision 1.134
1# Copyright 1999-2012 Gentoo Foundation 1# Copyright 1999-2012 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.130 2012/05/22 13:41:59 pesa Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.134 2012/07/10 21:43:19 pesa Exp $
4 4
5# @ECLASS: qt4-build.eclass 5# @ECLASS: qt4-build.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# Qt herd <qt@gentoo.org> 7# Qt herd <qt@gentoo.org>
8# @BLURB: Eclass for Qt4 split ebuilds. 8# @BLURB: Eclass for Qt4 split ebuilds.
12case ${EAPI} in 12case ${EAPI} in
13 2|3|4) : ;; 13 2|3|4) : ;;
14 *) die "qt4-build.eclass requires EAPI 2, 3 or 4." ;; 14 *) die "qt4-build.eclass requires EAPI 2, 3 or 4." ;;
15esac 15esac
16 16
17inherit base eutils flag-o-matic multilib toolchain-funcs versionator 17inherit eutils flag-o-matic multilib toolchain-funcs versionator
18 18
19if [[ ${PV} == *9999* ]]; then 19if [[ ${PV} == *9999* ]]; then
20 QT4_BUILD_TYPE="live" 20 QT4_BUILD_TYPE="live"
21 inherit git-2 21 inherit git-2
22else 22else
31 31
32case ${QT4_BUILD_TYPE} in 32case ${QT4_BUILD_TYPE} in
33 live) 33 live)
34 EGIT_REPO_URI="git://gitorious.org/qt/qt.git 34 EGIT_REPO_URI="git://gitorious.org/qt/qt.git
35 https://git.gitorious.org/qt/qt.git" 35 https://git.gitorious.org/qt/qt.git"
36 EGIT_BRANCH="${PV%.9999}" 36 EGIT_BRANCH=${PV%.9999}
37 ;; 37 ;;
38 release) 38 release)
39 if version_is_at_least 4.8.1; then 39 if version_is_at_least 4.8.1; then
40 SRC_URI="http://releases.qt-project.org/qt4/source/${MY_P}.tar.gz" 40 SRC_URI="http://releases.qt-project.org/qt4/source/${MY_P}.tar.gz"
41 else 41 else
43 fi 43 fi
44 ;; 44 ;;
45esac 45esac
46 46
47IUSE="aqua debug pch" 47IUSE="aqua debug pch"
48if [[ ${CATEGORY}/${PN} != x11-libs/qt-xmlpatterns ]]; then 48[[ ${CATEGORY}/${PN} != x11-libs/qt-xmlpatterns ]] && IUSE+=" +exceptions"
49 IUSE+=" +exceptions"
50fi
51if version_is_at_least 4.8; then 49if version_is_at_least 4.8; then
52 IUSE+=" c++0x qpa" 50 [[ ${CATEGORY}/${PN} != x11-libs/qt-webkit ]] && IUSE+=" c++0x"
51 version_is_at_least 4.8.3 || IUSE+=" qpa"
53fi 52fi
54 53
55DEPEND="virtual/pkgconfig" 54DEPEND="virtual/pkgconfig"
56if [[ ${QT4_BUILD_TYPE} == live ]]; then 55if [[ ${QT4_BUILD_TYPE} == live ]]; then
57 DEPEND+=" dev-lang/perl" 56 DEPEND+=" dev-lang/perl"
58fi 57fi
59 58
60RDEPEND=" 59RDEPEND="
61 !<x11-libs/qt-assistant-${PV} 60 !<x11-libs/qt-assistant-${PV}:4
62 !>x11-libs/qt-assistant-${PV}-r9999 61 !>x11-libs/qt-assistant-${PV}-r9999:4
63 !<x11-libs/qt-bearer-${PV} 62 !<x11-libs/qt-bearer-${PV}:4
64 !>x11-libs/qt-bearer-${PV}-r9999 63 !>x11-libs/qt-bearer-${PV}-r9999:4
65 !<x11-libs/qt-core-${PV} 64 !<x11-libs/qt-core-${PV}:4
66 !>x11-libs/qt-core-${PV}-r9999 65 !>x11-libs/qt-core-${PV}-r9999:4
67 !<x11-libs/qt-dbus-${PV} 66 !<x11-libs/qt-dbus-${PV}:4
68 !>x11-libs/qt-dbus-${PV}-r9999 67 !>x11-libs/qt-dbus-${PV}-r9999:4
69 !<x11-libs/qt-declarative-${PV} 68 !<x11-libs/qt-declarative-${PV}:4
70 !>x11-libs/qt-declarative-${PV}-r9999 69 !>x11-libs/qt-declarative-${PV}-r9999:4
71 !<x11-libs/qt-demo-${PV} 70 !<x11-libs/qt-demo-${PV}:4
72 !>x11-libs/qt-demo-${PV}-r9999 71 !>x11-libs/qt-demo-${PV}-r9999:4
73 !<x11-libs/qt-gui-${PV} 72 !<x11-libs/qt-gui-${PV}:4
74 !>x11-libs/qt-gui-${PV}-r9999 73 !>x11-libs/qt-gui-${PV}-r9999:4
75 !<x11-libs/qt-multimedia-${PV} 74 !<x11-libs/qt-multimedia-${PV}:4
76 !>x11-libs/qt-multimedia-${PV}-r9999 75 !>x11-libs/qt-multimedia-${PV}-r9999:4
77 !<x11-libs/qt-opengl-${PV} 76 !<x11-libs/qt-opengl-${PV}:4
78 !>x11-libs/qt-opengl-${PV}-r9999 77 !>x11-libs/qt-opengl-${PV}-r9999:4
79 !<x11-libs/qt-openvg-${PV} 78 !<x11-libs/qt-openvg-${PV}:4
80 !>x11-libs/qt-openvg-${PV}-r9999 79 !>x11-libs/qt-openvg-${PV}-r9999:4
81 !<x11-libs/qt-phonon-${PV} 80 !<x11-libs/qt-phonon-${PV}:4
82 !>x11-libs/qt-phonon-${PV}-r9999 81 !>x11-libs/qt-phonon-${PV}-r9999:4
83 !<x11-libs/qt-qt3support-${PV} 82 !<x11-libs/qt-qt3support-${PV}:4
84 !>x11-libs/qt-qt3support-${PV}-r9999 83 !>x11-libs/qt-qt3support-${PV}-r9999:4
85 !<x11-libs/qt-script-${PV} 84 !<x11-libs/qt-script-${PV}:4
86 !>x11-libs/qt-script-${PV}-r9999 85 !>x11-libs/qt-script-${PV}-r9999:4
87 !<x11-libs/qt-sql-${PV} 86 !<x11-libs/qt-sql-${PV}:4
88 !>x11-libs/qt-sql-${PV}-r9999 87 !>x11-libs/qt-sql-${PV}-r9999:4
89 !<x11-libs/qt-svg-${PV} 88 !<x11-libs/qt-svg-${PV}:4
90 !>x11-libs/qt-svg-${PV}-r9999 89 !>x11-libs/qt-svg-${PV}-r9999:4
91 !<x11-libs/qt-test-${PV} 90 !<x11-libs/qt-test-${PV}:4
92 !>x11-libs/qt-test-${PV}-r9999 91 !>x11-libs/qt-test-${PV}-r9999:4
93 !<x11-libs/qt-webkit-${PV} 92 !<x11-libs/qt-webkit-${PV}:4
94 !>x11-libs/qt-webkit-${PV}-r9999 93 !>x11-libs/qt-webkit-${PV}-r9999:4
95 !<x11-libs/qt-xmlpatterns-${PV} 94 !<x11-libs/qt-xmlpatterns-${PV}:4
96 !>x11-libs/qt-xmlpatterns-${PV}-r9999 95 !>x11-libs/qt-xmlpatterns-${PV}-r9999:4
97" 96"
98 97
99S=${WORKDIR}/${MY_P} 98S=${WORKDIR}/${MY_P}
100 99
101# @FUNCTION: qt4-build_pkg_setup 100# @FUNCTION: qt4-build_pkg_setup
102# @DESCRIPTION: 101# @DESCRIPTION:
103# Sets up PATH and LD_LIBRARY_PATH. 102# Sets up PATH and LD_LIBRARY_PATH.
104qt4-build_pkg_setup() { 103qt4-build_pkg_setup() {
105 [[ ${EAPI} == 2 ]] && use !prefix && EPREFIX= 104 [[ ${EAPI} == 2 ]] && use !prefix && EPREFIX=
106 105
107 # Protect users by not allowing downgrades between releases 106 # Protect users by not allowing downgrades between releases.
108 # Downgrading revisions within the same release should be allowed 107 # Downgrading revisions within the same release should be allowed.
109 if has_version '>'${CATEGORY}/${P}-r9999; then 108 if has_version ">${CATEGORY}/${P}-r9999:4"; then
110 if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then 109 if [[ -z ${I_KNOW_WHAT_I_AM_DOING} ]]; then
111 eerror
112 eerror "Sanity check to keep you from breaking your system:" 110 eerror " *** Sanity check to keep you from breaking your system ***"
113 eerror " Downgrading Qt is completely unsupported and will break your system!" 111 eerror "Downgrading Qt is completely unsupported and will break your system!"
114 eerror
115 die "aborting to save your system" 112 die "aborting to save your system"
116 else 113 else
117 ewarn "Downgrading Qt is completely unsupported and will break your system!" 114 ewarn "Downgrading Qt is completely unsupported and will break your system!"
118 fi 115 fi
119 fi
120
121 if [[ ${PN} == qt-webkit ]]; then
122 eshopts_push -s extglob
123 if is-flagq '-g?(gdb)?([1-9])'; then
124 echo
125 ewarn "You have enabled debug info (probably have -g or -ggdb in your CFLAGS/CXXFLAGS)."
126 ewarn "You may experience really long compilation times and/or increased memory usage."
127 ewarn "If compilation fails, please try removing -g/-ggdb before reporting a bug."
128 ewarn "For more info check out bug #307861"
129 echo
130 fi
131 eshopts_pop
132 fi 116 fi
133 117
134 PATH="${S}/bin${PATH:+:}${PATH}" 118 PATH="${S}/bin${PATH:+:}${PATH}"
135 if [[ ${CHOST} != *-darwin* ]]; then 119 if [[ ${CHOST} != *-darwin* ]]; then
136 LD_LIBRARY_PATH="${S}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}" 120 LD_LIBRARY_PATH="${S}/lib${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}"
141 # avoid extract failure. 125 # avoid extract failure.
142 [[ ${CHOST} == *-apple-darwin* ]] && \ 126 [[ ${CHOST} == *-apple-darwin* ]] && \
143 QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm 127 QT4_EXTRACT_DIRECTORIES="src/gui/kernel/qapplication_mac.mm
144 ${QT4_EXTRACT_DIRECTORIES}" 128 ${QT4_EXTRACT_DIRECTORIES}"
145 fi 129 fi
146
147 if ! version_is_at_least 4.1 $(gcc-version); then
148 ewarn "Using a GCC version lower than 4.1 is not supported."
149 fi
150} 130}
131
132# @ECLASS-VARIABLE: QT4_EXTRACT_DIRECTORIES
133# @DEFAULT_UNSET
134# @DESCRIPTION:
135# Space-separated list including the directories that will be extracted from
136# Qt tarball.
151 137
152# @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES 138# @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES
139# @DEFAULT_UNSET
153# @DESCRIPTION: 140# @DESCRIPTION:
154# Arguments for build_target_directories. Takes the directories in which the 141# Arguments for build_target_directories. Takes the directories in which the
155# code should be compiled. This is a space-separated list. 142# code should be compiled. This is a space-separated list.
156
157# @ECLASS-VARIABLE: QT4_EXTRACT_DIRECTORIES
158# @DESCRIPTION:
159# Space-separated list including the directories that will be extracted from
160# Qt tarball.
161 143
162# @FUNCTION: qt4-build_src_unpack 144# @FUNCTION: qt4-build_src_unpack
163# @DESCRIPTION: 145# @DESCRIPTION:
164# Unpacks the sources. 146# Unpacks the sources.
165qt4-build_src_unpack() { 147qt4-build_src_unpack() {
166 setqtenv 148 setqtenv
149
150 if ! version_is_at_least 4.1 $(gcc-version); then
151 ewarn "Using a GCC version lower than 4.1 is not supported."
152 fi
153
154 if [[ ${PN} == qt-webkit ]]; then
155 eshopts_push -s extglob
156 if is-flagq '-g?(gdb)?([1-9])'; then
157 echo
158 ewarn "You have enabled debug info (probably have -g or -ggdb in your CFLAGS/CXXFLAGS)."
159 ewarn "You may experience really long compilation times and/or increased memory usage."
160 ewarn "If compilation fails, please try removing -g/-ggdb before reporting a bug."
161 ewarn "For more info check out https://bugs.gentoo.org/307861"
162 echo
163 fi
164 eshopts_pop
165 fi
167 166
168 case ${QT4_BUILD_TYPE} in 167 case ${QT4_BUILD_TYPE} in
169 live) 168 live)
170 git-2_src_unpack 169 git-2_src_unpack
171 ;; 170 ;;
208 if [[ ${QT4_BUILD_TYPE} == live ]]; then 207 if [[ ${QT4_BUILD_TYPE} == live ]]; then
209 QTDIR="." ./bin/syncqt || die "syncqt failed" 208 QTDIR="." ./bin/syncqt || die "syncqt failed"
210 fi 209 fi
211 210
212 if version_is_at_least 4.7; then 211 if version_is_at_least 4.7; then
213 # fix libX11 dependency on non X packages 212 # avoid X11 dependency in non-gui packages
214 local nolibx11_pkgs="qt-core qt-dbus qt-script qt-sql qt-test qt-xmlpatterns" 213 local nolibx11_pkgs="qt-core qt-dbus qt-script qt-sql qt-test qt-xmlpatterns"
215 has ${PN} ${nolibx11_pkgs} && qt_nolibx11 214 has ${PN} ${nolibx11_pkgs} && qt_nolibx11
216
217 qt_assistant_cleanup
218 fi 215 fi
219 216
220 if use aqua; then 217 if use aqua; then
221 # provide a proper macx-g++-64 218 # provide a proper macx-g++-64
222 use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir) 219 use x64-macos && ln -s macx-g++ mkspecs/$(qt_mkspecs_dir)
243 ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" 240 ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS"
244 append-flags -fno-gcse 241 append-flags -fno-gcse
245 fi 242 fi
246 243
247 if use_if_iuse c++0x; then 244 if use_if_iuse c++0x; then
248 echo
249 ewarn "You are about to build Qt4 using the C++11 standard. Even though"
250 ewarn "this is an official standard, some of the reverse dependencies"
251 ewarn "may fail to compile or link againt the Qt4 libraries. Before"
252 ewarn "reporting a bug, make sure your bug is reproducible with c++0x"
253 ewarn "disabled."
254 echo
255 append-flags -std=c++0x 245 append-cxxflags -std=c++0x
256 fi 246 fi
257 247
258 # Unsupported old gcc versions - hardened needs this :( 248 # Unsupported old gcc versions - hardened needs this :(
259 if [[ $(gcc-major-version) -lt 4 ]]; then 249 if [[ $(gcc-major-version) -lt 4 ]]; then
260 ewarn "Appending -fno-stack-protector to CXXFLAGS" 250 ewarn "Appending -fno-stack-protector to CXXFLAGS"
360 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die 350 sed -i -e '/PLATFORM=solaris-cc/s/cc/g++/' configure || die
361 # do not flirt with non-Prefix stuff, we're quite possessive 351 # do not flirt with non-Prefix stuff, we're quite possessive
362 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \ 352 sed -i -e '/^QMAKE_\(LIB\|INC\)DIR\(_X11\|_OPENGL\|\)\t/s/=.*$/=/' \
363 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die 353 mkspecs/$(qt_mkspecs_dir)/qmake.conf || die
364 354
365 base_src_prepare 355 # apply patches
356 [[ -n ${PATCHES[@]} ]] && epatch "${PATCHES[@]}"
357 epatch_user
366} 358}
367 359
368# @FUNCTION: qt4-build_src_configure 360# @FUNCTION: qt4-build_src_configure
369# @DESCRIPTION: 361# @DESCRIPTION:
370# Default configure phase 362# Default configure phase
415 conf+=" -no-separate-debug-info" 407 conf+=" -no-separate-debug-info"
416 408
417 # exceptions USE flag 409 # exceptions USE flag
418 conf+=" $(in_iuse exceptions && qt_use exceptions || echo -exceptions)" 410 conf+=" $(in_iuse exceptions && qt_use exceptions || echo -exceptions)"
419 411
420 # disable RPATH on Qt >= 4.8 (bug 380415) 412 # disable rpath on Qt >= 4.8 (bug 380415)
413 # but leave it enabled on prefix (bug 417169)
421 version_is_at_least 4.8 && conf+=" -no-rpath" 414 version_is_at_least 4.8 && use !prefix && conf+=" -no-rpath"
422 415
423 # precompiled headers don't work on hardened, where the flag is masked 416 # precompiled headers don't work on hardened, where the flag is masked
424 conf+=" $(qt_use pch)" 417 conf+=" $(qt_use pch)"
425 418
426 # -reduce-relocations 419 # -reduce-relocations
869 fi 862 fi
870 863
871 echo "${spec}" 864 echo "${spec}"
872} 865}
873 866
874# @FUNCTION: qt_assistant_cleanup
875# @INTERNAL
876# @DESCRIPTION:
877# Tries to clean up tools.pro for qt-assistant ebuilds.
878# Meant to be called in src_prepare().
879# Since Qt 4.7.4 this function is a no-op.
880qt_assistant_cleanup() {
881 # apply patching to qt-assistant ebuilds only
882 [[ ${PN} != qt-assistant ]] && return
883
884 # no longer needed for 4.7.4 and later
885 version_is_at_least 4.7.4 && return
886
887 # different versions (and branches...) may need different handling,
888 # add a case if you need special handling
889 case "${MY_PV_EXTRA}" in
890 *kde-qt*)
891 sed -e "/^[ \t]*porting/,/^[ \t]*win32.*activeqt$/d" \
892 -e "/mac/,/^embedded.*makeqpf$/d" \
893 -i tools/tools.pro || die "patching tools.pro failed"
894 ;;
895 *)
896 sed -e "/^[ \t]*porting/,/^[ \t]*win32.*activeqt$/d" \
897 -e "/mac/,/^embedded.*makeqpf$/d" \
898 -e "s/^\([ \t]*pixeltool\) /\1 qdoc3 /" \
899 -i tools/tools.pro || die "patching tools.pro failed"
900 ;;
901 esac
902}
903
904# @FUNCTION: qt_nolibx11 867# @FUNCTION: qt_nolibx11
905# @INTERNAL 868# @INTERNAL
906# @DESCRIPTION: 869# @DESCRIPTION:
907# Ignore X11 tests for packages that don't need X libraries installed. 870# Ignore X11 tests for packages that don't need X libraries installed.
908qt_nolibx11() { 871qt_nolibx11() {

Legend:
Removed from v.1.130  
changed lines
  Added in v.1.134

  ViewVC Help
Powered by ViewVC 1.1.20