/[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.45 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.45 2009/10/02 15:04:23 ayoy 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://qt.nokia.com/" 66HOMEPAGE="http://qt.nokia.com/"
61SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.bz2"
62if version_is_at_least 4.5.3 ${PV} ; then 67if version_is_at_least 4.5.3 ${PV} ; then
63 SRC_URI="${SRC_URI/bz2/gz}" 68 SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.gz"
69else
70 SRC_URI="http://get.qt.nokia.com/qt/source/${MY_P}.tar.bz2"
64fi 71fi
65 72
66case "${PV}" in 73case "${PV}" in
67 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" ;;
68 *) ;; 75 *) ;;
94 if ! version_is_at_least 4.1 $(gcc-version) ; then 101 if ! version_is_at_least 4.1 $(gcc-version) ; then
95 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!"
96 echo 103 echo
97 ebeep 3 104 ebeep 3
98 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
99} 123}
100 124
101# @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES 125# @ECLASS-VARIABLE: QT4_TARGET_DIRECTORIES
102# @DESCRIPTION: 126# @DESCRIPTION:
103# Arguments for build_target_directories. Takes the directories, in which the 127# Arguments for build_target_directories. Takes the directories, in which the
169 skip_qmake_build_patch 193 skip_qmake_build_patch
170 skip_project_generation_patch 194 skip_project_generation_patch
171 symlink_binaries_to_buildtree 195 symlink_binaries_to_buildtree
172 fi 196 fi
173 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"
203
174 # Bug 178652 204 # Bug 178652
175 if [[ "$(gcc-major-version)" == "3" ]] && use amd64; then 205 if [[ "$(gcc-major-version)" == "3" ]] && use amd64; then
176 ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS" 206 ewarn "Appending -fno-gcse to CFLAGS/CXXFLAGS"
177 append-flags -fno-gcse 207 append-flags -fno-gcse
178 fi 208 fi
182 ewarn "Appending -fno-stack-protector to CXXFLAGS" 212 ewarn "Appending -fno-stack-protector to CXXFLAGS"
183 append-cxxflags -fno-stack-protector 213 append-cxxflags -fno-stack-protector
184 # Bug 253127 214 # Bug 253127
185 sed -e "/^QMAKE_CFLAGS\t/ s:$: -fno-stack-protector-all:" \ 215 sed -e "/^QMAKE_CFLAGS\t/ s:$: -fno-stack-protector-all:" \
186 -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"
217 fi
218
219 # Bug 261632
220 if use ppc64; then
221 ewarn "Appending -mminimal-toc to CFLAGS/CXXFLAGS"
222 append-flags -mminimal-toc
187 fi 223 fi
188 224
189 # Bug 172219 225 # Bug 172219
190 sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ 226 sed -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \
191 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ 227 -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \
294 alpha|arm|ia64|mips|s390|sparc) myconf="${myconf} -arch $(tc-arch)" ;; 330 alpha|arm|ia64|mips|s390|sparc) myconf="${myconf} -arch $(tc-arch)" ;;
295 hppa|sh) myconf="${myconf} -arch generic" ;; 331 hppa|sh) myconf="${myconf} -arch generic" ;;
296 *) 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." ;;
297 esac 333 esac
298 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
299 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
300 -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR} 349 -prefix ${QTPREFIXDIR} -bindir ${QTBINDIR} -libdir ${QTLIBDIR}
301 -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR} 350 -datadir ${QTDATADIR} -docdir ${QTDOCDIR} -headerdir ${QTHEADERDIR}
302 -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR} 351 -plugindir ${QTPLUGINDIR} -sysconfdir ${QTSYSCONFDIR}
303 -translationdir ${QTTRANSDIR} -examplesdir ${QTEXAMPLESDIR} 352 -translationdir ${QTTRANSDIR} -examplesdir ${QTEXAMPLESDIR}
304 -demosdir ${QTDEMOSDIR} -silent -fast 353 -demosdir ${QTDEMOSDIR} -silent -fast
305 $([[ ${PN} == qt-xmlpatterns ]] || echo -no-exceptions) 354 ${exceptions}
306 -reduce-relocations -nomake examples -nomake demos" 355 -reduce-relocations -nomake examples -nomake demos"
307 356
308 # Make eclass 4.5.{1,2} ready 357 # Make eclass >= 4.5.x ready
309 case "${MY_PV}" in 358 case "${MY_PV}" in
310 4.5.1 | 4.5.2) 359 4.5.* | 4.6.* )
311 myconf="${myconf} -opensource" 360 myconf="${myconf} -opensource"
312 ;; 361 ;;
313 esac 362 esac
314 363
315 echo "${myconf}" 364 echo "${myconf}"
323 local dirs="$@" 372 local dirs="$@"
324 for x in ${dirs}; do 373 for x in ${dirs}; do
325 cd "${S}"/${x} 374 cd "${S}"/${x}
326 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
327 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed" 376 "${S}"/bin/qmake "LIBS+=-L${QTLIBDIR}" "CONFIG+=nostrip" || die "qmake failed"
328 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"
329 done 380 done
330} 381}
331 382
332# @FUNCTION: install_directories 383# @FUNCTION: install_directories
333# @USAGE: < directories > 384# @USAGE: < directories >
445# @FUNCTION: qt4-build_pkg_postinst 496# @FUNCTION: qt4-build_pkg_postinst
446# @DESCRIPTION: Generate configuration, plus throws a message about possible 497# @DESCRIPTION: Generate configuration, plus throws a message about possible
447# breakages and proposed solutions. 498# breakages and proposed solutions.
448qt4-build_pkg_postinst() { 499qt4-build_pkg_postinst() {
449 generate_qconfigs 500 generate_qconfigs
501
502 if [[ "${PN}" == "qt-core" ]]; then
450 echo 503 echo
451 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"
452 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"
453 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"
454 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"
455 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)."
456 ewarn 509 ewarn
457 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"
458 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,"
459 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"
460 ewarn "configuration." 513 ewarn "configuration."
461 ewarn 514 ewarn
462 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"
463 echo 516 echo
517 fi
464} 518}
465 519
466# @FUNCTION: skip_qmake_build_patch 520# @FUNCTION: skip_qmake_build_patch
467# @DESCRIPTION: 521# @DESCRIPTION:
468# 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.45  
changed lines
  Added in v.1.54

  ViewVC Help
Powered by ViewVC 1.1.20