/[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.42 Revision 1.54
1# Copyright 2007-2009 Gentoo Foundation 1# Copyright 2007-2009 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.42 2009/07/13 19:55:30 hwoarang Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/qt4-build.eclass,v 1.54 2009/12/06 09:34:36 hwoarang Exp $
4 4
5# @ECLASS: qt4-build.eclass 5# @ECLASS: qt4-build.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# Ben de Groot <yngwin@gentoo.org>, 7# Ben de Groot <yngwin@gentoo.org>,
8# Markos Chandras <hwoarang@gentoo.org>, 8# Markos Chandras <hwoarang@gentoo.org>,
9# Caleb Tennis <caleb@gentoo.org> 9# Caleb Tennis <caleb@gentoo.org>
10# Alex Alexander <wired@gentoo.org>
10# @BLURB: Eclass for Qt4 split ebuilds. 11# @BLURB: Eclass for Qt4 split ebuilds.
11# @DESCRIPTION: 12# @DESCRIPTION:
12# This eclass contains various functions that are used when building Qt4 13# This eclass contains various functions that are used when building Qt4
13 14
14inherit base eutils multilib toolchain-funcs flag-o-matic versionator 15inherit base eutils multilib toolchain-funcs flag-o-matic versionator
43 !>x11-libs/qt-webkit-${PV}-r9999 44 !>x11-libs/qt-webkit-${PV}-r9999
44 !<x11-libs/qt-xmlpatterns-${PV} 45 !<x11-libs/qt-xmlpatterns-${PV}
45 !>x11-libs/qt-xmlpatterns-${PV}-r9999 46 !>x11-libs/qt-xmlpatterns-${PV}-r9999
46" 47"
47case "${PV}" in 48case "${PV}" in
48 4.?.?_rc*) 49 4.?.?_rc* | 4.?.?_beta* )
49 SRCTYPE="${SRCTYPE:-opensource-src}" 50 SRCTYPE="${SRCTYPE:-opensource-src}"
50 MY_PV="${PV/_rc/-rc}" 51 MY_PV="${PV/_/-}"
51 ;; 52 ;;
52 *) 53 *)
53 SRCTYPE="${SRCTYPE:-opensource-src}" 54 SRCTYPE="${SRCTYPE:-opensource-src}"
54 MY_PV="${PV}" 55 MY_PV="${PV}"
55 ;; 56 ;;
56esac 57esac
58
59if version_is_at_least 4.5.99999999 ${PV} ; then
60 MY_P="qt-everywhere-${SRCTYPE}-${MY_PV}"
61else
57MY_P=qt-x11-${SRCTYPE}-${MY_PV} 62 MY_P="qt-x11-${SRCTYPE}-${MY_PV}"
63fi
58S=${WORKDIR}/${MY_P} 64S=${WORKDIR}/${MY_P}
59 65
60HOMEPAGE="http://www.qtsoftware.com/" 66HOMEPAGE="http://qt.nokia.com/"
67if version_is_at_least 4.5.3 ${PV} ; then
68 SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz"
69else
61SRC_URI="http://get.qtsoftware.com/qt/source/${MY_P}.tar.bz2" 70 SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.bz2"
71fi
62 72
63case "${PV}" in 73case "${PV}" in
64 4.4.?) SRC_URI="${SRC_URI} mirror://gentoo/${MY_P}-headers.tar.bz2" ;; 74 4.4.?) SRC_URI="${SRC_URI} mirror://gentoo/${MY_P}-headers.tar.bz2" ;;
65 *) ;; 75 *) ;;
66esac 76esac
91 if ! version_is_at_least 4.1 $(gcc-version) ; then 101 if ! version_is_at_least 4.1 $(gcc-version) ; then
92 ewarn "Using a GCC version lower than 4.1 is not supported!" 102 ewarn "Using a GCC version lower than 4.1 is not supported!"
93 echo 103 echo
94 ebeep 3 104 ebeep 3
95 fi 105 fi
106
107 if [[ "${P}" == "qt-core-4.6.0_rc1" ]]; then
108 ewarn
109 ewarn "Binary compatibility broke between 4.6.0_beta1 and 4.6.0_rc1."
110 ewarn "If you are upgrading from 4.6.0_beta1, you'll have to"
111 ewarn "re-emerge everything that depends on Qt."
112 ewarn "Use the following command:"
113 ewarn
114 ewarn " emerge -av1 \$(for i in \$(qlist -IC x11-libs/qt-);"
115 ewarn " do equery -q d \$i | grep -v 'x11-libs/qt-' |"
116 ewarn " sed \"s/^/=/\"; done)"
117 ewarn
118 ewarn "YOU'VE BEEN WARNED"
119 ewarn
120 ebeep 3
121 fi
122
96} 123}
97 124
98# @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES 125# @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES
99# @DESCRIPTION: 126# @DESCRIPTION:
100# Arguments for build_target_directories. Takes the directories, in which the 127# Arguments for build_target_directories. Takes the directories, in which the
108# @FUNCTION: qt4-build_src_unpack 135# @FUNCTION: qt4-build_src_unpack
109# @DESCRIPTION: 136# @DESCRIPTION:
110# Unpacks the sources 137# Unpacks the sources
111qt4-build_src_unpack() { 138qt4-build_src_unpack() {
112 setqtenv 139 setqtenv
113 local target targets licenses 140 local target targets licenses tar_pkg tar_args
114 if version_is_at_least 4.5 ${PV} ; then 141 if version_is_at_least 4.5 ${PV} ; then
115 licenses="LICENSE.GPL3 LICENSE.LGPL" 142 licenses="LICENSE.GPL3 LICENSE.LGPL"
116 else 143 else
117 licenses="LICENSE.GPL2 LICENSE.GPL3" 144 licenses="LICENSE.GPL2 LICENSE.GPL3"
118 fi 145 fi
120 src/{qbase,qt_targets,qt_install}.pri bin config.tests mkspecs qmake \ 147 src/{qbase,qt_targets,qt_install}.pri bin config.tests mkspecs qmake \
121 ${QT4_EXTRACT_DIRECTORIES}; do 148 ${QT4_EXTRACT_DIRECTORIES}; do
122 targets="${targets} ${MY_P}/${target}" 149 targets="${targets} ${MY_P}/${target}"
123 done 150 done
124 151
125 echo tar xjpf "${DISTDIR}"/${MY_P}.tar.bz2 ${targets} 152 tar_pkg=${MY_P}.tar.bz2
126 tar xjpf "${DISTDIR}"/${MY_P}.tar.bz2 ${targets} 153 tar_args="xjpf"
154 if version_is_at_least 4.5.3 ${PV} ; then
155 tar_pkg=${tar_pkg/bz2/gz}
156 tar_args="xzpf"
157 fi
158
159 echo tar ${tar_args} "${DISTDIR}"/${tar_pkg} ${targets}
160 tar ${tar_args} "${DISTDIR}"/${tar_pkg} ${targets}
127 161
128 case "${PV}" in 162 case "${PV}" in
129 4.4.?) 163 4.4.?)
130 echo tar xjpf "${DISTDIR}"/${MY_P}-headers.tar.bz2 164 echo tar xjpf "${DISTDIR}"/${MY_P}-headers.tar.bz2
131 tar xjpf "${DISTDIR}"/${MY_P}-headers.tar.bz2 165 tar xjpf "${DISTDIR}"/${MY_P}-headers.tar.bz2
158 if [[ ${PN} != qt-core ]]; then 192 if [[ ${PN} != qt-core ]]; then
159 skip_qmake_build_patch 193 skip_qmake_build_patch
160 skip_project_generation_patch 194 skip_project_generation_patch
161 symlink_binaries_to_buildtree 195 symlink_binaries_to_buildtree
162 fi 196 fi
197
198 # Bug 282984 && Bug 295530
199 sed -e "s:\(^SYSTEM_VARIABLES\):CC=$(tc-getCC)\nCXX=$(tc-getCXX)\n\1:" \
200 -i configure || die "sed qmake compilers failed"
201 sed -e "s:\(\$MAKE\):\1 CC=$(tc-getCC) CXX=$(tc-getCXX) LD=$(tc-getCXX):" \
202 -i config.tests/unix/compile.test || die "sed test compilers failed"
163 203
164 # Bug 178652 204 # Bug 178652
165 if [[ "$(gcc-major-version)" == "3" ]] && use amd64; then 205 if [[ "$(gcc-major-version)" == "3" ]] && use amd64; then
166 ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" 206 ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS"
167 append-flags -fno-gcse 207 append-flags -fno-gcse
174 # Bug 253127 214 # Bug 253127
175 sed -e "/^QMAKE_CFLAGS\t/ s:$: -fno-stack-protector-all:" \ 215 sed -e "/^QMAKE_CFLAGS\t/ s:$: -fno-stack-protector-all:" \
176 -i "${S}"/mkspecs/common/g++.conf || die "sed ${S}/mkspecs/common/g++.conf failed" 216 -i "${S}"/mkspecs/common/g++.conf || die "sed ${S}/mkspecs/common/g++.conf failed"
177 fi 217 fi
178 218
219 # Bug 261632
220 if use ppc64; then
221 ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS"
222 append-flags -mminimal-toc
223 fi
224
179 # Bug 172219 225 # Bug 172219
180 sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ 226 sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \
181 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ 227 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \
182 -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=${LDFLAGS}:" \ 228 -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=${LDFLAGS}:" \
183 -e "s:X11R6/::" \ 229 -e "s:X11R6/::" \
198 setqtenv 244 setqtenv
199 myconf="$(standard_configure_options) ${myconf}" 245 myconf="$(standard_configure_options) ${myconf}"
200 246
201 echo ./configure ${myconf} 247 echo ./configure ${myconf}
202 ./configure ${myconf} || die "./configure failed" 248 ./configure ${myconf} || die "./configure failed"
249 myconf=""
203} 250}
204 251
205# @FUNCTION: qt4-build_src_compile 252# @FUNCTION: qt4-build_src_compile
206# @DESCRIPTION: Actual compile phase 253# @DESCRIPTION: Actual compile phase
207qt4-build_src_compile() { 254qt4-build_src_compile() {
283 alpha|arm|ia64|mips|s390|sparc) myconf="${myconf} -arch $(tc-arch)" ;; 330 alpha|arm|ia64|mips|s390|sparc) myconf="${myconf} -arch $(tc-arch)" ;;
284 hppa|sh) myconf="${myconf} -arch generic" ;; 331 hppa|sh) myconf="${myconf} -arch generic" ;;
285 *) die "$(tc-arch) is unsupported by this eclass. Please file a bug." ;; 332 *) die "$(tc-arch) is unsupported by this eclass. Please file a bug." ;;
286 esac 333 esac
287 334
335 # 4.6: build qt-core with exceptions or qt-xmlpatterns won't build
336 local exceptions=
337 case "${PV}" in
338 4.6.*)
339 if [[ ${PN} != "qt-core" ]] && [[ ${PN} != "qt-xmlpatterns" ]]; then
340 exceptions="-no-exceptions"
341 fi
342 ;;
343 *)
344 [[ ${PN} == "qt-xmlpatterns" ]] || exceptions="-no-exceptions"
345 ;;
346 esac
347
288 myconf="${myconf} -platform $(qt_mkspecs_dir) -stl -verbose -largefile -confirm-license -no-rpath 348 myconf="${myconf} -platform $(qt_mkspecs_dir) -stl -verbose -largefile -confirm-license
289 -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} 349 -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR}
290 -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} 350 -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR}
291 -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR} 351 -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR}
292 -translationdir ${QTTRANSDIR} -examplesdir ${QTEXAMPLESDIR} 352 -translationdir ${QTTRANSDIR} -examplesdir ${QTEXAMPLESDIR}
293 -demosdir ${QTDEMOSDIR} -silent -fast 353 -demosdir ${QTDEMOSDIR} -silent -fast
294 $([[ ${PN} == qt-xmlpatterns ]] || echo -no-exceptions) 354 ${exceptions}
295 -reduce-relocations -nomake examples -nomake demos" 355 -reduce-relocations -nomake examples -nomake demos"
296 356
297 # Make eclass 4.5.{1,2} ready 357 # Make eclass >= 4.5.x ready
298 case "${MY_PV}" in 358 case "${MY_PV}" in
299 4.5.1 | 4.5.2) 359 4.5.* | 4.6.* )
300 myconf="${myconf} -opensource" 360 myconf="${myconf} -opensource"
301 ;; 361 ;;
302 esac 362 esac
303 363
304 echo "${myconf}" 364 echo "${myconf}"
312 local dirs="$@" 372 local dirs="$@"
313 for x in ${dirs}; do 373 for x in ${dirs}; do
314 cd "${S}"/${x} 374 cd "${S}"/${x}
315 sed -i -e "s:\$\$\[QT_INSTALL_LIBS\]:/usr/$(get_libdir)/qt4:g" $(find "${S}" -name '*.pr[io]') "${S}"/mkspecs/common/linux.conf || die 375 sed -i -e "s:\$\$\[QT_INSTALL_LIBS\]:/usr/$(get_libdir)/qt4:g" $(find "${S}" -name '*.pr[io]') "${S}"/mkspecs/common/linux.conf || die
316 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed" 376 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed"
317 emake || die "emake failed" 377 emake CC="@echo compiling \$< && $(tc-getCC)" \
378 CXX="@echo compiling \$< && $(tc-getCXX)" \
379 LINK="@echo linking \$@ && $(tc-getCXX)" || die "emake failed"
318 done 380 done
319} 381}
320 382
321# @FUNCTION: install_directories 383# @FUNCTION: install_directories
322# @USAGE: < directories > 384# @USAGE: < directories >
434# @FUNCTION: qt4-build_pkg_postinst 496# @FUNCTION: qt4-build_pkg_postinst
435# @DESCRIPTION: Generate configuration, plus throws a message about possible 497# @DESCRIPTION: Generate configuration, plus throws a message about possible
436# breakages and proposed solutions. 498# breakages and proposed solutions.
437qt4-build_pkg_postinst() { 499qt4-build_pkg_postinst() {
438 generate_qconfigs 500 generate_qconfigs
501
502 if [[ "${PN}" == "qt-core" ]]; then
439 echo 503 echo
440 ewarn "After a rebuild or upgrade of Qt, it can happen that Qt plugins (such as Qt" 504 ewarn "After a rebuild or upgrade of Qt, it can happen that Qt plugins (such as Qt"
441 ewarn "and KDE styles and widgets) can no longer be loaded. In this situation you" 505 ewarn "and KDE styles and widgets) can no longer be loaded. In this situation you"
442 ewarn "should recompile the packages providing these plugins. Also, make sure you" 506 ewarn "should recompile the packages providing these plugins. Also, make sure you"
443 ewarn "compile the Qt packages, and the packages that depend on it, with the same" 507 ewarn "compile the Qt packages, and the packages that depend on it, with the same"
444 ewarn "GCC version and the same USE flag settings (especially the debug flag)." 508 ewarn "GCC version and the same USE flag settings (especially the debug flag)."
445 ewarn 509 ewarn
446 ewarn "Packages that typically need to be recompiled are kdelibs from KDE4, any" 510 ewarn "Packages that typically need to be recompiled are kdelibs from KDE4, any"
447 ewarn "additional KDE4/Qt4 styles, qscintilla and PyQt4. Before filing a bug report," 511 ewarn "additional KDE4/Qt4 styles, qscintilla and PyQt4. Before filing a bug report,"
448 ewarn "make sure all your Qt4 packages are up-to-date and built with the same" 512 ewarn "make sure all your Qt4 packages are up-to-date and built with the same"
449 ewarn "configuration." 513 ewarn "configuration."
450 ewarn 514 ewarn
451 ewarn "For more information, see http://doc.trolltech.com/${PV%.*}/plugins-howto.html" 515 ewarn "For more information, see http://doc.trolltech.com/${PV%.*}/plugins-howto.html"
452 echo 516 echo
517 fi
453} 518}
454 519
455# @FUNCTION: skip_qmake_build_patch 520# @FUNCTION: skip_qmake_build_patch
456# @DESCRIPTION: 521# @DESCRIPTION:
457# Don't need to build qmake, as it's already installed from qt-core 522# Don't need to build qmake, as it's already installed from qt-core

Legend:
Removed from v.1.42  
changed lines
  Added in v.1.54

  ViewVC Help
Powered by ViewVC 1.1.20