/[gentoo-x86]/eclass/kde4-base.eclass
Gentoo

Diff of /eclass/kde4-base.eclass

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

Revision 1.93 Revision 1.97
1# Copyright 1999-2010 Gentoo Foundation 1# Copyright 1999-2010 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/kde4-base.eclass,v 1.93 2011/05/23 22:56:36 abcd Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/kde4-base.eclass,v 1.97 2011/06/07 20:11:04 abcd Exp $
4 4
5# @ECLASS: kde4-base.eclass 5# @ECLASS: kde4-base.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# kde@gentoo.org 7# kde@gentoo.org
8# @BLURB: This eclass provides functions for kde 4.X ebuilds 8# @BLURB: This eclass provides functions for kde 4.X ebuilds
39if [[ ${CMAKE_REQUIRED} = always ]]; then 39if [[ ${CMAKE_REQUIRED} = always ]]; then
40 buildsystem_eclass="cmake-utils" 40 buildsystem_eclass="cmake-utils"
41 export_fns="src_configure src_compile src_test src_install" 41 export_fns="src_configure src_compile src_test src_install"
42fi 42fi
43 43
44# Verify KDE_MINIMAL (display QA notice in pkg_setup, still we need to fix it here)
45if [[ -n ${KDE_MINIMAL} ]]; then
46 for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do
47 [[ ${KDE_MINIMAL} = ${slot} ]] && KDE_MINIMAL_VALID=1 && break
48 done
49 unset slot
50 [[ -z ${KDE_MINIMAL_VALID} ]] && unset KDE_MINIMAL
51else
52 KDE_MINIMAL_VALID=1
53fi
54
55# @ECLASS-VARIABLE: KDE_MINIMAL 44# @ECLASS-VARIABLE: KDE_MINIMAL
56# @DESCRIPTION: 45# @DESCRIPTION:
57# This variable is used when KDE_REQUIRED is set, to specify required KDE minimal 46# This variable is used when KDE_REQUIRED is set, to specify required KDE minimal
58# version for apps to work. Currently defaults to 4.4 47# version for apps to work. Currently defaults to 4.4
59# One may override this variable to raise version requirements. 48# One may override this variable to raise version requirements.
60# For possible values look at KDE_SLOTS and KDE_LIVE_SLOTS variables.
61# Note that it is fixed to ${SLOT} for kde-base packages. 49# Note that it is fixed to ${PV} for kde-base packages.
62KDE_MINIMAL="${KDE_MINIMAL:-4.4}" 50KDE_MINIMAL="${KDE_MINIMAL:-4.4}"
63 51
64# Set slot for KDEBASE known packages 52# Set slot for KDEBASE known packages
65case ${KDEBASE} in 53case ${KDEBASE} in
66 kde-base) 54 kde-base)
67 SLOT=$(_calculate_kde_slot) 55 SLOT=$(get_kde_version)
68 [[ -z ${SLOT} ]] && die "Unsupported ${PV}" 56 [[ -z ${SLOT} ]] && die "Unsupported PV ${PV}"
69 KDE_MINIMAL="${SLOT}" 57 KDE_MINIMAL="${PV}"
70 ;; 58 ;;
71 koffice) 59 koffice)
72 SLOT="2" 60 SLOT="2"
73 ;; 61 ;;
74 kdevelop) 62 kdevelop)
131# @DESCRIPTION: 119# @DESCRIPTION:
132# Is qt-multimedia required? Possible values are 'always', 'optional' and 'never'. 120# Is qt-multimedia required? Possible values are 'always', 'optional' and 'never'.
133# This variable must be set before inheriting any eclasses. Defaults to 'never'. 121# This variable must be set before inheriting any eclasses. Defaults to 'never'.
134MULTIMEDIA_REQUIRED="${MULTIMEDIA_REQUIRED:-never}" 122MULTIMEDIA_REQUIRED="${MULTIMEDIA_REQUIRED:-never}"
135 123
136# @ECLASS-VARIABLE: WEBKIT_REQUIRED
137# @DESCRIPTION:
138# Is qt-webkit requred? Possible values are 'always', 'optional' and 'never'.
139# This variable must be set before inheriting any eclasses. Defaults to 'never'.
140WEBKIT_REQUIRED="${WEBKIT_REQUIRED:-never}"
141
142# @ECLASS-VARIABLE: CPPUNIT_REQUIRED 124# @ECLASS-VARIABLE: CPPUNIT_REQUIRED
143# @DESCRIPTION: 125# @DESCRIPTION:
144# Is cppunit required for tests? Possible values are 'always', 'optional' and 'never'. 126# Is cppunit required for tests? Possible values are 'always', 'optional' and 'never'.
145# This variable must be set before inheriting any eclasses. Defaults to 'never'. 127# This variable must be set before inheriting any eclasses. Defaults to 'never'.
146CPPUNIT_REQUIRED="${CPPUNIT_REQUIRED:-never}" 128CPPUNIT_REQUIRED="${CPPUNIT_REQUIRED:-never}"
179 HOMEPAGE="http://www.kde.org/" 161 HOMEPAGE="http://www.kde.org/"
180 LICENSE="GPL-2" 162 LICENSE="GPL-2"
181 if [[ $BUILD_TYPE = live ]]; then 163 if [[ $BUILD_TYPE = live ]]; then
182 # Disable tests for live ebuilds 164 # Disable tests for live ebuilds
183 RESTRICT+=" test" 165 RESTRICT+=" test"
184 # Live ebuilds in kde-base default to kdeprefix by default 166 fi
185 IUSE+=" +kdeprefix" 167
186 else 168 # Only add the kdeprefix USE flag for older versions, to help
187 # All other ebuild types default to -kdeprefix as before 169 # non-portage package managers handle the upgrade
170 if [[ ${PV} < 4.6.4 ]]; then
188 IUSE+=" kdeprefix" 171 IUSE+=" kdeprefix"
189 fi 172 fi
173
190 # This code is to prevent portage from searching GENTOO_MIRRORS for 174 # This code is to prevent portage from searching GENTOO_MIRRORS for
191 # packages that will never be mirrored. (As they only will ever be in 175 # packages that will never be mirrored. (As they only will ever be in
192 # the overlay). 176 # the overlay).
193 case ${PV} in 177 case ${PV} in
194 *9999* | 4.?.[6-9]?) 178 *9999* | 4.?.[6-9]?)
209esac 193esac
210 194
211# @ECLASS-VARIABLE: QT_MINIMAL 195# @ECLASS-VARIABLE: QT_MINIMAL
212# @DESCRIPTION: 196# @DESCRIPTION:
213# Determine version of qt we enforce as minimal for the package. 197# Determine version of qt we enforce as minimal for the package.
214if slot_is_at_least 4.6 "${KDE_MINIMAL}"; then 198if version_is_at_least 4.5.50 "${KDE_MINIMAL}"; then
215 QT_MINIMAL="${QT_MINIMAL:-4.7.0}" 199 QT_MINIMAL="${QT_MINIMAL:-4.7.0}"
216else 200else
217 QT_MINIMAL="${QT_MINIMAL:-4.6.3}" 201 QT_MINIMAL="${QT_MINIMAL:-4.6.3}"
218fi 202fi
219 203
278 ;; 262 ;;
279 *) ;; 263 *) ;;
280esac 264esac
281unset qtmultimediadepend 265unset qtmultimediadepend
282 266
283# WebKit dependencies
284case ${KDE_REQUIRED} in
285 always)
286 qtwebkitusedeps="[kde]"
287 ;;
288 optional)
289 qtwebkitusedeps="[kde?]"
290 ;;
291 *) ;;
292esac
293qtwebkitdepend="
294 >=x11-libs/qt-webkit-${QT_MINIMAL}:4${qtwebkitusedeps}
295"
296unset qtwebkitusedeps
297case ${WEBKIT_REQUIRED} in
298 always)
299 COMMONDEPEND+=" ${qtwebkitdepend}"
300 ;;
301 optional)
302 IUSE+=" webkit"
303 COMMONDEPEND+=" webkit? ( ${qtwebkitdepend} )"
304 ;;
305 *) ;;
306esac
307unset qtwebkitdepend
308
309# CppUnit dependencies 267# CppUnit dependencies
310cppuintdepend=" 268cppuintdepend="
311 dev-util/cppunit 269 dev-util/cppunit
312" 270"
313case ${CPPUNIT_REQUIRED} in 271case ${CPPUNIT_REQUIRED} in
320 ;; 278 ;;
321 *) ;; 279 *) ;;
322esac 280esac
323unset cppuintdepend 281unset cppuintdepend
324 282
283
284# WebKit use dependencies
285case ${KDE_REQUIRED} in
286 always)
287 qtwebkitusedeps="[kde]"
288 ;;
289 optional)
290 qtwebkitusedeps="[kde?]"
291 ;;
292 *) ;;
293esac
325# KDE dependencies 294# KDE dependencies
326# Qt accessibility classes are needed in various places, bug 325461 295# Qt accessibility classes are needed in various places, bug 325461
327kdecommondepend=" 296kdecommondepend="
328 dev-lang/perl 297 dev-lang/perl
329 >=x11-libs/qt-core-${QT_MINIMAL}:4[qt3support,ssl] 298 >=x11-libs/qt-core-${QT_MINIMAL}:4[qt3support,ssl]
331 >=x11-libs/qt-qt3support-${QT_MINIMAL}:4[accessibility,kde] 300 >=x11-libs/qt-qt3support-${QT_MINIMAL}:4[accessibility,kde]
332 >=x11-libs/qt-script-${QT_MINIMAL}:4 301 >=x11-libs/qt-script-${QT_MINIMAL}:4
333 >=x11-libs/qt-sql-${QT_MINIMAL}:4[qt3support] 302 >=x11-libs/qt-sql-${QT_MINIMAL}:4[qt3support]
334 >=x11-libs/qt-svg-${QT_MINIMAL}:4 303 >=x11-libs/qt-svg-${QT_MINIMAL}:4
335 >=x11-libs/qt-test-${QT_MINIMAL}:4 304 >=x11-libs/qt-test-${QT_MINIMAL}:4
305 >=x11-libs/qt-webkit-${QT_MINIMAL}:4${qtwebkitusedeps}
336 !aqua? ( 306 !aqua? (
337 x11-libs/libXext 307 x11-libs/libXext
338 x11-libs/libXt 308 x11-libs/libXt
339 x11-libs/libXxf86vm 309 x11-libs/libXxf86vm
340 x11-libs/libXcomposite 310 x11-libs/libXcomposite
510 # trunk 480 # trunk
511 branch_prefix="trunk/KDE" 481 branch_prefix="trunk/KDE"
512 ;; 482 ;;
513 *) 483 *)
514 # branch 484 # branch
515 branch_prefix="branches/KDE/${SLOT}" 485 branch_prefix="branches/KDE/$(get_kde_version)"
516 # @ECLASS-VARIABLE: ESVN_PROJECT_SUFFIX 486 # @ECLASS-VARIABLE: ESVN_PROJECT_SUFFIX
517 # @DESCRIPTION 487 # @DESCRIPTION
518 # Suffix appended to ESVN_PROJECT depending on fetched branch. 488 # Suffix appended to ESVN_PROJECT depending on fetched branch.
519 # Defaults is empty (for -9999 = trunk), and "-${PV}" otherwise. 489 # Defaults is empty (for -9999 = trunk), and "-${PV}" otherwise.
520 ESVN_PROJECT_SUFFIX="-${PV}" 490 ESVN_PROJECT_SUFFIX="-${PV}"
597 567
598 # default branching 568 # default branching
599 case ${PV} in 569 case ${PV} in
600 9999*) ;; 570 9999*) ;;
601 *) 571 *)
602 # set EGIT_BRANCH and EGIT_COMMIT to ${SLOT} 572 # set EGIT_BRANCH and EGIT_COMMIT to $(get_kde_version)
603 case ${_kmname} in 573 case ${_kmname} in
604 kdeplasma-addons | kdepim | kdepim-runtime | kdepimlibs) 574 kdeplasma-addons | kdepim | kdepim-runtime | kdepimlibs | okular)
605 EGIT_BRANCH="${SLOT}" 575 EGIT_BRANCH="$(get_kde_version)"
606 ;; 576 ;;
607 *) EGIT_BRANCH="KDE/${SLOT}" ;; 577 marble)
578 EGIT_BRANCH="kde-$(get_kde_version)"
579 ;;
580 *) EGIT_BRANCH="KDE/$(get_kde_version)" ;;
608 esac 581 esac
609 ;; 582 ;;
610 esac 583 esac
611 584
612 EGIT_REPO_URI="${EGIT_MIRROR}/${_kmname}" 585 EGIT_REPO_URI="${EGIT_MIRROR}/${_kmname}"
630# kde-base packages go into KDE4 installation directory (KDEDIR) by default. 603# kde-base packages go into KDE4 installation directory (KDEDIR) by default.
631# No matter the PREFIX, package will be built against KDE installed in KDEDIR. 604# No matter the PREFIX, package will be built against KDE installed in KDEDIR.
632 605
633# @FUNCTION: kde4-base_pkg_setup 606# @FUNCTION: kde4-base_pkg_setup
634# @DESCRIPTION: 607# @DESCRIPTION:
635# Do the basic kdeprefix KDEDIR settings and determine with which kde should 608# Do the basic KDEDIR settings and determine with which kde should
636# optional applications link 609# optional applications link
637kde4-base_pkg_setup() { 610kde4-base_pkg_setup() {
638 debug-print-function ${FUNCNAME} "$@" 611 debug-print-function ${FUNCNAME} "$@"
639 612
640 # QA ebuilds 613 if has kdeprefix ${IUSE//+} && use kdeprefix; then
641 [[ -z ${KDE_MINIMAL_VALID} ]] && ewarn "QA Notice: ignoring invalid KDE_MINIMAL (defaulting to ${KDE_MINIMAL})." 614 eerror "Sorry, kdeprefix support has been removed."
615 eerror "Please remove kdeprefix from your USE variable."
616 die "kdeprefix support has been removed"
617 fi
618
619 if [[ ${CATEGORY}/${PN} != kde-base/kdelibs && ${CATEGORY}/${PN} != kde-base/kde-env ]] && \
620 { [[ ${KDE_REQUIRED} == always ]] || { [[ ${KDE_REQUIRED} == optional ]] && use kde; }; } && \
621 has_version kde-base/kdelibs[kdeprefix]; then
622 eerror "Sorry, kdeprefix support has been removed."
623 eerror "Please rebuild kdelibs without kdeprefix support."
624 die "kdeprefix support has been removed"
625 fi
642 626
643 # Don't set KDEHOME during compilation, it will cause access violations 627 # Don't set KDEHOME during compilation, it will cause access violations
644 unset KDEHOME 628 unset KDEHOME
645 629
646 # Check if gcc compiler is fresh enough. 630 # Check if gcc compiler is fresh enough.
649 # executions consume quite some time. 633 # executions consume quite some time.
650 [[ $(gcc-major-version) -lt 4 ]] || \ 634 [[ $(gcc-major-version) -lt 4 ]] || \
651 ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 3 ]] ) \ 635 ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 3 ]] ) \
652 && die "Sorry, but gcc-4.3 and earlier wont work for KDE (see bug 354837)." 636 && die "Sorry, but gcc-4.3 and earlier wont work for KDE (see bug 354837)."
653 637
654 if [[ ${KDEBASE} = kde-base ]]; then
655 if use kdeprefix; then
656 KDEDIR=/usr/kde/${SLOT}
657 else
658 KDEDIR=/usr 638 KDEDIR=/usr
659 fi
660 : ${PREFIX:=${KDEDIR}}
661 else
662 # Determine KDEDIR by loooking for the closest match with KDE_MINIMAL
663 KDEDIR=
664 local kde_minimal_met
665 for slot in ${KDE_SLOTS[@]} ${KDE_LIVE_SLOTS[@]}; do
666 [[ -z ${kde_minimal_met} ]] && [[ ${slot} = ${KDE_MINIMAL} ]] && kde_minimal_met=1
667 if [[ -n ${kde_minimal_met} ]] && has_version "kde-base/kdelibs:${slot}"; then
668 if has_version "kde-base/kdelibs:${slot}[kdeprefix]"; then
669 KDEDIR=/usr/kde/${slot}
670 else
671 KDEDIR=/usr
672 fi
673 break;
674 fi
675 done
676 unset slot
677
678 # Bail out if kdelibs required but not found
679 if [[ ${KDE_REQUIRED} = always ]] || { [[ ${KDE_REQUIRED} = optional ]] && use kde; }; then
680 [[ -z ${KDEDIR} ]] && die "Failed to determine KDEDIR!"
681 else
682 [[ -z ${KDEDIR} ]] && KDEDIR=/usr
683 fi
684
685 : ${PREFIX:=/usr} 639 : ${PREFIX:=/usr}
686 fi 640 EKDEDIR=${EPREFIX}/usr
687 EKDEDIR=${EPREFIX}${KDEDIR}
688 641
689 # Point pkg-config path to KDE *.pc files 642 # Point pkg-config path to KDE *.pc files
690 export PKG_CONFIG_PATH="${EKDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}" 643 export PKG_CONFIG_PATH="${EKDEDIR}/$(get_libdir)/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}"
691 # Point to correct QT plugins path 644 # Point to correct QT plugins path
692 QT_PLUGIN_PATH="${EKDEDIR}/$(get_libdir)/kde4/plugins/" 645 QT_PLUGIN_PATH="${EKDEDIR}/$(get_libdir)/kde4/plugins/"
833 QTEST_COLORED=1 786 QTEST_COLORED=1
834 787
835 # Shadow existing /usr installations 788 # Shadow existing /usr installations
836 unset KDEDIRS 789 unset KDEDIRS
837 790
838 # Handle kdeprefix-ed KDE
839 if [[ ${KDEDIR} != /usr ]]; then
840 # Override some environment variables - only when kdeprefix is different,
841 # to not break ccache/distcc
842 PATH="${EKDEDIR}/bin:${PATH}"
843
844 # Append library search path
845 append-ldflags -L"${EKDEDIR}/$(get_libdir)"
846
847 # Append full RPATH
848 cmakeargs+=(-DCMAKE_SKIP_RPATH=OFF)
849
850 # Set cmake prefixes to allow buildsystem to locate valid KDE installation
851 # when more are present
852 cmakeargs+=(-DCMAKE_SYSTEM_PREFIX_PATH="${EKDEDIR}")
853 fi
854
855 #qmake -query QT_INSTALL_LIBS unavailable when cross-compiling 791 #qmake -query QT_INSTALL_LIBS unavailable when cross-compiling
856 tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/lib/qt4) 792 tc-is-cross-compiler && cmakeargs+=(-DQT_LIBRARY_DIR=${ROOT}/usr/$(get_libdir)/qt4)
857 #kde-config -path data unavailable when cross-compiling 793 #kde-config -path data unavailable when cross-compiling
858 tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/) 794 tc-is-cross-compiler && cmakeargs+=(-DKDE4_DATA_DIR=${ROOT}/usr/share/apps/)
859 795
860 # Handle kdeprefix in application itself
861 if ! has kdeprefix ${IUSE//+} || ! use kdeprefix; then
862 # If prefix is /usr, sysconf needs to be /etc, not /usr/etc 796 # sysconf needs to be /etc, not /usr/etc
863 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc) 797 cmakeargs+=(-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc)
864 fi
865 798
866 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then 799 if [[ $(declare -p mycmakeargs 2>&-) != "declare -a mycmakeargs="* ]]; then
867 mycmakeargs=(${mycmakeargs}) 800 mycmakeargs=(${mycmakeargs})
868 fi 801 fi
869 802
992 ewarn "With this setting you are unsupported by KDE team." 925 ewarn "With this setting you are unsupported by KDE team."
993 ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID." 926 ewarn "All missing features you report for misc packages will be probably ignored or closed as INVALID."
994 fi 927 fi
995 fi 928 fi
996 fi 929 fi
997 if has kdeprefix ${IUSE//+} && use kdeprefix; then
998 # warning about kdeprefix
999 echo
1000 ewarn "WARNING! You have the kdeprefix useflag enabled."
1001 eerror "This setting will be removed on or about 2011-06-06."
1002 ewarn "You are using this setup at your own risk and the kde team does not"
1003 ewarn "take responsibilities for dead kittens."
1004 echo
1005 fi
1006} 930}
1007 931
1008# @FUNCTION: kde4-base_pkg_postrm 932# @FUNCTION: kde4-base_pkg_postrm
1009# @DESCRIPTION: 933# @DESCRIPTION:
1010# Function to rebuild the KDE System Configuration Cache after an application has been removed. 934# Function to rebuild the KDE System Configuration Cache after an application has been removed.

Legend:
Removed from v.1.93  
changed lines
  Added in v.1.97

  ViewVC Help
Powered by ViewVC 1.1.20